Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

Grammatik für arithmetische Ausdrücke

Kontextfreie Grammatiken spielen die Hauptrolle für die Syntax von Programmiersprachen. Ein Teilbereich in einer Programmiersprache sind arithmetische Ausdrücke.

Kontextfreie Grammatik für arithmetische Ausdrücke

Eine kontextfreie Grammatik für arithmetische Ausdrücke hat folgende Produktionen

exprterm (+term term)\mathit expr \rightarrow \mathit term ~ (+ \mathit term ~| - \mathit term)^*

termfactor (factor  /factor)\mathit term \rightarrow \mathit factor ~ (* \mathit factor ~|~ / \mathit factor)^*

factor(expr)  number\mathit factor \rightarrow (\mathit expr) ~|~ \mathit number

numberdigit\mathit number \rightarrow \mathit digit

digit0  1  2  3  4  5  6  7  8  9\mathit digit \rightarrow 0 ~|~ 1 ~|~ 2 ~|~ 3 ~|~ 4 ~|~ 5 ~|~ 6 ~|~ 7 ~|~ 8 ~|~ 9

 

Nichtterminalzeichen

Die Nichtterminalzeichen der Grammatik sind hier Wortsymbole, es gilt

V={expr,term,factor,number,digit}V = \{\mathit expr, \mathit term, \mathit factor, \mathit number, \mathit digit\}

Die Nichtterminalzeichen werden für den Ableitungsprozess gebraucht, sie kommen in den Wörtern der erzeugten Sprache nicht vor.

Terminalzeichen

Die Terminalzeichen sind

T={0,1,2,3,4,5,6,7,8,9,+,,,/,(,)}T = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, -, *, /, (, ) \}

Aus den Terminalzeichen bestehen letztlich die Wörter der erzeugten Sprache.

Metazeichen

Darüber hinaus werden noch sogenannte Metazeichen verwendet. Metazeichen gehören nicht zur Grammatik, sondern dienen nur zur Darstellung der Produktionen der Grammatik.

Die Metazeichen sind hier

M={,,(,),}M = \{\rightarrow, |, (, ), ^*\}

Bestimmt ist dir aufgefallen, dass die runden Klammern sowohl Metazeichen als auch Terminalzeichen sind - um expr herum sind die runden Klammern Terminalzeichen.


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?