Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cpl-atm:laboratoare:language [2013/12/06 11:44]
laura.vasilescu created
cpl-atm:laboratoare:language [2013/12/06 11:54] (current)
laura.vasilescu
Line 1: Line 1:
-= Laborator 7 =+===== Laborator 7 ===== 
 + 
 +Scrieți gramatica (parser + lexer) și generați AST-ul pentru următorul limbaj: 
 + 
 +== Variabile == 
 +Numele unei variabile poate contine litere mici, litere mari, cifre si caracterul ''​_''​ si trebuie sa inceapa neaparat cu o litera. Variabilele se declara folosind o constructie de tipul: 
 +<​code>​ 
 +VAR <​nume_var1>​[:​=<​val1>​][,​ <​nume_var2>​[:​=<​val2>​],​ ..., <​nume_varn>​[:​=<​valn>​ ]]; 
 +</​code>​ 
 +exemplu: 
 +<​code>​ 
 +VAR a, b:=7; 
 +</​code>​ 
 +== Expresii aritmetice == 
 +Vor fi acceptate expresii aritmetice simple, formate din doi termeni. Termenii unei expresii pot fi constante (numere intregi) sau variabile. O valoare intreaga sau o variabila reprezinta ea insasi o expresie. Vor fi suportati urmatorii 
 +operatori binari: +, ­, *, /, <, >, <=, >=, !=, ==. Semantica operatorilor este similara cu cea din limbajul C. 
 +== Instructiuni de atribuire == 
 +<​code>​ 
 +<​nume_var>:​ = <​expresie>;​ 
 +</​code>​ 
 +Partea stanga a unei instructiuni de atribuire poate fi doar o variabila (intrepretorul va da o eroare in caz contrar). Partea dreapta a atribuirii este o expresie aritmetica. 
 +== Instructiunea IF == 
 +<​code>​IF <​expresie_compusa>​ THEN 
 +<​lista_de_instructiuni1>​ ELSE 
 +<​lista_de_instructiuni2>​ ENDIF; 
 +</​code>​ 
 +Expresie_compusa reprezinta o expresie conditionala simpla sau mai multe expresii separate de operatorii && sau ||. Termenii care 
 +se compara pot sa fie expresii aritmetice. NU trebuie tesatata precedenta operatorilor,​ evaluarea se va face in ordinea in care apar. Expresiile NU sunt separate prin paranteze. Lista de instructiuni contine una sau mai multe instructiuni separate prin ';'​. Daca apar mai mult de o instructiune,​ instructiunile NU vor fi cuprinse intre acolade. Separarea este facuta 
 +de cuvintele cheie then, else si endif. NU trebuie tratat cazul cu instructiuni if imbricate. 
 +== Instructiunea WHILE == 
 +<​code>​WHILE <​expresie_compusa>​ DO 
 +<​lista_de_instructiuni>​ ENDWHILE; 
 +</​code>​ 
 +Expresie_compusa reprezinta o expresie conditionala simpla sau mai multe expresii separate de operatorii && sau ||. Termenii care 
 +se compara pot sa fie expresii aritmetice. NU trebuie tesatata precedenta operatorilor,​ evaluarea se va face in ordinea in care apar. Expresiile NU sunt separate prin paranteze. Lista de instructiuni contine una sau mai multe instructiuni separate prin ';'​. Daca apar mai mult de o instructiune,​ instructiunile NU vor fi cuprinse intre acolade. Instructiunile pot sa fie instructiuni if. 
 +== Instructiunea PRINT == 
 +Afiseaza la consola rezultatul evaluarii unei expresii.  
 +<​code>​ PRINT <​expresie>;</​code>​ 
 +== Instructiunea PRINTS == 
 +Afiseaza un sir de caractere la consola. Sirul de caractere NU contine secvente escape si este incadrat de ghilimele. 
 +<​code>​ PRINTS "sir de caractere";</​code>​
cpl-atm/laboratoare/language.1386323066.txt.gz · Last modified: 2013/12/06 11:44 by laura.vasilescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0