- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的问题既是语言实现问题,也是 ANTLR4 API 问题。 有什么办法可以修改 ParseTree 及其附带的 TokenStream 吗?
这是场景。我有一种定义数据流程序的简单语言。您可以在github上看到它,如果你好奇的话。我使用 ANTLR4 来词法和解析该语言。我使用监听器来遍历解析树并评估代码。
我最近遇到的问题是我需要能够在运行时修改代码。我需要能够定义新对象并从中创建实例。请注意,我并不是指在语言中进行反射(reflection)。我指的是让像 IDE 这样的程序修改源代码的内部表示。
我已经开始定义一堆定义对象来创建 AST,但我刚刚意识到这种方法需要我提出自己的解决方案来遍历 AST。与其重新发明轮子,我宁愿使用 ANTLR 的听众/访问者。
我面临的另一个问题是需要能够在任何时间点将当前状态 AST 作为代码输出(我嵌入语言的工具需要能够保存。)我正在使用 StringTemplate 来从我的定义对象生成代码。我想我应该能够让 ST 渲染解析树。
一般来说,我需要能够在运行时内进行词法分析、解析、评估、重构、评估和生成代码。
我想知道修改 ParseTree/TokenStreams 的最佳方法是什么,而不是创建自己的定义对象?
最佳答案
我检查了你的语言。它看起来很简单,我也这么认为。
根据您的描述,我的工作基础是 IDE 将直接在树上操作。鉴于这就是您所需要的:
最终结果是您可以往返源代码或生成的树中的任何更改。如果您认为这需要大量工作,那么确实如此。然而,它是许多其他旨在提供这些设施的工具的基础。可取之处在于您的语言很简单。
关于java - 有没有办法可以修改 ParseTree 及其附带的 TokenStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022079/
我正在尝试从数据库获取一些标签并通过 json 编码发送到 ios 应用程序。 但不幸的是我在数组中得到了一些“\” { "error_code": 0, "response_
我有多个关于 JavaFX 的问题。 JavaFX 是否随 JDK 8 提供? JavaFX 是否也需要自己的运行时环境? 我查看了我的计算机(我安装了 JDK 和 JRE),但找不到 JavaFX。
这是个笨蛋 http://plnkr.co/edit/Ll09uMtJEC0HqyGBRPjH?p=preview 正如在 plunker 中看到的,我有一个日期、用户和汽车作为输入字段。我可以选择日
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我正在查看 Protractor 网站并看到 this paragraph值得一提的是,Protractor 开发正在升级到 Jasmien 2.0。 Currently, Jasmine Versi
我在 Maven 存储库中的 jar 附加有“-sources”,例如:junit-4.12-sources.jar。请让我知道我可以采取什么措施来避免这种情况。 最佳答案 这些是您正在使用的库的源文
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
我是一名优秀的程序员,十分优秀!