[Parsing] Aufgabe1

Bräucht einen kleinen Anstoss

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

[Parsing] Aufgabe1
Ich häng im Augenblick schon an der Überlegung, eine passende Regel zu finden.

Also ich hab mir folgendes Vorgehen überlegt:

zb: gesucht:Z → a X

eine ArrayList anlegen in der der Mögliche recht erste Teil (a) gesucht wurde
zb: N-> a
Z->a X

dann eine ArryList mit dem recht letzet Teil (X) der Regel

zb: Z->a X
Z->b X

Dann beide ArrayListen vergliechen und die gemeinsamen Behalten.
zb: gefunden

und schliesslich und endlich diese gefundene Regel mit allen Regel vergleichen, damit man die Nummer der Regel zwecks Backtracking herausfindet.

P.S.: Was ist wenn man so etwas sucht wie Z->a X b


aehm von welcher aufgabe redest du grade? :listen:


http://www2.cs.fau.de/Lehre/SS2005/Parsen/uebungen/index.xml?language=de

Die Programmieraufgabe vom 25.04.


So, hab jetzt Eclipse am Laufen und die Vorgabe soweit importiert, das ist doch schonmal was… Hab schon ewig kein Java und noch länger keine Parser mehr gemacht. Versteh ich das richtig, dass ich meinen Kram in die Funktion TestRecognizer.recognize() schreiben soll? Mal überlegen, wie ich das überhaupt angehe.


Ich glaub wenn ich das richtig verstanden hab, muss man eine eigene Klasse machen z.B MeinRecognizer.java welcher durch die Kommandozeileneingabe iin der ParserMain dann aufgerufen wird.


Yves, nee, du schreibst natürlich ne eigene klasse die das Recognizer interface implementiert. :wink:
Lucius, entweder so oder du setzt den FAVOURITE_RECOGNIZER_CLASSNAME auf deinen recognizer.

ich hab den bottom-up implementiert. welchen ihr?


Bei mir wird es wohl buttom-up, aber ich bin noch nicht recht weit.


Na, wie läuft’s so bei euch? Ich hab jetzt den Skript-Teil für Bottom-Up-Parser durch, aber weiß nicht so recht, wie ich jetzt anfangen soll, das zu coden. Mal schauen, ob CYK verständlicher erscheint. Ansonsten wird’s eng bis Montag… :confused:


Hey, Problem. Gibt’s in Java kein foreach oder was?! Wo findet man denn überhaupt eine brauchbare Java-Referenz, wenn man nicht zufällig ein Buch darüber im Regal stehen hat? Ich würd ja furchtbar gerne alle Elemente einer ArrayList durchlaufen, aber mein C#-Wissen geht mir jetzt langsam zu Ende… (Auch wenn der Eclipse-Editor unerwartet freundlich wirkt, kann er mir hierbei doch nicht weiterhelfen.)


Yves, ich schaetze mal du meinst einen Iterator:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Iterator.html

Als Java Referenz wuerde ich die API vorschlagen:
http://java.sun.com/j2se/1.4.2/docs/api/
http://java.sun.com/j2se/1.5.0/docs/api/
Je nach verwendeter Version.
Wenn es ausfuehrlicher sein soll, fand ich den Eckel ganz brauchbar:
http://www.mindview.net/Books/TIJ/


OK, danke, hoffentlich bauen die bei Sun auch irgendwann mal ein foreach ein, ist ja nervig so.

Nächstes Problem: Wie kann ich die Eingabe so zerstückeln, dass ich an die einzelnen Wörter oder Symbole rankomme? Muss ich das selber machen (mit find und substr oder so) oder hab ich nur eine Methode dafür übersehen? Und: Es gibt ja verschiedene Grammatiken: die für einzelne Symbole ohne Trennzeichen und die für ganze Wörter mit Leerzeichen dazwischen. Ist das Absicht? Wie soll ich denn wissen, welche Form die ausgewählte Grammatik gerade hat? Das passt doch überhaupt nicht zusammen. [Hab natürlich übersehen, dass der Recognizer bereits ein Symbol[] bekommt…]


foreach ist teil von java 1.5
http://www.developer.com/java/other/print.php/3343771


Sorry, kann das so nicht bestätigen. Hab jetzt extra das neueste Java und Eclipse hier unter Windows installiert, aber so eine foreach-ähnliche Schleife gibt’s da nicht. Eclipse malt sie rot an und eine Sprachreferenz auf der Sun-Webseite erwähnt sowas auch nicht.

Hab leider grad kein C# da und dann würden auch die anderen Klassen für den Parser fehlen. Aber Java ist wirklich ne sehr unangenehme Sache. (C# ist nicht viel besser, aber immer noch etwas.)


du brauchst dafür einen > 3.1M4 build von eclipse.
http://download.eclipse.org/eclipse/downloads/drops/S-3.1M4-200412162000/eclipse-news-all-M4.html
dann müsstest du unter Window → Preferences → Java → Compiler → Compliance and Classfiles 5.0 einstellen können … soweit zur theorie.
ich hab hier noch 3.0.2, kanns also nicht testen. :-/

note: die sprachreferenz ist vom aprill 2000 :smiley: