Difference between revisions of "CoCo/R"
From eplmediawiki
(Created page with "Coco/R is a compiler generator, that takes an attribute grammar of a source language and generates a scanner, parser and a semantic evaluator for this language. The scanner wo...") |
|||
Line 11: | Line 11: | ||
==Examples == | ==Examples == | ||
− | [http://epl.di.uminho.pt/~gepl/LP/Lavanda_CoCoR.w| Lavanda.w] <br> | + | * [http://epl.di.uminho.pt/~gepl/LP/Lavanda_CoCoR.w| Lavanda.w] <br> |
− | [http://epl.di.uminho.pt/~gepl/LP/Lavanda_CoCoR.pdf| Lavanda.pdf] | + | * [http://epl.di.uminho.pt/~gepl/LP/Lavanda_CoCoR.pdf| Lavanda.pdf] |
== Original Page == | == Original Page == |
Revision as of 16:09, 25 November 2012
Coco/R is a compiler generator, that takes an attribute grammar of a source language and generates a scanner, parser and a semantic evaluator for this language. The scanner works as a deterministic finite automaton. The parser is recursive descent. LL(1) conflicts can be resolved by a multi-symbol lookahead or by semantic checks.
Inherited and synthesized attributes are allowed; however evaluation is done in a top-down, left to right, tree traversal, during parsing.
Thus the class of accepted grammars is LL(k) for an arbitrary k.
There are versions of Coco/R for Java, C#, C++, Delphi, Modula-2, Oberon and other languages.