[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