java - 是否可以在给定 ANTLR3(.g) 文件的情况下生成 java 访问者类
问题描述
我需要一些指导来解析“.drl”AKA Drools 规则文件。drl 文件由 ANTLR3 语法定义,可在此处找到。我以前使用IntelliJ 的ANTLR v4 语法插件使用 g4 语法,我可以轻松地生成 i)示例文件的解析树和 ii)该特定语法的 visitor.java 文件。
我还需要为 ANTLR3 生成上述两个文件,即 i) Sample.drl 文件的解析树ii) DroolsRule.g 的 visitor.java 文件,它可以将 Sample.java 作为解析的输入。
我已尝试按照 Bart Kiers 回答此问题的步骤为 AST 生成 .dot 文件。但是在尝试在步骤 1 中生成词法分析器和解析器时,如前所述
java -cp antlr-3.3.jar org.antlr.Tool Java.g
我收到以下错误
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: antlr.ANTLRException
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
另外,我找不到是否可以生成visitor.java。使用 ANTLR3 的 DroolsRule.g 的类似函数。
解决方案
推荐阅读
- google-analytics - Google Analytics BigQuery 导出:获得不同的收入数字
- android - 目标 sdk 26 上的 Android Studio 应用程序在切换到目标 sdk 29 28 或其他情况时失去互联网
- javascript - 在 Bootstrap 4 中从单个模式加载多个 youtube 视频
- python - 我无法将线性方程符号化地求解为变量,即使手动完成它非常简单
- c# - C# OnClick .NET 框架坐标限制
- c# - 字符串未被识别为有效的日期时间。将字符串转换为日期时间
- java - 使用 Maven 执行器跳过模块
- r - XGBoost 中的 tweedie nloglike 与实际的 nloglike 有何关系?
- webdriver-io - TypeError:无法读取 Runner.run 处未定义的属性“观察”
- python - Django 模型中的多个字段分配