我是ANTLR4的新手 我想编写一个语法,使用动态读取的值来解析语法。 在图像中说我的语法如下
我需要帮助,这样HANDLERID不仅可以获取所提到的值,还可以获取基于函数调用,动态值的值列表。例如,包含{'ACD','GHY','XYZ' ..}
的函数返回列表。不要与标识符混淆,这些值是一些已定义对象的名称,因此为IDENTIFIER编写语法不是解决方案。
任何帮助都是预先确定的。
答案 0 :(得分:0)
也许actions是可行的解决方案?这些是用目标语言编写的,允许进行各种处理。公式化为谓词(将?
附加到操作块),它们甚至可以用来指导解析器采取什么路径。
这是一个典型的形式:
decl: type ID ';' { System.out.println("found a decl"); };
或作为谓词:
HANDLERID: ID { isSpecialWord($ID.text) }?;
仅与内部函数isSpecialWord
返回true的ID匹配。基本上,您没有将词法分析器规则传递给某些值,但是您在内部代码中进行了评估。