Método dinámico C # - IL vs árboles de expresión

antlr c# dsl expression-trees il

Pregunta

Estoy jugando y aprendiendo poco con ANTLR construyendo un DSL simple para .NET, transformando el script en cadena en un Método Dinámico. Mi primera idea se tradujo a los códigos de operación de IL, pero ahora estoy leyendo sobre los árboles de expresiones para la creación de DM. Parece que puedo producir cualquier método usando árboles de expresión, como el código IL?

¡Gracias!

Código: https://github.com/ricardoborges/NPortugol2

Respuesta popular

El código IL te da un poco más de poder. Por ejemplo, puede usarlo para emitir el código correcto para .NET CLR pero no necesariamente algo que podría haber escrito en C # o VB.NET.

Pero en general sí, deberías poder hacer casi cualquier cosa que quieras hacer con árboles de expresión, y son mucho más simples para envolver tu cabeza.

La emisión de código IL probablemente se ejecutará algo más rápido que compilar un árbol de expresiones. No me preocuparía por esto (optimización prematura), pero vale la pena señalarlo. Ver ¿Cómo afecta el rendimiento tener una variable dinámica? para algunas especificaciones de rendimiento.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow