This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
arhiva:teme:2016:tema3 [2016/11/29 21:41] acaciulescu [Date de intrare. Date de ieșire.] |
arhiva:teme:2016:tema3 [2016/11/29 22:21] acaciulescu [Date de intrare. Date de ieșire.] |
||
---|---|---|---|
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 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 343: | Line 373: | ||
* directorul ''src'' cu fişiere sursă | * directorul ''src'' cu fişiere sursă | ||
* directorul ''doc'', generat de javadoc | * directorul ''doc'', generat de javadoc | ||
- | * “Makefile” care va contine cel putin regulile: | + | * ''Makefile'' care va contine cel putin regulile: |
* build | * build | ||
* clean | * clean | ||
- | |||
Line 355: | Line 384: | ||
*TODO | *TODO | ||
== 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]] |