ANTLRWorks error de compilación de la gramática: “error de sintaxis: char inválida literal: no válido”

StackOverflow https://stackoverflow.com/questions/1872751

Pregunta

escribí un esbozo de una gramática (sólo partidos comentarios hasta ahora), y me está dando el error:

  

error de sintaxis: char inválida literal:

Por otra parte, he rastreado el error de estar en el comando siguiente:

... ~LINE_ENDING* ...
LINE_ENDING     : ( '\n' | '\r' | '\r\n');

Puede alguien ayudarme a arreglar esto?

¿Fue útil?

Solución

El operador ~ sólo se puede aplicar a un conjunto. En un analizador léxico, los elementos de un conjunto son caracteres de un flujo de entrada. En otras palabras, usted puede tener este aspecto:

~(  'a'..'z'
|   'C'
|   '\r'
|   '\n'
)

Pero no se puede tener esto porque es un secuencia (dos caracteres) en lugar de un set .

~('\r\n')

El problema que tiene es una extensión de este segundo caso.

Otros consejos

No sé por qué se obtiene que el error (no tengo ningún medio de experimentar yo mismo en el momento). Quizás el hecho de que estés negando o bien un solo char (\r o \n) o un doble char (\r\n) es un problema?

¿Qué ocurre si se intenta:

SingleLineComment
    :   '//' (~LineBreakChar)* (NewLine | EOF)
    ;

LineBreakChar
    :   '\r' | '\n'
    ;

NewLine
    :   '\r'? '\n' | '\r'
    ;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top