[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