Scanner

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:

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

Entrada

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.

Sortida

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.

Informació del problema

Autoria: PRO1

Generació: 2026-01-25T21:05:29.587Z

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