Daniel Thoma: Baumstruktur für ALLE Auszeichnungssprachen???

Beitrag lesen

Hallo Silvia,

Es gibt ja prozedurale vs. deklarative sowie dokumentzentrierte vs. datenzentrierte Auszeichnungssprachen.  Sind ALLE diese Sprachen nach dem Prinzip der Baumstruktur aufgebaut?????

(Fast) alle Sprachen lassen sich durch Gramatiken beschreiben, die aus Wörtern (Terminale) und Satzteilen (nicht Terminale) sowie Regeln, die angeben welche Symbole (Terminale und nicht Terminale) durch welche anderen Symbole ersetzt werden können, um einen Satz zu erzeugen.
Praktisch alle formalen Sprachen lassen sich durch kontextfreie Gramatiken beschreiben. Bei diesen Gramatiken gibt es nur Regeln, die das ersetzen von nicht Terminalen erlauben.
Standardbeispiel Terme mit () = + *

<TERM> ::= <TERM> +  <TERM> | <TERM> * <TERM> | (<TERM>) | <ZAHL>
<ZAHL> ::= <VORKOMMA> | <VORKOMMA> . <NACHKOMMA>
<VORKOMMA> ::= 0 | <ZIFFERN> | <ZIFFERN> <VORKOMMA>
<NACHKOMMA> ::= <ZIFFERN> | <ZIFFERN> <NACHKOMMA> | 0 <NACHKOMMA>
<ZIFFERN> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Einen Term kann man nun Erzeugen, in dem man mit dem Startsymbol <TERM> anfängt und die Regeln nacheinander anwendet:

<TERM>
<TERM> * <TERM>
<TERM> * ( <TERM> )
<TERM> * ( <TERM> + <TERM> )
<ZAHL> * ( <TERM> + <TERM> )
usw.
bis man nur noch Terminale hat:
4.5 * (0 + 3.01)

Dadurch erhält man eine Baumstruktur mit dem Startsymbol als Anfangsknoten.
Damit ist Deine ursprüngliche Frage beantwortet:
Ja, das geht bei jeder dieser Sprachen, allerdings muss dieser Baum nicht immer eindeutig sein. (Diese Grammatik ist z.b. auch nicht eindeutig, man kann Terme erzeugen, deren Ableitungsbaum nicht eindeutig ist z.B. 4 + 5 * 3 da die Gramatik den Rang der Operatoren nicht berücksichtigt.)

Praktisch ist dieser Ableitungsbaum bei Sprachen in der Informatik aber immer Eindeutig oder wird durch zusätzliche Regeln eindeutig gemacht.

Noch ein Link den ich auf die schnelle gefunden habe:

http://www.informatik.uni-leipzig.de/ifi/lehre/Heyer9900/kap8/sld006.htm

Unter den Stichworten Chomiski Grammatik und Backus Nauer Form findest Du aber beliebig viele Skripts die sich mit dem Thema beschäftigen.

Grüße

Daniel