2
문자열 변수 선언에 대해 다음과 같은 문법을 작성했습니다. 문자열은 작은 따옴표 사이에있는 것과 같이 정의되지만, $ 문자를 사용하여 이스케이프하여 문자열 값에 작은 따옴표를 추가하는 방법이 있어야합니다. 당신이 var_declaration 규칙이 코드를 실행하려고하면ANTLR lexer의 특수 문자 처리
grammar test;
options
{
language = Java;
}
tokens
{
VAR = 'VAR';
END_VAR = 'END_VAR';
}
var_declaration: VAR string_type_declaration END_VAR EOF;
string_type_declaration: identifier ':=' string;
identifier: ID;
string: STRING_VALUE;
STRING_VALUE: '\'' ('$\''|.)* '\'';
ID: LETTER+;
WSFULL:(' ') {$channel=HIDDEN;};
fragment LETTER: (('a'..'z') | ('A'..'Z'));
이 문법은 작동하지 않습니다
VAR A :='$12.2' END_VAR
내가 MismatchedTokenException를 얻을.
그러나이 코드는 string_type_declaration 규칙에 대해 잘 작동이 :
A :='$12.2'