Istruzioni su numeri interi

Un file contiene delle istruzioni di assegnamento, di stampa e istruzioni condizionali (if). La sintassi delle tre istruzioni è la seguente:

variabile=numero
print variabile
if variabile then istruzione

Le variabili sono $0 ... $9, ossia ci sono dieci variabili, ognuna identificata da un simbolo $ seguito da una cifra (nota: una sola cifra). Nelle istruzioni if, la istruzione interna può essere una qualsiasi istruzione (cioè può essere un'altra istruzione condizionale).

Scrivere una analizzatore lessicale-sintattico per questo linguaggio. L'analizzatore deve stampare i valori delle variabili nelle istruzioni di stampa. Inoltre, alla fine del parsing, occorre stampare tutti i valori delle variabili.

Nota: questo esercizio richiede l'uso delle mid-rule actions, che non sono nel programma del corso (e non verranno richieste all'esame o all'esonero).

Esempio

File di input

$1=10;

$2=20;


$3=0;

if $3 then if $2 then $2=0;
print $2;

if $2 then if $3 then $1=100;
print $1;

if $2 then $2=0;

print $2;

if $2 then print $1;

File di output

$2=20
$1=10
$2=0

$0=0 $1=10 $2=0 $3=0 $4=0 $5=0 $6=0 $7=0 $8=0 $9=0