Recursive Descent Parser Generators for non LL(1) Grammars
Sprache der Bezeichnung:
Recursive descent parser generators like Coco/R have the advantage of generating fast and lightweight parsers for LL(1) grammars. Their mode of operation is well understood. Non LL(1) grammars however need additional handling to resolve LL(1) conflicts. Coco/R solves this problem with semantic lookahead expressions. Such a semantic lookahead is called a Conflict Resolver (resolver), and can be described as a boolean expression written by the user. As soon as the user writes such a resolver, Coco/R does not care about the lookahead symbol, but simply executes the given resolver to select the right alternative.
Certainly this approach works and is very powerful, as the user can use all features of the target language. However Coco/R can't verify the solution of the user. The user can easily overlook conflicts, or wrong resolvers may survive grammar changes. Our idea to solve this problem is to generate the conflict resolvers automatically via table controlled techniques.