Betroffen sind die Testbeispiele 17, 18, 19, 20 und 22... alle haben
gemeinsam, daß sie sowohl syntaktische als auch semantische Fehler
enthalten.
Als Beispiel Test #17:
func x() x+x:=x; end func;
Mein Compiler überprüft Symbole SOFORT bei jeder Verwendung, dh bereits
beim ersten Auftauchen des Symbols x erkennt er einen semantischen
Fehler... und zu diesem Zeitpunkt ('x' gelesen, '+' im Lookahead) liegt
noch kein Syntaxfehler vor.
Ich verwende für das Gesamtbeispiel keinen ox, was wohl auch die Ursache
des "Problems" ist... ox würde zuerst vollständig parsen und dabei den
Syntaxfehler vor dem semantischen Fehler erkennen. Das eigentliche
Problem sind aber meiner Meinung nach diese 5 Testbeispiele... sie gehen
von einer bestimmten Ablaufreihenfolge aus (zuerst vollständiger Parse,
dann semantische Analyse), die nicht unbedingt gegeben sein muss.
Der langen Rede kurzer Sinn: ich glaube nichts falsch gemacht zu haben
und hätte daher gern mehr Punkte :-)
mfg,
Martin
...nur aus neugierde, wie wuerdest du argumentieren, wenn da oben zB
func x() x()+x:=x; end func;
stuende? oder entscheidest anhand des look ahead buffers schon, ob der
'special' case eines function symbols vorliegt (lookahead = '(')...?
ps: ich finde 50% abzuege in diesem fall schon ein wenig fies... (retcodes
waren ja schon gegenstand vorheriger beispiele)
ps2: falls alles nix hilft, es geht sich uebrigens aus, bei der 2.ten 70%
abgabe netto mit 25 punkten auszusteigen...
regards,
--
Herbert Valerio Riedel / Phone: (EUROPE) +43-1-58801-18840
Email: h...@hvrlab.org / Finger h...@gnu.org for GnuPG Public Key
GnuPG Key Fingerprint: 7BB9 2D6C D485 CE64 4748 5F65 4981 E064 883F 4142
> ...nur aus neugierde, wie wuerdest du argumentieren, wenn da oben zB
>
> func x() x()+x:=x; end func;
>
> stuende? oder entscheidest anhand des look ahead buffers schon, ob der
> 'special' case eines function symbols vorliegt (lookahead = '(')...?
Ja sicher... aber das macht bison doch automatisch. Ich hab je eine Rule
fuer variable references bzw function calls (anhand des lookahead tokens
weiss er welche davon er verwenden muss), und bei function calls wird
der IDENT net ueberprueft. Was fuer diese Beispiel allerdings keinen
Unterschied macht, weil das zweite 'x' dann den semantischen Fehler
verursacht ;-)
mfg,
Martin
Ok, ich habe in der 2. Abgabe diese Testfaelle mit Deklarationen von x
versehen. Sollten die fehlenden Punkte aus der ersten Abgabe eine
Rolle fuer die Note spielen, bring das beim Abschlussgespraech zur
Sprache.
- anton
--
+--------------------------------------------------------------------------+
| Übersetzerbau LU <http://www.complang.tuwien.ac.at/ublu/> |
+--------------------------------------------------------------------------+