I'm trying this (it's just an example):

foo:
  bar?
  { if ($bar == null) { ... } }
  ;

ANTLR4 compiler says:

Message{errorType=ISOLATED_RULE_REF, args=[bar, $bar] ...

What is the workaround?

有帮助吗?

解决方案

Ideally the action you have written above would be placed in the exitFoo method of a listener which you use after the parse is complete.

However, if you do leave the action in the grammar, to reference the context object itself, use the ctx property. For example, $bar.ctx is the expression you are trying to use here, and $ctx evaluates to the context object for the enclosing rule.

其他提示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top