Embedding Disambiguation Rules in the HaGLR System
Student: Luís Pedro Machado
In this project we will embed a domain specific language to express
disambiguation rules in the HaGLR system: A Generalised LR parser
generator. Such disambiguation rules "work" very much like precedence
and priority rules used by YACC-like systems. Traditional techniques
use a language processor for processing the disambiguation "language"
and, then, combine them with the parser (either buy applying such
rules at parse time , or by applying them as a filter over the
resulting set of abstract syntax trees).
The UMinho Haskell Libraries already provide support for:
- a. Generalised LR parsing. The HaGLR system is a GLR parser generator.
- b. Parsing SDF grammars, that includes a large set of real programming language grammars defintions.
- c. The construction and visualization of the resulting XML parse trees.
You will define a language to express disambiguation rules (based on
exiting ones). Then you will implement a function that given a
sentence of that langauge (ie, a set of rules) and the resulting parse
forest and it selects the right tree(s).
Recomended Literature
- Disambiguation Filters for Scannerless Generalized LR Parsers, M.G.J. van den Brand, J. Scheerder, J.J. Vinju, and E. Visser, 2002
- Pure Functional Parsing, Peter Ljunglof, 2002
- Parser Generation for Interactive Environments, J. Rekers, 1992