0

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

提前致谢

吉姆

4

1 回答 1

0

我不确定,但是您是否尝试过这样做:

 ID  :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* COMMENT? ('a'..'z'|'A'..'Z'|'0'..'9'|'_')* 
;
于 2012-04-25T10:59:50.420 回答