ANTLRWorks erro compilar gramática: “erro de sintaxe: inválido caractere literal: inválido”

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

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?

Foi útil?

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'
    ;

?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top