ANTLR4 - "Escape ilegal de String" expressão para Lexer

votos
0

O requisito para a atribuição é:

Fuga ilegal de string: + corda errada: Quando o lexer detecta uma fuga ilegal em string. A seqüência de errado é a partir do início da cadeia para a fuga ilegal.

Todas as sequências de escape suportados são os seguintes:

\ B retrocesso

\ F formfeed

\ R retorno do carro

\ N nova linha

\ T guia horizontal

\' citação única

\ citação dupla

\ barra invertida

Eu uso o código para String como mesmos que este post recomendado:

ANTLR4 - Precisa de uma explicação sobre este strings literais

STRINGLIT: '' ( '\\' [btnfr'\\] | ~[\b\t\f\r\n\\] )* '';

E também corrigir um pouco de Unterminated (ou Unclosed) String como segue:

UNCLOSE_STRING: '' ( '\\' [btnfr'\\] | ~[\b\t\f\r\n\\] )* ;

Então, eu tentei escrever o protótipo para essa exigência como esta:

ILLEGAL_ESCAPE: '' .*? ESCAPE ;
fragment ESCAPE: [\b\f\r\n\t'\\]

Alguém pode me ajudar a descobrir se havia feito algo de errado com ele, eu acho que há algo não está claro entre STRING e ILLEGAL_ESCAPE isso o resultado não é certo. Eu apreciaria se você pode corrigi-lo novamente para cumprir a exigência como mencionei anteriormente. Desde já, obrigado!!

Publicado 03/09/2017 em 13:06
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Tente usar a seguinte regra lexer:

ILLEGAL_ESCAPE: '"' ('\\' ~[btnfr"'\\] | ~'\\')*;
Respondeu 03/09/2017 em 23:06
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more