ESERCITAZIONE: REALI ENORMI

Sviluppare un programma che preso in input un file il cui nome sarà 'ingresso.txt' che contiene le definizioni di alcune costanti e di alcune funzioni operanti su numeri reali enormi, ed infine alcune espressioni costruite usando queste costanti e funzioni. Lo scopo del programma è stampare nel file 'uscita.txt' i numeri reali enormi che sono il risultato della valutazione delle espressioni date.

I "numeri reali enormi" sono tutti i numeri reali con parte intera rappresentabile con al più 50 cifre in base dieci e con parte decimale rappresentabile con al più 50 cifre.

Per esempio
12,23
e
11111111111111111111111111111111111111111,3333333333333333333333333333333333333333333333333
sono numeri reali enormi.


Sintassi del file di input

Si ricorda che degli spazi vuoti (caratteri blank) possono essere aggiunti nel file di input ovunque, eccetto all'interno di un identificatore, di una parole chiave o di un numero.

Non è possibile dichiarare due volte la stessa costante.

fine linea

Un identificatore ha al più 20 lettere.

Non è possibile che un elemento di contenga più di 50 cifre.

Non è possibile dichiarare due volte la stessa funzione.
Il nome di un parametro di una funzione è differente da tutte le costanti e le funzioni dichiarati precedentemente.

Ogni che appare nella parte espressione di una funzione (il corpo) deve essere o una costante dichiarata nella parti costanti, o il parametro della funzione, o il nome di una funzione dichiarata nella parte funzioni precedentemente (solamente quegli identificatori seguiti da un'altra espressione racchiusa tra parentesi tonde).

Assumendo di non aver dichiarato alcuna costante, la seguente parte funzioni è corretta

@funz
G(Y)=((Y*+3,34)-Y)
F(X)=(+2,0-G(X))
mentre quella che segue è errata
@funz
F(X)=(+2,0-F(T))
G(Y)=((Y*+3,34)-H((Y-+1,1)))
H(Z)=G((Z-+1,1))
poichè nel corpo di F T è diverso dal parametro (X) e non può essere una costante; inoltre la funzione H all'interno del corpo di G non è ancora stata dichiarata.


Sintassi del file di output

L'uscita andrà prodotta nel file 'uscita.txt' secondo la sintassi indicata qui sotto:

Si ricorda che i reali enormi vengono scritti sul file di output seguendo le seguenti convenzioni