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:

- 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

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
