【问题标题】:VBScript Partial ParserVBScript 部分解析器
【发布时间】:2011-03-06 01:16:09
【问题描述】:

我正在尝试创建一个 VBScript 解析器。我想知道最好的方法是什么。我研究过,研究过。最流行的方法似乎是使用 Gold Parser 或 ANTLR 之类的方法。

我要实现的功能是动态检查 VBScript 中的语法错误。我不想每次更改某些文本时都编译整个 VBS。我该怎么做呢?我尝试使用 Gold Parser,但我认为没有增量方式通过它进行解析,例如部分解析树......关于如何为这种场景实现部分解析树的任何想法?

我已经通过 GOLD Parser 实现了 VBscript 解析。但是它仍然不是部分解析器,在每次文本更改后解析整个脚本。有没有办法建造这样的东西。

谢谢

【问题讨论】:

  • 你为什么反对重新分析整个事情? VBScript 往往不是很大。
  • Hmm... accr to cs.vu.nl/~dick/PTAPG.html 部分解析器是可能的,我正在寻找一种构建相同的方法。如果我看起来像个菜鸟,请原谅我。我之前从未构建过解析器..
  • 可以构建“部分”或增量解析器。这比为完整语法构建解析器要困难得多。所以,如果你不需要一个,你应该跳过它。对于小型 VBScript 文档,您可以对字符串应用完整的解析器来查看它是否正常。如果您有大型程序,那么这可能很重要。

标签: parsing vbscript antlr gold-parser


【解决方案1】:

如果您真的想做增量解析,请考虑 Tim Wagner 的 this paper

保留现有的解析树是一个绝妙的方案,在编辑点对字符串片段的混合和表示源文本未更改部分的解析树进行混洗,并将字符串重新集成到解析树集合中.它是使用增量 GLR 解析器完成的。

实现起来并不容易;我只做了 GLR 部分,从来没有考虑过增量部分。 GLR 部分非常值得。

有很多关于增量解析的论文。这是非常好的之一。

【讨论】:

  • 好吧,我会尝试这样做,ANTLR呢?我认为它有能力部分构建抽象语法树。
  • @redDragonz:我对 ANTLR 了解不够。我可以告诉你的是,专门用于解析整个程序(语法的目标规则)的解析器生成器几乎没有提供任何有意义的方法来进行增量解析。考虑到 ANTLR 属于这一类,如果它确实提供了这样的增量支持,我会感到惊讶。您的里程可能会有所不同。
【解决方案2】:

我会先寻找现有的 VBScript 解析器,而不是自己编写,这不是一项简单的任务!

此页面上有 BNF 格式的 VBScript 语法:http://rosettacode.org/wiki/BNF_Grammar,您可以将其翻译成 ANTLR(或其他解析器生成器)语法。

在尝试做一些花哨的事情之前,比如只重新解析源代码的一部分,我建议你先创建一个真正有效的解析器。

祝你好运!

【讨论】:

  • Gold Parser 允许解析 VBScript devincook.com/goldparser/engine/dot-net/morozov/index.htm,我已经实现了一个基于它的解析器和 morozov 编写的 C# 运行时。那么我该如何创建部分解析器:)
  • @redDragonzz,那么您应该使用此信息更新您的原始问题。
猜你喜欢
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 2012-03-16
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多