Sto creando la mia prima grammatica con ANTLR e ANTLRWorks 2. Ho finito per lo più la grammatica stessa (riconosce il codice scritto nella lingua descritta e costruisce alberi di analisi corretti), ma non ho iniziato niente oltre.La "definizione di token impliciti nella regola parser" è qualcosa di cui preoccuparsi?
Ciò che mi preoccupa è che ogni prima occorrenza di un token in una regola parser è sottolineata con un "ghirigoro giallo" che recita "Definizione di token impliciti nella regola del parser".
Ad esempio, in questa regola, il 'var'
ha quel ghirigoro:
variableDeclaration: 'var' IDENTIFIER ('=' expression)?;
come appare esattamente:
La cosa strana è che ANTLR per sé non sembra attenzione a queste regole (quando si fa il test di rig test, non riesco a vedere nessuno di questi avvertimenti nell'output del parser generator, solo qualcosa sulla versione errata di Java installata sulla mia macchina), quindi è solo ANTLRWorks a lamentarsi.
È qualcosa di cui preoccuparsi o devo ignorare questi avvisi? Devo dichiarare tutti i token esplicitamente nelle regole lexer? La maggior parte delle espulsioni nella bibbia ufficiale The Defintive ANTLR Reference sembrano essere fatte esattamente come scrivo il codice.
Ok, grazie, prenderò in considerazione l'idea di farlo.Per quanto riguarda la separazione del codice azione, c'è qualcosa oltre "grammatica combinata -> AST -> albero gramar con codice di azione"? Ho solo il libro per la v3, quindi se è qualcosa di nuovo, c'è qualche articolo online che lo spiega? La documentazione online su antlr.org sembra mancare di informazioni sulle differenze tra v3 e v4. –
ANTLR 4 non include più output = AST o grammatiche ad albero. Al contrario, utilizza gli alberi di analisi con le interfacce listener e/o visitatore generati automaticamente dalla grammatica del parser. –
Ho notato che ANTLRWorks2 lancia anche questo stesso messaggio quando accidentalmente utilizzo un token contrassegnato come frammento in una regola parser. È previsto o dovrebbe mostrare un errore diverso? –