6

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

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

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

谢谢

4

2 回答 2

4

如果您真的想做增量解析,请考虑Tim Wagner 的这篇论文

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

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

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

于 2011-03-05T06:19:05.610 回答
2

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

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

在尝试做一些花哨的事情之前,比如只重新解析源代码的一部分,我建议您首先创建一个实际工作的解析器。

祝你好运!

于 2011-03-04T12:36:59.807 回答