next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: Construyendo un compilador para Sup: RecDescent Ant: Usando la directiva autotree Err: Si hallas una errata ...

Práctica

Reescriba la fase de análisis sintáctico del compilador para el lenguaje Tutu usando Parse::RecDescent. La gramática de Tutu es como sigue:



program $ \rightarrow$ block
block $ \rightarrow$ declarations statements $ \vert$ statements
declarations $ \rightarrow$ declaration ';' declarations $ \vert$ declaration ';'
declaration $ \rightarrow$ INT idlist $ \vert$ STRING idlist
statements $ \rightarrow$ statement ';' statements $ \vert$ statement
statement $ \rightarrow$ ID '=' expression $ \vert$ P expression $ \vert$ '{' block '}'
expression $ \rightarrow$ expression '+' term $ \vert$ expression '-' term $ \vert$ term
term $ \rightarrow$ term '*' factor $ \vert$ term '/' factor $ \vert$ factor
factor $ \rightarrow$ '(' expression ')' $ \vert$ ID $ \vert$ NUM $ \vert$ STR
idlist $ \rightarrow$ ID ',' idlist $ \vert$ ID


Las acciones deberán producir el árbol de análisis abstracto o AST. Recicle todo el código que ha escrito para las restantes fases: análisis léxico, semántico, optimización de código, cálculo de direcciones, generación de código y optimización peephole.


next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: Construyendo un compilador para Sup: RecDescent Ant: Usando la directiva autotree Err: Si hallas una errata ...
Casiano Rodríguez León
2013-03-05