Starting on incremental parser
Edit_Tree is now implemented; it takes an existing syntax tree (which is the result of a batch parse), and applies a list of edits described by a KMN list as in Lahav 2008. The result is a parse stream consisting of a mix of terminals and subtrees.
The next step is to implement the incremental parser. Wagner, Graham 1998 gives a better algorithm for this than Lahav 2008; in fact, it incorporates Edit_Tree, although it does not give as much detail. As a first step, I'll keep Edit_Tree separate.
WisiToken provides a generalize parser; it handles conflicts in the parse table by spawning parallel parsers. Wagner, Graham 1998 does not include that; it assumes a single parser. So for the first step, it will abort on conflicts; the first test cases will not encounter grammar conflicts. It will also abort for all syntax errors; I'll add error recovery later.
The algorithm in Lahav 2008 is significantly different from Wagner, Graham 1998; Lahav's Left_Breakdown changes the tree structure, while WG's just moves the lookahead pointer around, and it assumes a significantly different tree structure. I'll use Lahav's approach for now, since it is compatible with the current WisiToken syntax tree; WG's may be faster.
Comments
Post a Comment