0
我正在寫一個詞法分析器和解析器到我自己的語言來處理列表上的操作。我開始與:Java ANTLR 4.生成的解析器不識別任何東西
list_Declaration : L_LIST L_ID ASSIGN LBRACE NUMBER (COMA NUMBER)* RBRACE SEMI;
NUMBER : [0-9]+;
L_BOOLEAN_LITERAL
: 'true'
| 'false'
;
L_ID : [a-z]+;
L_IF : 'if';
L_ELSE : 'else';
L_THEN : 'then';
L_FOREACH : 'foreach';
L_VAR : 'var';
L_IN : 'in';
L_LIST : 'list';
L_NUMBER : 'number';
L_RETURN : 'return';
ASSIGN : '=';
LPAREN : '(';
RPAREN : ')';
LBRACE : '{';
RBRACE : '}';
COMA : ',';
SEMI : ';';
WS: [ \t\n\r]+ ->skip;
,當我嘗試用示例文本解析這個:
list a = {2,3};
它說:
line 1:0 token recognition error at: ''
line 1:1 missing 'list' at 'list'
line 1:6 extraneous input 'a' expecting '='
我在做什麼錯?
嘗試在'L_RETURN'下面放置'L_ID'。我認爲模棱兩可是問題所在。 'L_ID'的優先級將匹配任何低於它的常量值。 –
或者,添加'L_LETTER:[a-z]'並用解析器規則'id:L_LETTER +'替換'L_ID'。 – Destiner