EBNF

Für das Seminar “Konzepte konkreter und abstrakter Maschinen” habe ich einen kleinen EBNF-Parser geschrieben, der die Korrektheit der EBNF-Syntax prüft und die Regeln verdeutscht. Der Parser wurde in Java innerhalb von kapp 2 Stunden entwickelt…

digit = ‘0’|’1’|’2′.
hexdigit = digit|’A’|’B’|’C’|’D’|’E’|’F’.
vorzeichen = ‘-‘|’+’.
zahl = [vorzeichen] hexdigit {hexdigit}.

Wird zu:

digit = ‘0’ oder ‘1’ oder ‘2’
hexdigit = ‘digit’ oder ‘A’ oder ‘B’ oder ‘C’ oder ‘D’ oder ‘E’ oder ‘F’
vorzeichen = ‘-‘ oder ‘+’
zahl = entweder leer oder gleich ‘vorzeichen’ ‘hexdigit’ keinem, einem, oder mehreren ‘hexdigit’
EBNF check ok

Zweites Beispiel mit Fehler…

digit = ‘0’|’1’|’2′.
hexdigit = zahl|’A’|’B’|’C’|’D’|’E’|’F’.

wird zu…

digit = ‘0’ oder ‘1’ oder ‘2’
hexdigit = EBNF-Error: ‘zahl’ not defined – at line 2

Open Hub profile for Christian Gmeiner