我是ANTLR的新手,并用它来开发一个模糊语言的解析器。我想要做的是如何在不使用AST的情况下将“注释”周围的标记组合成一个标记。
我使用这个简单的语法来说明问题
grammar test;
query
: expression+
;
expression
: alpha
;
alpha
: ID
;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
COMMENT
: '{' ( options {greedy=false;} : . )* '}' {$channel=HIDDEN;}
;
现在,如果我们用简单的文本“Test {Comments} er”执行它,则会生成两个单独的标记,即“Test”和“er”。虽然我想从中创建一个令牌。任何帮助将不胜感激。
提前致谢
吉姆
答案 0 :(得分:0)
我不确定,但您是否尝试过这样的事情:
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* COMMENT? ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;