ANTLRWorks erro compilar gramática: “erro de sintaxe: inválido caractere literal: inválido”
-
18-09-2019 - |
Pergunta
Eu escrevi um esboço para uma gramática (corresponde apenas comentários até agora), e ele está me dando o erro:
erro de sintaxe: inválido caractere literal:
Além disso, eu já rastreou o erro para estar no comando a seguir:
... ~LINE_ENDING* ...
LINE_ENDING : ( '\n' | '\r' | '\r\n');
Alguém pode me ajudar a corrigir isso?
Solução
O operador ~
só pode ser aplicada a um conjunto. Em um léxico, os elementos de um conjunto são caracteres de um fluxo de entrada. Em outras palavras, você pode ter o seguinte:
~( 'a'..'z'
| 'C'
| '\r'
| '\n'
)
Mas você não pode ter isso porque é uma seqüência (de dois caracteres) em vez de um set .
~('\r\n')
O problema que você encontrou é uma extensão deste segundo caso.
Outras dicas
Não sei por que você receber esse erro (não tenho meios de testá-lo eu mesmo no momento). Talvez o fato de que você está negando um único char (\r
ou \n
) ou um duplo char (\r\n
) é um problema?
O que acontece se você tentar:
SingleLineComment
: '//' (~LineBreakChar)* (NewLine | EOF)
;
LineBreakChar
: '\r' | '\n'
;
NewLine
: '\r'? '\n' | '\r'
;
?