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:40] acaciulescu [Cerințe] |
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 243: | Line 243: | ||
| | ||
==== Intrare ==== | ==== Intrare ==== | ||
- | Programele ArnoldC vor fi citite din folderul ''tests''. In folderul ''tests'' se vor afla fisierele de test (''test1.ac'’,'’test2.ac'' , etc). Parser-ul va primicalea către fișierul de intrare și îl citește. | + | Programele ArnoldC vor fi citite din folderul ''tests''. In folderul ''tests'' se vor afla fisierele de test (''test1.ac'',''test2.ac'' , etc). Parser-ul va primicalea către fișierul de intrare și îl citește. |
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]] |