This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
arhiva:teme:2016:tema3 [2016/11/29 21:41] acaciulescu [Date de intrare. Date de ieșire.] |
arhiva:teme:2016:tema3 [2018/10/20 13:26] (current) Adriana Draghici |
||
|---|---|---|---|
| Line 15: | Line 15: | ||
| == Introducere == | == Introducere == | ||
| - | Fiind mari fani a filmelor cu Arnold Schwarzenegger, studentii de la Calculatoare s-au gandit ca ar fi amuzant sa programeze intr-un limbaj bazat integral pe replicile lui Arnold din diferite filme, astfel ca s-au apucat de ArnoldC (**[[https://github.com/lhartikk/ArnoldC/wiki/ArnoldC|ArnoldC]]**). Aceștia și-au dat însă seamă că nu au un mod de a rula noile lor programe deoarece nu există un tool care să le compileze sau să le interpreteze codul. Deoarece sunt harnici și le//** __place__**// POO, studenții au decis să își scrie propriul interpretor de ArnoldC în Java. \m/ | + | Fiind mari fani a filmelor cu Arnold Schwarzenegger, studentii de la Calculatoare s-au gandit ca ar fi amuzant sa programeze intr-un limbaj bazat integral pe replicile lui Arnold din diferite filme, astfel ca s-au apucat de ArnoldC (**[[https://github.com/lhartikk/ArnoldC/wiki/ArnoldC|ArnoldC]]**). Aceștia și-au dat însă seamă că nu au un mod de a rula noile lor programe deoarece nu există un tool care să le compileze sau să le interpreteze codul. Deoarece le plac provocarile și mai ales//** __POO__**//, studenții au decis să își scrie propriul interpretor de ArnoldC în Java. **\m/** |
| == Cerințe == | == Cerințe == | ||
| Line 223: | Line 223: | ||
| Se va genera un AST de forma: | Se va genera un AST de forma: | ||
| - | {{ :teme:tema3:poo-tema3-diagram2.png?700 |}} | + | {{ :arhiva:teme:2016:tema3:poo-tema3-diagram2.png?700 |}} |
| Line 281: | Line 281: | ||
| ConstantNode <integer_value> | ConstantNode <integer_value> | ||
| SAU VariableNode <variable> | SAU VariableNode <variable> | ||
| + | SAU StringNode <string> | ||
| </code> | </code> | ||
| Line 296: | Line 297: | ||
| - | Fisierele de iesire pentru exemplul de mai sus ([[http://elf.cs.pub.ro/poo/playground/tema3#arborele-sintactic|example.ac]]) sunt urmatoarele: | + | Avand urmatorul exemplu: |
| + | |||
| + | <code arnold example.ac> | ||
| + | IT'S SHOWTIME | ||
| + | HEY CHRISTMAS TREE a | ||
| + | YOU SET US UP @NO PROBLEMO | ||
| + | HEY CHRISTMAS TREE b | ||
| + | YOU SET US UP @I LIED | ||
| + | HEY CHRISTMAS TREE c | ||
| + | YOU SET US UP @I LIED | ||
| + | |||
| + | HEY CHRISTMAS TREE d | ||
| + | YOU SET US UP @I LIED | ||
| + | |||
| + | GET TO THE CHOPPER d | ||
| + | HERE IS MY INVITATION a | ||
| + | CONSIDER THAT A DIVORCE b | ||
| + | CONSIDER THAT A DIVORCE c | ||
| + | ENOUGH TALK | ||
| + | |||
| + | BECAUSE I'M GOING TO SAY PLEASE d | ||
| + | TALK TO THE HAND "(a || b || c) is true" | ||
| + | BULLSHIT | ||
| + | TALK TO THE HAND "(a || b || c) is not true" | ||
| + | YOU HAVE NO RESPECT FOR LOGIC | ||
| + | |||
| + | YOU HAVE BEEN TERMINATED | ||
| + | </code> | ||
| + | |||
| + | Fisierele de iesire pentru exemplul anterior sunt urmatoarele: | ||
| <code java example.out> | <code java example.out> | ||
| (a || b || c) is true | (a || b || c) is true | ||
| Line 342: | Line 372: | ||
| * alte detalii relevante pentru implementare | * alte detalii relevante pentru implementare | ||
| * directorul ''src'' cu fişiere sursă | * directorul ''src'' cu fişiere sursă | ||
| - | * directorul ''doc'', generat de javadoc | + | * ''Makefile'' care va contine cel putin regulile: |
| - | * “Makefile” care va contine cel putin regulile: | + | |
| * build | * build | ||
| + | * run | ||
| + | * doc | ||
| * clean | * clean | ||
| - | |||
| Line 353: | Line 383: | ||
| - | *TODO | + | {{:arhiva:teme:2016:tema3:arnoldc-tests.zip|}} |
| + | {{:arhiva:teme:2016:tema3:arnoldc-simple-tests.zip|}} | ||
| == Referințe == | == Referințe == | ||
| - | TODO | ||
| - | |||
| + | * [[https://github.com/lhartikk/ArnoldC/wiki/ArnoldC | ArnoldC]] | ||
| * [[https://en.wikipedia.org/wiki/Abstract_syntax_tree|Abstract Syntax Tree]] | * [[https://en.wikipedia.org/wiki/Abstract_syntax_tree|Abstract Syntax Tree]] | ||
| * [[https://en.wikipedia.org/wiki/Visitor_pattern|Visitor Pattern]] | * [[https://en.wikipedia.org/wiki/Visitor_pattern|Visitor Pattern]] | ||