2013-02-01 9 views
8

Sto giocando e imparando poco con ANTLR creando un semplice DSL per .NET, trasformando lo script in stringa in Dynamic Method. La mia prima idea è stata tradotta in opcode su IL, ma ora sto leggendo sugli alberi di espressione per la creazione di DM. Sembra che io possa produrre qualsiasi metodo usando gli alberi di espressione, proprio come il codice IL?C# Dynamic Method - IL vs Alberi di espressione

grazie!

Codice: https://github.com/ricardoborges/NPortugol2

+0

Non sarà possibile definire nuovi tipi con alberi di espressione. IL è un modo molto più flessibile (ma ancora molto facile da generare). –

risposta

9

IL codice ti dà un po 'più di potenza. Ad esempio, puoi usarlo per emettere il codice corretto per .NET CLR ma non necessariamente qualcosa che potresti aver scritto in C# o VB.NET.

Ma in generale sì, dovresti essere in grado di fare qualsiasi cosa tu voglia fare con gli alberi di espressione, e sono molto più semplici da avvolgere.

L'emissione del codice IL verrà probabilmente eseguita più rapidamente rispetto alla compilazione di un albero di espressioni. Non mi preoccuperei di questo (ottimizzazione prematura), ma vale la pena notare. Vedi How does having a dynamic variable affect performance? per alcune specifiche di prestazione.

+0

Fantastico! Grazie per spiegarlo! Leggerò il link! – Ricardo

+2

Una differenza significativa tra i due è che IL può essere utilizzato per creare intere classi e assiemi. Le espressioni possono essere utilizzate solo per creare metodi. – svick

Problemi correlati