gpt4 book ai didi

parsing - 如何分析 Antlr 语法

转载 作者:行者123 更新时间:2023-12-04 08:25:24 25 4
gpt4 key购买 nike

我有一个 Antlr 语法,目前大约有 1200 行。它解析我想要的语言,但至少对于一种构造,即使对于较小的输入文件,它也非常慢。对于构造的每个添加元素,执行时间似乎呈指数增长。

我想知道是否有任何好的指南来调试/分析此类性能问题。

我已经尝试过 VisualVM 并且给出了closureCheckingStopState 和closure_ 两种方法的名称,但这并不能更接近于找出语法有什么问题。

最佳答案

我依靠两个主要项目来分析和提高语法的性能。

  • ANTLRWorks 2 的最新版本包括高级分析功能。当前的限制包括:
  • 探查器不支持需要自定义的语言 CharStreamTokenStream (例如用于预处理输入)。
  • 分析器不会在词法分析器或解析器中执行自定义的嵌入操作,因此您的语法需要能够在不依赖于这些操作的情况下生成解析树。标准词法分析器命令,例如 -> skip-> channel(HIDDEN)不要造成问题。
  • 分析器的输出是大多数 ANTLR 用户不容易理解的数字表格,尤其是在知道您应该如何响应数字方面。
  • 我用的是 fork of the primary release其中包括许多在 ANTLR 4 引用版本中不存在的优化。请注意,这些功能“很少”记录在案,因为它们迄今为止的唯一目的是支持 ANTLRWorks 和 GoWorks 的内部开发。对于大多数语法,这个 fork 的性能大致相当于引用版本。但是,对于某些已知的语法,“优化”版本的执行速度是引用版本的 200 倍以上。

  • 如果你能提供语法和特别的输入,我可以运行分析并尝试解释结果的关键部分。

    ANTLRWorks 的最新版本通过官方 NetBeans 更新中心分发。只需运行 工具 → 插件 ,转至 可用插件 并找到 ANTLRWorks 编辑器 .

    要运行分析器,请使用 运行 → 解释解析器... 命令。通过选择 解析操作后,结果窗口可用。窗口 → 解析器调试器 Controller .

    关于parsing - 如何分析 Antlr 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173687/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com