我只是遇到了一件令人头疼的事情..
我尝试将语句拆分为不同的函数,就像我有一个示例语句
start
n turnTo 's'.
n terminate.
end
两个语句都以 'n' 开头,目前我正在写
statement
:
(turnTo_statment|terminate_statment)*
;
turnTo_statment
:
variable 'turnTo' '\'' value '\'' '.'
;
terminate_statment
:
variable 'terminate' '.'
;
但是当词法分析器运行时,它无法确定哪个是哪个,因为两个子状态都以相同的东西'n'开头,编译器可以选择使用规则。如果下一个字符串与编译器使用的第一个规则不匹配,那么它将自动抛出一个不匹配的错误。
如果我遇到“x turnTo y”,我如何识别并告诉 ANTLR,然后使用规则 turnTo_statment,如果我遇到“x terminate”。然后使用规则 terminate_statment..
即在antlr中是否有任何功能可以做到这一点..
statement
:
((if statement contain_keywords 'turnTO') -> turnTo_statment
|
(if statement contain_keywords 'terminate') ->terminate_statment)*
;
谢谢..