Autor Beitrag
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 617
Erhaltene Danke: 364

W7
Delphi 6 pro
BeitragVerfasst: Do 15.05.08 09:52 
Das Programm ist entstanden, um die Grundzüge einer formalen Sprachen zu verdeutlichen.
Im Compilerbau wird im wesentlichen mit contextfreien Grammatiken gearbeitet.

In der doc-Datei sind die Definitionen der verschiedenen Grammatiktypen beschrieben, wer will kann die Aufgaben auch noch lösen :wink: .

In diesem Beispielprogramm sind die Nonterminals sind gross geschrieben.

Die Regel START -> AUSS, FRAGE, VORG, GESPR sähe in BNF so aus
<START> -> <AUSS>|<FRAGE>|<VORG>|<GESPR>, abstrahiert S -> A|F|V|G

Die Regelmenge:
START -> AUSS, FRAGE, VORG, GESPR // Aussage, Frage, Vorgang, Gespräch
AUSS -> der+WESEN+ZUST+ADJ, NAME+ZUST+ADJ // Zustand und Adjektiv
FRAGE -> " _ZUST+NAME+ADJ _?_"&+fragte+der+WESEN
VORG -> SUBJ+VERB1, SUBJ+VERB1_&+FOLGE+VERB2+SUBJ // Subjekt und Verb
GESPR -> " _AUSS_ ."&+sagte+NAME+zu+OBJ3 // Objekt
FOLGE -> danach, daraufhin, deshalb, jetzt, dann
ZUST -> ist, war
WESEN -> Hobbit, Zauberer, Ork, Balrog, Elb, Zwerg, Uruk-hai, Ent
NAME -> Frodo, Sam, Bilbo, Gandalf, Gollum, Sauron, Boromir, Baumbart, Aragorn, Eowen, Arwen // alles Terminals
SUBJ -> ein+ADJ_er+WESEN, ein+WESEN, der+WESEN, NAME
OBJ1 -> einen+ADJ_en+WESEN, einen+WESEN
OBJ2 -> einen+MSUB, eine+FSUB, ein+NSUB
OBJ3 -> einem+WESEN, einem+ADJ_en+WESEN
MSUB -> Knochen, Ring, Fisch, Schatz, Schlüssel
FSUB -> Frau, Axt, Mauer, Armbrust, Lanze
NSUB -> Schwert, Pferd, Buch
VERB1 -> erschreckte+OBJ1, verjagte+OBJ1, nahm+OBJ2, gab+NAME+OBJ2, entdeckte+OBJ1, tötet+NAME, liebt+NAME
VERB2 -> starb, verschwand, flüchtete, schrie, erwachte
ADJ -> klein, dick, stark, gefährlich, harmlos, mutig, verzweifelt, mutlos, listig, wütend, hungrig, uralt
Die Sonderzeichen +, _ und & werden am Schluss umgewandelt,+ in Lerrzeichen, _ wird gelöscht und & in ein Komma.

Je mehr die Regeln abstrahiert werden desto undurchsichtiger werden sie für Aussenstehende.

Die mitgelieferten Regeldateien sind Beispiele was alles möglich ist.
Die generierten Sätze sind syntaktisch korrekt, semantisch nicht immer :)

Viel Spaß beim Erfinden neuer Regeln!
Fiete

Edit: Habe das Regelformat geändert:
START -> AUSS | FRAGE | VORG | GESPR
AUSS -> der+WESEN+ZUST+ADJ | NAME+ZUST+ADJ
FRAGE -> "ZUST+NAME+ADJ?",+fragte+der+WESEN
VORG -> SUBJ+VERB1 | SUBJ+VERB1,+FOLGE+VERB2+SUBJ
GESPR -> "AUSS.",+sagte+NAME+zu+OBJ3
FOLGE -> danach | daraufhin | deshalb | jetzt | dann
ZUST -> ist | war
WESEN -> Hobbit | Zauberer | Ork | Balrog | Elb | Zwerg | Uruk-hai | Ent
NAME -> Frodo | Sam | Bilbo | Gandalf | Gollum | Sauron | Boromir | Baumbart | Aragorn | Eowen | Arwen
SUBJ -> ein+ADJer+WESEN | ein+WESEN | der+WESEN | NAME
OBJ1 -> einen+ADJen+WESEN | einen+WESEN
OBJ2 -> einen+MSUB | eine+FSUB | ein+NSUB
OBJ3 -> einem+WESEN | einem+ADJen+WESEN
MSUB -> Knochen | Ring | Fisch | Schatz | Schlüssel
FSUB -> Frau | Axt | Mauer | Armbrust | Lanze
NSUB -> Schwert | Pferd | Buch
VERB1 -> erschreckte+OBJ1 | verjagte+OBJ1 | nahm+OBJ2 | gab+NAME+OBJ2 | entdeckte+OBJ1 | tötet+NAME | liebt+NAME
VERB2 -> starb | verschwand | flüchtete | schrie | erwachte
ADJ -> klein | dick | stark | gefährlich | harmlos | mutig | verzweifelt | mutlos | listig | wütend | hungrig | uralt

als Sonderzeichen gibt es nur noch '+', ist mir zu spät eingefallen :oops:
Einloggen, um Attachments anzusehen!
_________________
Fietes Gesetz: use your brain (THINK)


Zuletzt bearbeitet von Fiete am Do 15.05.08 12:51, insgesamt 2-mal bearbeitet
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Do 15.05.08 10:22 
Ähh, wie erstelle ich Texte? Ich lad die Regeln und dann tut sich bei mir gar nix...
Fiete Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 617
Erhaltene Danke: 364

W7
Delphi 6 pro
BeitragVerfasst: Do 15.05.08 12:47 
Moin Calculon,
clicke mal auf das Label HERR DER RINGE :wink:
Gruß
Fiete

_________________
Fietes Gesetz: use your brain (THINK)
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Do 15.05.08 13:15 
Ahh, danke, jetzt funzt's...
Ich glaub' ich werd' mal demnächst 'ne Regeldatei erstellen mit der man höchstversaute Sätze/Konversationen (nein liebe mods, die werde ich natürlich nicht hochladen ^^) hinkriegt und wahrscheinlich viel lachen. Schönes Ding, v.a. weil auch Open-Source und es ein Thema ist, das mich interessiert :zustimm:. Auch die mitgelieferte .doc-Datei ist sehr informativ, wobei man in ihr doch die Unterschiede zwischen LaTeX und Word deutlich erkennen kann...

Gruß

Calculon
--