2
我爲字符串變量聲明編寫了以下語法。字符串的定義與單引號之間的任何內容一樣,但必須通過使用$字母來轉義字符串值來添加單引號。ANTLR詞法分析器中的特殊字符處理
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_declaration規則驗證碼:
VAR A :='$12.2' END_VAR
我得到MismatchedTokenException異常。
但這個代碼工作正常string_type_declaration規則:
A :='$12.2'