如何为Swift语言创建Java ANTLR解析器?

时间:2018-05-23 13:15:01

标签: java swift antlr

我正在尝试用Java制作Swift源码的AST。我也使用Windows

我做了什么:

  1. 已下载antlr-4.7.1-complete.jar
  2. 将其添加到classpath
  3. 创建文件grun.batantlr4.bat,将其添加到PATH
  4. 已下载https://github.com/antlr/grammars-v4/blob/master/swift3/Swift3.g4
  5. antlr4 -Dlanguage=Java Swift3.g4
  6. Parser创建了一些文件(包括Java源代码)
  7. 我使用这些说明https://github.com/antlr/antlr4/blob/master/doc/building-antlr.md
  8. 构建了antlr4-runtime-4.7.2-SNAPSHOT.jar

    但现在我不明白我应该怎样处理https://github.com/antlr/grammars-v4/blob/master/swift3/src/main/java/SwiftSupport.java,这也是Swift语法的一部分。我该怎么处理生成的文件?只需将它们添加到我的来源,定义package并完成工作?我也看到ANTLR只生成令牌,我是否必须自己构建AST?谢谢!

1 个答案:

答案 0 :(得分:0)

看起来我做的一切都很好,现在我可以使用代码解析Swift文件

Swift3Lexer swiftLexer = new Swift3Lexer(CharStreams.fromFileName(file.getAbsolutePath()));
CommonTokenStream commonTokenStream = new CommonTokenStream(swiftLexer);
Swift3Parser swiftParser = new Swift3Parser(commonTokenStream);

Top_levelContext topLevel = swiftParser.top_level(); // it works