LL(1) Conflict Resolution in a Recursive Descent Compiler Generator

Albrecht Wöß
Institut für Praktische Informatik

Markus Löberbauer
Institut für Praktische Informatik

Hanspeter Mössenböck
Institut für Praktische Informatik


Recursive descent parsing is restricted to languages whose grammars are LL(1), i.e., which can be parsed top-down with a single lookahead symbol. Unfortunately, many languages such as Java, C++, or C# are not LL(1). There-fore recursive descent parsing cannot be used or the parser has to make its deci-sions based on semantic information or a multi-symbol lookahead.

In this paper we suggest a systematic technique for resolving LL(1) conflicts in recursive descent parsing and show how to integrate it into a compiler gen-erator (Coco/R). The idea is to evaluate user-defined boolean expressions, in order to allow the parser to make its parsing decisions where a one symbol loo-kahead does not suffice.

Using our extended compiler generator we implemented a compiler front end for C# that can be used as a framework for implementing a variety of tools.

Proceedings of the Joint Modular Languages Conference (JMLC'03), Klagenfurt, August 2003, Lecture Notes in Computer Science

download as PDF.