Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gesamt: Falsche Fehlercodes??

8 views
Skip to first unread message

Martin Pirstitz

unread,
Jun 15, 2002, 7:03:24 PM6/15/02
to
Mir wurden bei der Abgabe 50% (!) der Punkte abgezogen, weil mein
Compiler nicht die erwarteten, meiner Meinung nach aber trotzdem
die richtigen Fehlercodes liefert.

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

Herbert Valerio Riedel

unread,
Jun 16, 2002, 3:19:33 AM6/16/02
to
On Sun, 16 Jun 2002 01:03:24 +0200, Martin Pirstitz wrote:
> 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.

...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

Martin Pirstitz

unread,
Jun 16, 2002, 8:22:58 AM6/16/02
to
Herbert Valerio Riedel wrote:

> ...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

UBLU-Betreuer

unread,
Jun 20, 2002, 5:39:23 PM6/20/02
to
Martin Pirstitz <e932...@student.tuwien.ac.at> writes:
>Mir wurden bei der Abgabe 50% (!) der Punkte abgezogen, weil mein
>Compiler nicht die erwarteten, meiner Meinung nach aber trotzdem
>die richtigen Fehlercodes liefert.
>
>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;

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/> |
+--------------------------------------------------------------------------+

0 new messages