Alternative zu Grammatiken im Compilerbau?
Von: Ernst Baumann (carlox@web.de) [Profil]
Datum: 05.04.2008 22:09
Message-ID: <5vmfv39r42g1e437fa2r5ik9af4tmgeqcm@4ax.com>
Newsgroup: de.sci.informatik.misc
Datum: 05.04.2008 22:09
Message-ID: <5vmfv39r42g1e437fa2r5ik9af4tmgeqcm@4ax.com>
Newsgroup: de.sci.informatik.misc
Hallo allerseits,
Mir wurde gesagt, dass man aus Grammatiken einen Übersetzer (Compiler)
bauen kann.
Ich überlege, ob man dies auch mit induktiven Definitionen machen
kann.
http://wwwcs.upb.de/cs/kindler/Lehre/WS04/Semantik/PDF/Kapitel4.pdf
1)
Beispiel:
Ich will mathematische Terme wie ((a+b)*a)
durch eine induktive Definition darstellen.
Dazu braucht man sogenannte Regeln.
z1 und z2 sollen Zeichenketten über dem Alphabet X={a,b,+,-} sein
Ich nehme der Einfachheit halber hier mal nur zwei Variablen a und b
und die zwei Rechenzeichen + und -
{}
---
a
{}
---
b
{z1, z2}
--------
(z1 + z2)
{z1, z2}
--------
(z1 - z2)
{z1, z2}
--------
(z1 * z2)
{z1, z2}
--------
(z1 / z2)
D0 := {a ; b}
D1 := {(a+b) ; (a-b); (a+a); (b+b); (a-a); (b-b)}
D2 =: {a ; b; (a+b) ; (a-b); (a+a); (b+b); (a-a); (b-b),
(a+(a+a), ...}
...
I(R) = D0 u D1 u D2 u ...
Mit I(R) wird also die Menge aller Terme formalisiert (genaueres ist
dem obigen Link zu entnehmen im Kapitel "induktive Definitionen")
2)
Die Syntax einer Programmiersprache (mit Anweisung, Verzweigung,
Schleifen) kann man meines Wissens durch eine Grammatik beschreiben.
Dies müsste auch mit einer induktiven Definition möglich sein.
I(R) ist dann die Menge der syntaktisch korrekten Zeichenketten dieser
Programmiersprache
Frage:
Ist die induktive Definition (die diese Syntax beschreibt) auch
entscheidbar, d.h:
gibt es ein Verfahren, mit dem von einer Zeichenkette z entscheiden
kann, ob sie syntaktisch korrekt ist oder nicht (d.h. ist z Element
von I(R) oder nicht).
Wenn dies nicht möglich ist, bitte ich um ein einfaches Gegenbeispiel.
Wo gibt es Probleme mit der Entscheidbarkeit?
mfg
Ernst
[ Auf dieses Posting antworten ]Antworten
- Timo Schneider (05.04.2008 23:17)
- Ernst (06.04.2008 11:30)
- Wolfgang May (05.04.2008 23:41)
- Ernst (06.04.2008 11:30)
- Hans-Peter Diettrich (06.04.2008 13:25)
- Wolfgang May (06.04.2008 15:32)
- Hans-Peter Diettrich (06.04.2008 19:39)
- Wolfgang May (06.04.2008 21:19)
- Hans-Peter Diettrich (07.04.2008 02:26)
- Wolfgang May (07.04.2008 10:47)
- Hans-Peter Diettrich (07.04.2008 14:56)
- Wolfgang May (07.04.2008 21:32)
- Hans-Peter Diettrich (07.04.2008 23:08)
- Wolfgang May (12.04.2008 12:43)
- Hans-Peter Diettrich (12.04.2008 18:50)
- Wolfgang May (12.04.2008 20:50)
- Ernst (06.04.2008 19:55)
- Wolfgang May (06.04.2008 21:04)
- Ernst (08.04.2008 22:01)
- Hans-Peter Diettrich (09.04.2008 02:32)
- Wolfgang May (12.04.2008 13:14)
- Hans-Peter Diettrich (12.04.2008 18:55)
- Ernst (13.04.2008 14:00)
- Wolfgang May (12.04.2008 13:05)
- Hans-Peter Diettrich (07.04.2008 03:15)
- Hans-Peter Diettrich (06.04.2008 01:10)
- Wolfgang May (06.04.2008 15:21)
- Hans-Peter Diettrich (06.04.2008 19:47)
- Ernst (06.04.2008 19:59)
- Hans-Peter Diettrich (07.04.2008 03:19)
- Wolfgang May (06.04.2008 20:48)
- Hans-Peter Diettrich (07.04.2008 04:20)
- Wolfgang May (07.04.2008 10:26)
- Hans-Peter Diettrich (07.04.2008 15:58)
