Interpret de mini-llenguatge de programació

PRELIMINARS:

En aquest exercici assumim que heu resolt alguns exercicis anteriors
relacionats amb un llenguatge de programació molt bàsic, que queda
exemplificat com segueix:

    x=3
    y=3+x
    z=2*(x+y)
    Print(z-y+x)

L’execució del programa anterior escriuria 15 per la sortida estandard.
Amb anterioritat, heu creat els següents fitxers:

- Fitxer evaluate.cpp, que implementa una funció evaluate, la qual rep
  un map<string,int> que guarda els valors de les variables fins al
  moment, i un arbre binari que representa una expressió del llenguatge,
  i retorna l’avaluació de l’arbre.

- Fitxer execute.cpp, que implementa una funció execute, la qual rep un
  map<string,int> que guarda els valors de les variables fins al moment,
  i un arbre binari que representa una instrucció del llenguatge
  (assignació o escriure), i o bé modifica l’estat d’una variable (si és
  una assignació) o bé escriu per la sortida (si és una escriptura).

- Fitxer scanner.cpp, que implementa una funció scanner, la qual rep un
  string amb una instrucció del programa, i retorna la llista d’elements
  atòmics del llenguatge que apareixen en aquest string.

Ara us oferim dos fitxers més, anomenats parser.hpp i parser.cpp, que
declaren i defineixen una funció parser, la qual rep una llista
d’elements atòmics del llenguatge que representen una instrucció, i
retorna un arbre binari que representa la mateixa instrucció.

EXERCICI:

Usant les funcions dels fitxers anteriors, haureu de crear un fitxer
program.cpp, amb una funció main, que implementa un interpret del
llenguatge.

Fixeu-vos que l’enunciat d’aquest exercici ja ofereix uns fitxers que
haureu d’utilitzar per a compilar:
Makefile, program.cpp, BinaryTree.hpp, evaluate.hpp, execute.hpp, scanner.hpp, parser.hpp, parser.cpp, utils.hpp, utils.cpp.
Us falta afegir els fitxers evaluate.cpp, execute.cpp i scanner.cpp que
teniu fets d’un exercici anterior, i crear el fitxer program.cpp i
implementar-hi el programa principal. Quan pugeu la vostra solució al
jutge, només cal que pugeu un tar construït així:

    tar cf solution.tar program.cpp execute.cpp evaluate.cpp scanner.cpp

Entrada

L’entrada té una seqüència linies, on cadascuna és una instrucció del
llenguatge.

Sortida

El programa dona com a sortida el que seria la sortida resultant
d’executar la seqüència d’instruccions donada d’entrada.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T21:07:20.410Z

© Jutge.org, 2006–2026.
https://jutge.org
