如何在ANTLR中围绕注释组合标记

时间:2012-04-24 17:13:09

标签: parsing comments antlr

我是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”。虽然我想从中创建一个令牌。任何帮助将不胜感激。

提前致谢

吉姆

1 个答案:

答案 0 :(得分:0)

我不确定,但您是否尝试过这样的事情:

 ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* COMMENT? ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* 
;