Java 使用AntLR 4获取变量和函数的名称
我有一组用C语言编写的源代码文件,我需要生成一个解析来从文件中提取变量和函数的名称 我发现我可以用AntLR做这件事。我已经有了C语法,但我不知道我说的话应该遵循哪些步骤 请有人给我一个如何继续的提示,例如,我应该生成一个侦听器还是访问者 谢谢大家! 简短回答 Antlr为您生成侦听器接口。因此,您只需要实现这个接口,然后使用实现的实例遍历解析树Java 使用AntLR 4获取变量和函数的名称,java,c,parsing,antlr4,Java,C,Parsing,Antlr4,我有一组用C语言编写的源代码文件,我需要生成一个解析来从文件中提取变量和函数的名称 我发现我可以用AntLR做这件事。我已经有了C语法,但我不知道我说的话应该遵循哪些步骤 请有人给我一个如何继续的提示,例如,我应该生成一个侦听器还是访问者 谢谢大家! 简短回答 Antlr为您生成侦听器接口。因此,您只需要实现这个接口,然后使用实现的实例遍历解析树 长话短说 Antlr是一个解析器生成器,因此如果您还没有完成,请使用语法文件生成解析器源代码 假设您的C语法位于名为TheC.g4的文件中,请使用a
长话短说 Antlr是一个解析器生成器,因此如果您还没有完成,请使用语法文件生成解析器源代码 假设您的C语法位于名为
TheC.g4
的文件中,请使用antl4
生成源代码:
antlr4 TheC.g4
此步骤的输出是几个生成的java源文件,其中包含解析器实现。您可以使用javac
编译源代码,如下所示:
javac TheC*.java
现在,您可以编写自己的java代码,使用上面生成的lexer和parser类来解析C源文件
TheCLexer lexer = new TheCLexer(input); // use the generated lexer to tokenize the C source
CommonTokenStream tokens = new CommonTokenStream(lexer);
TheCParser parser = new TheCParser(tokens);
ParserRuleContext<Token> tree = parser.compilationUnit(); // <<--This part will be different for you depending on the root of your grammar
注:以上所有代码示例均根据此简短回答改编
Antlr为您生成侦听器接口。因此,您只需要实现这个接口,然后使用实现的实例遍历解析树
长话短说 Antlr是一个解析器生成器,因此如果您还没有完成,请使用语法文件生成解析器源代码 假设您的C语法位于名为
TheC.g4
的文件中,请使用antl4
生成源代码:
antlr4 TheC.g4
此步骤的输出是几个生成的java源文件,其中包含解析器实现。您可以使用javac
编译源代码,如下所示:
javac TheC*.java
现在,您可以编写自己的java代码,使用上面生成的lexer和parser类来解析C源文件
TheCLexer lexer = new TheCLexer(input); // use the generated lexer to tokenize the C source
CommonTokenStream tokens = new CommonTokenStream(lexer);
TheCParser parser = new TheCParser(tokens);
ParserRuleContext<Token> tree = parser.compilationUnit(); // <<--This part will be different for you depending on the root of your grammar
注意:以上所有代码示例均改编自此请先尝试一下。遇到问题时,请随意提出更具体的问题。我觉得你现在的问题有点太宽泛了。好吧,我一直在尝试,但我遇到了一些问题,如果你能帮我检查一下这个问题,请先尝试一下。遇到问题时,请随意提出更具体的问题。依我看,你现在的问题有点太宽泛了。好吧,我一直在努力,但我遇到了问题,如果你能帮我检查一下这个问题,请谢谢你的帮助!!我一直在尝试,但我有问题,如果你能再次帮我检查这个问题,请。谢谢你的帮助!!我一直在尝试,但我遇到了问题,如果你能再次帮我检查这个问题,请。