Domanda

Sono nuovo di ANTLR e mi è venuta in mente questa regola lexer per analizzare le osservazioni, funzionerà?

COMMENT_LINE        :   (COMMENT (. - LINE_ENDING)* LINE_ENDING){$channel=hidden};

(non ho trovato nulla per quanto riguarda la sintassi di questo tipo nella documentazione)

È stato utile?

Soluzione

La regola non può essere compilato a tutti. Se si utilizza ANTLRWorks per creare una nuova grammatica lexer, è possibile selezionare una casella di averlo generare una regola lexer che corrisponde commenti a linea singola. Genera questo:

COMMENT
    :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
    ;

In alternativa, è possibile utilizzare qualcosa di simile per abbinare commenti sola riga:

COMMENT_LINE 
    : COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
    ;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top