Antlr 检测存在多个规则时匹配的规则
我有一个antlr4规则,有两种可能的扩展:Antlr 检测存在多个规则时匹配的规则,antlr,antlr4,Antlr,Antlr4,我有一个antlr4规则,有两种可能的扩展: expr := term + term | term * term ; 我想写一个访问该规则的访问者: public T visitExpr (MyParser.ExprContext ctx) { ... } 在内部visitExpr如何检测匹配的扩展规则?标记与感兴趣的子规则不同的内容: expr : term p=PLUS term | term m=MUL term ; 或者标记子规则 expr : term P
expr := term + term | term * term ;
我想写一个访问该规则的访问者:
public T visitExpr (MyParser.ExprContext ctx) { ... }
在内部
visitExpr
如何检测匹配的扩展规则?标记与感兴趣的子规则不同的内容:
expr : term p=PLUS term
| term m=MUL term
;
或者标记子规则
expr : term PLUS term #plus
| term MUL term #mult
;
在前者中,标签将在
expr
上下文中表示为标记,其中一个为空,这意味着另一个子规则是匹配的。在后者中,标记的子规则将分别表示为单独的上下文,因此区分匹配的子规则是明确的。