Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VBScript Partial Parser

I am trying to create a VBScript parser. I was wondering what is the best way to go about it. I have researched and researched. The most popular way seems to be going for something like Gold Parser or ANTLR.

The feature I want to implement is to do dynamic checking of Syntax Errors in VBScript. I do not want to compile the entire VBS every time some text changes. How do I go about doing that? I tried to use Gold Parser, but i assume there is no incremental way of doing parsing through it, something like partial parse trees...Any ideas on how to implement a partial parse tree for such a scenario?

I have implemented VBscript Parsing via GOLD Parser. However it is still not a partial parser, parses the entire script after every text change. Is there a way to build such a thing.

thks

like image 574
redDragonzz Avatar asked Mar 04 '11 10:03

redDragonzz


2 Answers

If you really want to do incremental parsing, consider this paper by Tim Wagner.

It is brilliant scheme to keep existing parse trees around, shuffling mixtures of string fragments at the points of editing and parse trees representing the parts of the source text that hasn't changed, and reintegrating the strings into the set of parse trees. It is done using an incremental GLR parser.

It isn't easy to implement; I did just the GLR part and never got around to the incremental part. The GLR part was well worth the trouble.

There are lots of papers on incremental parsing. This is one of the really good ones.

like image 54
Ira Baxter Avatar answered Nov 12 '22 17:11

Ira Baxter


I'd first look for an existing VBScript parser instead of writing your own, which is not a trivial task!

Theres a VBScript grammar in BNF format on this page: http://rosettacode.org/wiki/BNF_Grammar which you can translate into a ANTLR (or some other parser generator) grammar.

Before trying to do fancy things like re-parsing only a part of the source, I recommend you first create a parser that actually works.

Best of luck!

like image 37
Bart Kiers Avatar answered Nov 12 '22 16:11

Bart Kiers