Formale Sprachen Informatik EBNF 🙏Bitte um Hilfe?

malte314  20.04.2024, 19:08

Was genau ist denn das Problem?

0AXBXCXDX0 
Fragesteller
 21.04.2024, 09:44

Ja ich verstehe nicht wie das ganze ĂŒberhaupt geht :(

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Ich gehe mal davon aus, dass Du mit formaler Grammatik und der Notation ihrer Produktionsregeln vertraut bist.

EBNF wurde entwickelt, um solche Regeln kompakter und verstÀndlicher zu formulieren, ohne die Exaktheit zu beeintrÀchtigen. Neue Elemente sind z. B.:

  • { X }: beliebige Wiederholung von X
  • [ X ]: optionales X
  • X | Y: entweder X oder Y

Um eine EBNF in klassische Regeln zu konvertieren, musst Du diese Konstrukte ĂŒber Hilfsregeln abbilden. Das geht weitgehend nach Schema F:

Aus L = { X } wird:

  • L → 𝜀
  • L → L X

Aus L = [ X ] wird:

  • L → 𝜀
  • L → X

Aus L = X | Y wird:

  • L → X
  • L → Y

Bei Deiner EBNF wird es sinnvoll sein, Nichtterminale fĂŒr {Stat}, die drei Alternativen von Stat, sowie fĂŒr {"ELSEIF" ...} einzufĂŒhren. Als „verstĂ€ndliche Namen“ wĂŒrde ich persönlich „block-statement“, „statement-list“, „if-statement“, „for-statement“ und „elif-phrase“ wĂ€hlen (und „Stat“/“Expr“ durch „statement“/„expression“ ersetzen).

Die Lösung wird dann so anfangen:

  • statement → block-statement
  • statement → if-statement
  • statement → for-statement
  • block-statement → "BEGIN" statement-list "END"
  • statement-list → 𝜀
  • statement-list → statement-list statement
  • if-statement → ...
  • for-statement → ...

Bei den letzten beiden will ich Dir den Spaß nicht nehmen, es selbst zu lösen.