Можно ли сгенерировать класс посетителей java с помощью файла ANTLR3 (.g) - PullRequest
1 голос
/ 23 марта 2020

Мне нужны некоторые инструкции для разбора файла правил .drl AKA a Drools. Файл drl определяется грамматикой ANTLR3, которую можно найти здесь . Ранее я работал с грамматикой g4, используя ANTLR v4 грамматический плагин для IntelliJ, я мог легко сгенерировать i) Дерево разбора для файла образца AND ii) Посетитель. java файл для этой конкретной грамматики .

Мне также нужно сгенерировать два выше для ANTLR3, т.е. i) Дерево разбора для файла Sample.drl ii) Файл посетителя. java для DroolsRule.g , который может принимать Sample. java в качестве входных данных для синтаксического анализа.

Я попытался сгенерировать файл .dot для AST, выполнив следующие шаги для ответа Bart Kiers на этот вопрос . Но, пытаясь сгенерировать лексеры и парсеры на шаге 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

Кроме того, я не смог найти, можно ли сгенерировать гость. java. как функция для DroolsRule.g с использованием ANTLR3.

...