[cpl] Intrebare legată de blocurile vide din limbaj
Marius Ungureanu
therzok at gmail.com
Tue Nov 10 07:52:20 EET 2015
Salut,
Eu m-am ghidat dupa ASTSerialization.cpp, respectiv liniile 485-513.
Este singurul loc unde se face verificare explicita pentru faptul ca
un Block nu este nullptr, deci in rest n-ar trebui sa creezi niciun
block.
Serializatorul crapa daca nu ii dai un block pe ramura 'then' a
conditiei (posibil asta fiind motivul pentru care testul compiler.lcpl
are block-ul gol in AST). Eu am facut special case ca atunci cand
block-ul pe ramura 'then' este nullptr, creez un block nou care incepe
pe prima linie a lui if.
Marius
2015-11-09 22:40 GMT+02:00 Pîrvu Mihai <cpl at cursuri.cs.pub.ro>:
> Salut,
>
> Blocurile din method sunt diferite de cele din if statements pe cazul unui
> bloc vid sau e o inconsistenta a limbajului rezultata din testele oferite ?
>
> In method, un bloc vid trebuie tratat ca nullptr.
> In if-uri, un bloc vid trebuie tratat ca :
> - ?, daca am if - then <vid> - endif
> - ?, pe clauza else, la if - then <orice> - else <vid> - endif
> - ? pe ambele clauze, la if - then <vid> - else <vid> - endif
> - bloc vid (new Block, fara addExpression), pe clauza then, la if - then
> <vid> -else <ceva> - endif
>
> Nu există teste pentru cele 3 cazuri marcate cu (?), deci ar merge si
> nullptr si new Block().
>
> In testul compiler.lcpl la linia 344 avem un then care vrea sa intorci un
> bloc vid (new Block()) fara addExpression.
>
> In testul empty.lcpl, se asteapta sa am un bloc vid (nullptr) care nu e
> afisat in AST, nu un bloc vid instantiat din clasa Block, fara expresii. La
> fel in testul snippets.lcpl, probabil e o metoda cu bloc vid.
>
>
> Mihai
>
> _______________________________________________
> cpl mailing list
> cpl at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/cpl
>
More information about the cpl
mailing list