Tesi Robotica V+ Sim: Interprete Command Language e... | Page 68

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