Coco/R

Software
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. September 2008 um 15:02 Uhr durch 140.78.145.22 (Diskussion) (Detailliertere Beschreibung der Coco/R-Eigenschaften). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Coco/R ist ein Parser-Generator, der aus einer L-attributierten EBNF-Grammatik einer Quellsprache einen Scanner und einen Parser für diese Sprache erzeugt.

Der Scanner arbeitet als endlicher Automat. Er unterstützt Unicode-Zeichen in UTF-8-Kodierung und kann so konfiguriert werden, dass Groß-/Kleinschreibung ignoriert wird. Die Erkennung von Symbolen kann von ihrem rechten Kontext abhängig gemacht werden. Zusätzlich zu Terminalsymbolen kann der Scanner auch Pragmas verarbeiten, d.h. Symbole, die nicht zur Syntax der Sprache gehören, sondern an beliebiger Stelle des Eingabestroms vorkommen können (z.B. Compiler-Direktiven oder Zeilenende-Zeichen).

Der Parser arbeitet nach der Methode des rekursiven Abstiegs. LL(1)-Konflikte können durch Vorgriff um mehrere Symbole oder durch semantische Prüfungen gelöst werden. Somit ist die Klasse der akzeptierten Grammatiken LL(k) für beliebiges k. Fuzzy Parsing kann durch ein ANY-Symbol erreicht werden, das komplementäre Symbolmengen beschreibt. Semantische Aktionen werden in der Sprache des erzeugten Scanners und Parsers beschrieben. Die Fehlerbehandlung im erzeugten Parser kann durch die Angabe von Synchronisationspunkten und "schwachen Terminalsymbolen" verfeinert werden. Die Grammatik wird auch auf Vollständigkeit, Konsistenz, Redundanzfreiheit und auf ihre LL(1)-Eigenschaft geprüft.

Es gibt Versionen von Coco/R für die meisten modernen Sprachen(Java, C#, C++, Pascal, Modula-2, Delphi, VB.NET, Python, Ruby und andere). Grammatiken für C# und Java werden mitgeliefert.

Coco/R wurde an der Universität Linz entwickelt und steht unter einer Variante der GNU General Public License.

Siehe auch

Weitere Literatur

Pat Terry: Compiling with C# and Java. Pearson, 2005 -- Ein Buch, das Coco/R im Compilerbau einsetzt.