在使用Antlr4生成的C++解析器解析MySQL时,我试图获取特定的语句类型名称。
我使用的是来自here的MySQL Antlr4语法
这就是我现在正在使用的:
rule_index=SelectStatement()->getRuleIndex();
statement_type=getRuleNames()[rule_index];这是针对SelectStatement分支的,但现在我必须针对每种语句类型的情况执行此操作。有没有更好的方法呢?
发布于 2020-08-12 21:49:41
我认为没有更好的ANTLR特定的解决方案,它是通用的,适用于所有规则而不需要改变任何东西。
我使用C#,并且可以使用反射来获取调用的过程的名称。从名称字符串中,您可以删除修饰(例如,在Visitor中,方法名称以“Visitor”开头),以获得所在方法的名称。但是,反射并不是使用最快的技术。
https://stackoverflow.com/questions/63334410
复制相似问题