2011-03-04 85 views
6

我正在嘗試創建一個VBScript解析器。我想知道什麼是最好的方法去做。我進行了研究和研究。最流行的方式似乎是像金解析器或ANTLR。VBScript部分解析器

我想要實現的功能是在VBScript中對語法錯誤進行動態檢查。我不想在每次文本更改時編譯整個VBS。我該如何去做呢?我試圖使用黃金分析器,但我認爲沒有增量的方式來解析它,像部分解析樹...任何想法如何實現這種情況的部分解析樹?

我已經通過GOLD Parser實現了VBscript解析。然而,它仍然不是一個部分解析器,在每次文本更改後解析整個腳本。有沒有辦法建立這樣的事情。

THKS

+0

爲什麼你反對重新整理所有東西? VBScripts往往不是很大。 –

+0

嗯...... accr到http://www.cs.vu.nl/~dick/PTAPG.html部分解析器是可能的,我正在尋找一種方法來構建相同的。如果我看起來是小白,請原諒我。我從來沒有在構建解析器之前工作過。 – redDragonzz

+0

可以構建「部分」或增量解析器。要爲完整的語法構建解析器要困難得多。所以,如果你不需要它,你應該跳過它。對於小的VBScript文檔,您可以將完整的解析器應用於字符串以查看它是否正確。如果你有大型節目,那麼這可能會很重要。 –

回答

2

我會先尋找一個現有的VBScript解析器,而不是寫你自己的,這不是一個簡單的任務!

Theres本頁面爲BNF格式的VBScript語法:http://rosettacode.org/wiki/BNF_Grammar您可以將其轉換爲ANTLR(或其他解析器生成器)語法。

在嘗試去重新解析只有一部分源代碼之類的花哨事物之前,我建議你先創建一個真正可行的解析器。

祝你好運!

+0

金解析器允許解析VBScript http://www.devincook.com/goldparser/engine/dot-net/morozov/index.htm 我已經實現了一個基於它的分析器和morozov寫的C#運行時。那麼我該如何去創建一個部分解析器:) – redDragonzz

+0

@redDragonzz,那麼你應該用這個信息更新你的原始問題。 –

3

如果你真的想要增量解析,可以考慮Tim Wagner的this paper

這是一個絕妙的方案,可以保留現有的解析樹,在編輯點混洗字符串片段的混合並解析代表未改變的源文本部分的樹,並將字符串重新集成到解析集樹木。它使用增量式GLR解析器完成。

這並不容易實現;我只做了GLR部分,從來沒有涉足增量部分。 GLR部分是非常值得的麻煩。

有很多關於增量解析的論文。這是非常好的一個。

+0

好吧我會試着這樣做,那麼ANTLR呢?我認爲它有部分構建抽象語法樹的功能。 – redDragonzz

+0

@redDragonz:我對ANTLR不夠了解。我可以告訴你的是,解析器生成器專門用於解析整個程序(語法的目標規則),幾乎沒有提供任何有意義的方法來進行增量式解析。考慮到ANTLR屬於這一類別,如果它提供了這種增量支持,我會感到驚訝。你的旅費可能會改變。 –