Я не знаю ни одного из командной строки синтаксического анализа, что делает это ,
ANTLR не прост, но то, что вы хотите сделать, это создать парсер из Java-грамматики. Это, как мы создаем нашу грамматику (вы можете скачать грамматику здесь - https://github.com/antlr/grammars-v4/tree/master/java):
общественного класса GenerateVisitor {
public static void main(String[] args) {
String[] arg0 = { "-visitor", "D:/grammars/antlr/Java.g4", "-package", "com.virtualmachinery.jhawk.antlr" };
org.antlr.v4.Tool.main(arg0);
} }
Когда вы сделаете это, вы найдете у вас есть 6 сгенерированных классов и два файла.
Очевидно, что я не могу научить вас, как использовать ANTLR за 5 минут, но то, что вы хотите сделать, это создать посетителя, который расширяет созданный JavaVisitor-класс. Затем вы можете переопределить методы, которые посещают методы, а затем проанализировать контекст, который передается. Затем вы можете выделить маркеры, которые являются операторами и токенами, которые являются операндами, с помощью оператора switch.
В нашем коде мы делаем что-то вроде этого:
public static void handleTokens(ParseTree ctx)
List<Token> tokens = getTokens(ctx);
int type;
for (Token each: tokens) {
type = getHalsteadType(type);
}
}
типы все определены как константы в классе JavaParser. Существует некоторая дискуссия о том, какие маркеры могут быть проигнорированы, которые являются операторами и которые являются операторами - вы можете найти информацию о том, как принять это решение здесь -
www.virtualmachinery.com/sidebar2.htm
посмотрите по адресу: // WWW. sonarqube.org/ Возможно, источник доступен из одного из их плагинов. – OldProgrammer
Я использую JAVAPARSER, но я знаю, есть ли какая-либо командная помощь в этом – JavaTrainner