[cpl] [Tema2] Output interpretor
dragos.rugescu at yahoo.com
dragos.rugescu at yahoo.com
Thu Nov 26 12:38:24 EET 2015
Multumesc de promptitudine.
Cu toate acestea, in cazul exemplului dat de mine, attr-miss3, tot nu inteleg de ce trebuie sa se returneze respectiva eroare. Pare ca ar intoarce eroare din linia 16, de la cast-ul unei necunoscute variabile y, cand exista o eroare precedenta pe care codul meu a scos-o in evidenta. Iarasi, trebuie ghicit. Cu toate acestea nu exista nicio alta variabila in acel cod care sa dea eroare de nedefinire.
Reproduc din manual LCPL:
<ID> = <EXPR>[...] Cele doua tipuri trebuie sa corespunda, sau tipul expresiei sapoata fi convertit implicit la tipul expresiei. [...] Pentru o variabila de un anumit tip se poate folosi orice tip aflat mai jos in ierarhia de clase.
Concret, in testul attr-miss3, avem situatia ierarhiei de clase: int (mosteneste) intModel.
Pe liniile 13 si 14 avem asa:
local intModel x; end;x = new int;
In cazul acesta, tipul expresiei (int) este mai "sus" in ierarhie fata de tipul variabilei (intModel). Ceea ce inseamna ca nu se poate reduce un tip mai complex la unul mai simplu (are si o metoda in plus!). Este asa?
Vreau doar sa ma asigur ca am inteles corect. Daca da, inseamna ca eroarea intoarsa de testul respectiv nu este cea corecta, existand una care apare mai devreme.
Multumesc pentru explicatii, Dragos-Ronald Rugescu
Assistant CEO
ADDA LtdExcellence. Professionalism. Vision.
18 Pictor Octav Bancila St., Sector 6, Bucharest, 060144
Romaniadragos.rugescu at yahoo.com
On Wednesday, November 25, 2015 10:27 PM, Bogdan Nitulescu via cpl <cpl at cursuri.cs.pub.ro> wrote:
Ai dreptate. E nevoie de un pic de ajutor aici. Dar e simplu.
OK, sa zicem ca am dat
make run-attr-miss3
si primesc un fail "Wrong error:" . De unde stiu care este "the Right error"?
Well testul e implementat in C++ , si se gaseste in tests/error/attr-miss3TestRig.cpp . Codul arata asa:
bool test(lcpl::Program *p) noexcept override {
try {
createAndRunSema(p);
} catch (lcpl::UnknownVariableException &) {
return pass();
} catch (lcpl::SemanticException &e) {
return fail(std::string("Wrong error: ") + e.what());
}
return fail("Should error");
}
Si devine destul de clar. Output-ul corect este dat de un "throw UnknownVariableException".
Adaug si in wiki.
--Bogdan
On 11/25/2015 8:28 PM, Dragos Rugescu via cpl wrote:
Buna seara,
Am o problema de depanare.
Spre exemplu, in cazul testului attr-miss3, tester-ul raporteaza ca am output prost. (FAIL: Wrong error: Error in line 14 : Incompatible types intModel and int)
Nu spune insa de ce, si care ar fi cel corect. Toate testele precedente imi trec, (inclusiv attr-miss si attr-miss2). Holbandu-ma la fisierul sursa, nu vad ce nu e in regula la output-ul meu.
In fazele initiale de rezolvare a temei ramanem doar la ghicit (poate o fi atributul, poate nu).
Avand in vedere ca este foarte dificil de urmarit ce se doreste a fi output-ul corect in unele circumstante, cum putem vedea in caz de eroare, ce trebuia sa afisam? Analizand structura arhivei, output-ul interpretorului imi pare obfuscat special (what's the point?).
Multumesc anticipat, Dragos-Ronald Rugescu
Assistant CEO
ADDA Ltd Excellence. Professionalism. Vision.
18 Pictor Octav Bancila St., Sector 6, Bucharest, 060144
Romania, EU
www.addastronautica.ro dragos.rugescu at yahoo.com
dragos.rugescu at addastronautica.ro
_______________________________________________
cpl mailing list
cpl at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
_______________________________________________
cpl mailing list
cpl at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/cpl/attachments/20151126/2ab6befb/attachment.html>
More information about the cpl
mailing list