Una bella sessione di livello 400 tanto per iniziare.
I due speaker mostrano come costruire un nuovo compilatore managed in un ora di sessione.
Come è giusto che sia, non ci sono magie ma del gran codice per definire la grammatica e leggere il sorgente da compilare.
Come prima cosa viene definita la grammatica in un file di testo ascii con dei particolari token. Il passo successivo è quello di scrivere una classe che faccia da scanner, cioè che legga il file di testo del sorgente e isoli le parole della grammatica, gli operatori, gli statement, etc. in una collection.
Il parser è lo step successivo, cioè di riconoscere gli statemente e trasformarli in particolari classi che ne definiscano il comportamento.
È poi il momento della generazione del codice IL realizzato tramite le classi xxBuilder di Reflection.Emit.
Un attimo di suspance all'ultimo per la demo che non stampava l'immancabile "Hello, world", scoprendo che non era stato implementato lo statement "print" .
Perchè tutto questo? Semplice.... permettere la creazione al volo di assembly partendo da una grammatica iper-semplificata che permettono di realizzare una sorta di scripting delle nostgre applicazioni. O magari creare un assembly partendo da uno schema a blocchi disegnato dall'utente.
La sessione termina parlando della dynamic compilation che a tutti gli effetti sembra essere la strada per il rimpiazzo di VBA.