Pregunta

Soy nuevo en Antlr y yo he llegado con esta regla lexer a analizar fuera de los comentarios, ¿funcionará?

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

(no pude encontrar nada en relación con la sintaxis de este tipo en la documentación)

¿Fue útil?

Solución

Su regla no se compila en absoluto. Si utiliza ANTLRWorks para crear una nueva gramática léxico, puede marcar una casilla para que se genere una regla lexer que coincide con los comentarios de una sola línea. Genera esto:

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

Como alternativa, puede usar algo como esto para que coincida con los comentarios de una sola línea:

COMMENT_LINE 
    : COMMENT (options{greedy=false;}: .)* LINE_ENDING {$channel=HIDDEN;}
    ;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top