[cpl] [Tema2] Output interpretor
Bogdan Nitulescu
bogdannitulescu at yahoo.com
Fri Nov 27 09:21:50 EET 2015
Hello,
Codul arata asa
class int inherits intModel
...
local intModel x; end;
...
x = new int;
Este ok, pentru ca orice int este un intModel, asta inseamna ca o
referinta la int (new int) poate fi folosita oriunde ai nevoie de o
referinta la intModel (x).
Este exact invers fata de cum ai descris mai jos.
Bogdan
On 11/26/2015 12:38 PM, Dragos Rugescu via cpl wrote:
> 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 sa
> poata 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 Ltd
> Excellence. Professionalism. Vision.
> 18 Pictor Octav Bancila St., Sector 6, Bucharest, 060144
> Romania
> dragos.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 <http://www.addastronautica.r0/>
>> dragos.rugescu at yahoo.com <mailto:dragos.rugescu at yahoo.com>
>> dragos.rugescu at addastronautica.ro
>> <mailto:dragos.rugescu at addastronautica.ro>
>>
>>
>> _______________________________________________
>> cpl mailing list
>> cpl at cursuri.cs.pub.ro <mailto: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 <mailto: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/20151127/bf19c718/attachment-0001.html>
More information about the cpl
mailing list