XML/DTD: Kontextfreiheit?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
BlackJack

Das formale Sprachen praktischen Nutzen haben, hat niemand bestritten.

Trotzdem ist XML, egal aus welcher Sicht, nicht kontextfrei. Auch aus der Sicht eines Parsers nicht. :roll:

Sonst könnte man ja, ganz praktisch, einen Parser schreiben, der die syntaktische Analyse durchführt, ohne sich Kontext zu merken. Dat jeht nich.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Sonst könnte man ja, ganz praktisch, einen Parser schreiben, der die syntaktische Analyse durchführt, ohne sich Kontext zu merken. Dat jeht nich.
doch das geht, kontext wird ausserhalb des parsers gespiechert, zb symboltabelle...

wie gut, dass es die (compiler-)compiler-coder nicht so genau nehmen wie du, sonst hätten wir heute noch keinen funktionierenden compiler. :wink:

edit
wenn du mir eine kontextsensitive grammatik für eine streng typisierte imperative sprache angibst, mit der der compiler ohne symboltabelle auskommt bin ich überzeugt. :twisted:
BlackJack

Okay, jetzt bin ich platt. Ein Parser der auf Kontext in einer Symboltabelle zugreift, merkt sich keinen Kontext. Das ist also Deine Aussage!?

Warum es keine funktionierenden Compiler(-Compiler) geben sollte, wenn die Programmierer das auch so genau nehmen wie ich, verstehe ich nicht. Das eine hat mit dem anderen nichts zu tun. Und ich gehe davon aus, dass die meisten von denen nicht der Meinung sind XML sei kontextfrei.

Dein Nachtrag (edit) ist dann ja nur noch wirr. Ich soll also etwas angeben, was es nicht geben kann und mit der eigentlichen Frage nichts zu tun hat, damit Du glaubst das XML nicht kontextfrei ist!? :shock:

Eine (Programmier)Sprache muss nicht kontextfrei sein, damit man einen Parser/Compiler dafür schreiben kann. Kaum eine Programmiersprache ist kontextfrei.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Okay, jetzt bin ich platt. Ein Parser der auf Kontext in einer Symboltabelle zugreift, merkt sich keinen Kontext. Das ist also Deine Aussage!?
Ja, ich gehe eben davon aus, dass es die aufgabe des parsers ist, einen syntaxbaum für eine eingabe zu liefern.
dabei arbeitet er mit einer kontextfreien grammatik.
die symboltablle liegt ausserhalb des parsers (auch wenn sie natürlich mit ihm zusammenarbeitet)

wenn du sagst, eine sprache sein kontextsensitiv, hast du natürlich recht, aber das ist doch praktisch irrelevant, da die probleme und aufgaben die das nach sich zieht, nicht durch techniken gelöst werden, die aus chomskys hierarchie abgeleitet sind. (wie eben die LL(k) parser).

Also, die sprache ist CS (gebe ich ja zu :) ), die grammatik CF, daher ist die sprache aus sicht des parsers CF.
Dein Nachtrag (edit) ist dann ja nur noch wirr. Ich soll also etwas angeben, was es nicht geben kann und mit der eigentlichen Frage nichts zu tun hat, damit Du glaubst das XML nicht kontextfrei ist!?
jetzt klar was ich damit sagen wollte?
BlackJack

Wenn der Parser auf die Symboltabelle zugreift, dann benutzt er Kontextinformation. Und wenn er Kontextinformation benutzt, dann ist ganz logischerweise auch für den Parser die Sprache nicht kontextfrei.

Man könnte unter Umständen argumentieren, dass eine Sprache aus Sicht eines Parsers kontextfrei ist, wenn er nicht auf die Symboltabelle zugreift und einen Syntaxbaum aufbaut, der erst danach von einer separaten semantischen Analyse auf die kontextsensitiven Eigenschaften geprüft wird. Aber das würde man in der Praxis wohl kaum machen, weil es effizienter ist diese Überprüfung schon beim Durchlauf des Parsers durch den Baum zu machen.

Dazu arbeiten Parser nicht mit kontextfreien Grammatiken, sondern mit attributierten Grammatiken, d.h. die Symbole bekommen Attribute und die Produktionen semantische Regeln oder Aktionen, die unter anderem diese Attribute berechnen und somit Kontextinformationen im Baum "herumreichen" können. Das war's dann mit der Kontextfreiheit des Parsers.

Und nein, mir ist nicht klar was Du mit dem Nachtrag sagen wolltest.
Antworten