java - 如何为 Swift 语言创建 Java ANTLR 解析器?
问题描述
我正在尝试用 Java 制作 Swift 源代码的 AST。我也使用 Windows
我做了什么:
- 已下载
antlr-4.7.1-complete.jar
- 将其添加到类路径
- 创建文件
grun.bat
并将antlr4.bat
它们添加到 PATH - 下载https://github.com/antlr/grammars-v4/blob/master/swift3/Swift3.g4
- 冉
antlr4 -Dlanguage=Java Swift3.g4
- Parser 创建了一些文件(包括 Java 源代码)
- 我
antlr4-runtime-4.7.2-SNAPSHOT.jar
使用这些说明构建https://github.com/antlr/antlr4/blob/master/doc/building-antlr.md
但是现在我不明白我应该如何处理https://github.com/antlr/grammars-v4/blob/master/swift3/src/main/java/SwiftSupport.java这也是 Swift 语法的一部分。我应该如何处理生成的文件?只需将它们添加到我的来源,定义package
并完成工作?我还看到 ANTLR 只生成令牌,我必须自己构建 AST 吗?谢谢!
解决方案
看起来我做得很好,现在我可以用代码解析 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
推荐阅读
- postgresql - 使用 JSON 字段将转义的双引号插入 Postgres 表
- azure - 使用 Active Directory 进行 Azure 应用服务身份验证
- java - 从 div 类下拉列表中选择 - Selenium 但它不起作用
- reactjs - 一条路线的 CSS 样式和路线不起作用(在屏幕上显示)(它适用于其他路线)
- azure - 在 Azure 经典管道中发布 HTML 文件
- c++ - 使用 CMAKE 将共享库链接到可执行文件
- python - 如何从数据框列的某些行中删除字符?
- java - Java 9处理具有可为空字段的对象列表到另一个列表中
- c# - 表单控件不呈现
- c# - Application.Current 在关机前返回 null