ANTLR4:正确匹配公共前缀
我有以下ANTLR4语法:ANTLR4:正确匹配公共前缀,antlr4,Antlr4,我有以下ANTLR4语法: grammar test; start_symbol: '(FILE' line* ')' EOF ; line: '(' ID ')' ; ID: [a-zA-Z_] [a-zA-Z0-9_]* ; White_space : [ \t\n\r]+ -> skip ; 。。。它在这个示例输入文件上非常有效: (FILE (LINE) ) 但我也希望它能在以下方面发挥作用: (FILE (FILELINE) ) 这是行不通的。显然,lexer生成
grammar test;
start_symbol: '(FILE' line* ')' EOF ;
line: '(' ID ')' ;
ID: [a-zA-Z_] [a-zA-Z0-9_]* ;
White_space : [ \t\n\r]+ -> skip ;
。。。它在这个示例输入文件上非常有效:
(FILE
(LINE)
)
但我也希望它能在以下方面发挥作用:
(FILE
(FILELINE)
)
这是行不通的。显然,lexer生成了一个隐式的“(FILE”标记,它也将匹配第二行中的“(FILELINE”),这将导致一个错误
我怎样才能解决这个问题
奖励:我还想分析以下内容:
(FILE
(FILE)
)
谢谢:)像这样的东西就可以了:
start : '(' FILE line* ')' EOF;
line : '(' id ')';
id : ID | FILE;
FILE : 'FILE';
ID : [a-zA-Z_] [a-zA-Z0-9_]*;
SPACE : [ \t\n\r]+ -> skip;