INTRODUCCIÓ:
En aquest exercici considerarem un llenguatge de programació amb
expressións i instruccions. Les expressions són sobre els operadors
+,-,*, i sobre operands naturals i variables
enteres. Hi ha dos tipus d’instruccions:
Instrucció d’assignació x = e, on
x és una variable i
e és una expressió. Per exemple
x=3+4*y.
Instrucció d’escriure per la sortida estandard
Print(e), on e és
una expressió. Per exemple
Print(3+4*y).
Cada instrucció apareix en una nova línia. Aquí tenim un exemple de programa:
x = 3
y=3+x
z=2 * (x+y)
Print(z - y+x)
El nostre objectiu serà escanejar cada línia, identificar els
elements bàsics que hi apareixen i retornar una llista amb aquests
elements. Per exemple, donat l’string
"z=2 * (x+y)", haurem de produïr la llista de
parelles d’strings:
<"variable","z">, <"operator","=">, <"number", "2">, <"operator","*">, <"marker","(">,
<"variable","x">, <"operator","+">, <"variable","y">, <"marker",")">
EXERCICI:
Implementeu una funció que, donat un string
line amb una instrucció en el nostre
llenguatge de programació, retorna un
list<pair<string,string> > que
representa la seqüència d’elements atòmics del llenguatge que hi
apareixen. Aquesta és la capcelera:
// Pre: "line" conté una instrucció correcta del llenguatge.
// Post: retorna la llista d'elements atòmics del llenguatge que apareixen a "line".
list<pair<string,string> > scanner(string line);
Fixeu-vos que l’enunciat d’aquest exercici ja ofereix uns fitxers que
haureu d’utilitzar per a compilar:
Makefile, program.cpp, scanner.hpp, utils.hpp, utils.cpp.
Us falta crear el fitxer scanner.cpp amb els
corresponents includes i implementar-hi la
funció scanner que hem explicat. Valdrà la
pena que utilitzeu algunes de les funcions oferides a
utils.hpp. Quan pugeu la vostra solució al
jutge, només cal que pugeu un tar construït
així:
tar cf solution.tar scanner.cpp
L’entrada té una seqüència de linies, on cadascuna és una instrucció del llenguatge. Fixeu-vos en que el programa que us oferim ja s’encarrega de llegir aquesta entrada. Només cal que implementeu la funció abans esmentada.
El programa dona com a sortida, per a cada linia, la llista d’elements atòmics que hi apareixen. Fixeu-vos en que el programa que us oferim ja s’encarrega d’escriure aquesta sortida. Només cal que implementeu la funció abans esmentada.
Autoria: PRO1
Generació: 2026-01-25T21:05:29.587Z
© Jutge.org, 2006–2026.
https://jutge.org