Ho scritto una grammatica per un linguaggio piccolo che comprende i commenti di una riga in stile C, ad es.Analisi di commenti in single-line in stile C con Antlr
// this is a comment
Ecco un frammento della grammatica che ho scritto per questa lingua, usando ANTLR v3.0.1
SINGLELINE_COMMENT
: '/' '/' (options {greedy=false;} : ~('\r' | '\n'))* ('\r' | '\n')+ {$channel=HIDDEN;};
WS : (' '|'\r'|'\t'|'\u000C'|'\n')+ {$channel=HIDDEN;};
Questo più o meno tipo di opere, tranne che quando il commento è ultima nella sceneggiatura e non c'è si concludano NL/CR, ho ricevuto un messaggio di fastidioso da ANTLR (in fase di esecuzione):
line 1:20 required (...)+ loop did not match anything at character '<EOF>'
Come posso liberarmi di questo messaggio? Ho provato ad aggiungere il token EOF
all'espressione (..)+
ma questo non funziona.
Non ne sono sicuro, ma cosa succede se rendi opzionale la nuova riga, cioè cambi il '+' in a '?'? o forse un '*'? – nijoakim
Che dire di non tralasciare le opzioni golose (sembrano solo per il +), e cambiare il plus in un punto interrogativo. –