una volta strutturato i “terminali” ed i “non-terminali” nonché le regole di
“inizio” e “fine” programma il Gold Parser genera automaticamente da questa
struttura una classe parser per il C#.
Quindi dal Gold Parser ci siamo spostati sull'implementazione C#. In C# una
volta inserita la classe di parsing generata in precedenza, la difficoltà è stata
quella di immagazzinare i valori e le istruzioni da compiere successivamente
all'interpretazione della stringa o del file passato in input(chiaramente la stringa
o il file contenevano linguaggio V+). Per immagazzinare i dati durante la
scansione dei token, è stato utilizzato una hash table che univocamente ad una
determinata cella di memoria individuata da una chiave, veniva memorizzato il
valore
del
token.
Questa
parte
del
progetto
ha
riservato
difficoltà
implementative perché anche utilizzando chiavi diverse i token erano
memorizzati in celle già occupate causando errori.
Questo era dovuto dal semplice fatto che utilizzando come chiave il numero del
token non-terminale(ogni token è rappresentato da un valore numerico),
incontrando uno stesso token più volte si generava accesso in collisione alla
stessa cella di memoria. Per ovviare a questo problema, siccome il token nonterminale una volta trovato passa all'analisi dei “teminali”(istruzioni come
assegnazione o cicli), abbiamo memorizzato il valore del token nel momento in
cui veniva utilizzato all'interno di operazioni nonterm. Così facendo è stato
anche più semplice eseguire operazioni V+ come MOVE o TRANS citate in
precedenza.
Una volta finita la fase di memorizzazione dei valori e delle istruzioni, si è
passati alla fase della realizzazione grafica del simulatore tramite il tool-kit
XNA.
Per prima cosa abbiamo importato il modello dell'Adept Viper s650, che era in
formato .X(directX) all'interno del progetto C#. Una volta importato il modello,
67