Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

Escribiendo un intérprete en .NET (Parte 1)

Hace un poco más de una semana, tuve la oportunidad de dar una charla sobre compiladores e intérpretes en .NET, en el Code Camp Buenos Aires http://www.codecamp.com.ar

Escribí varios intérpretes en .NET (AjSharp, AjTalk, AjLisp….) y sigo con ese desarrollo. Pero ahore, me gustaría ir explorando los pasos que sigo para escribir un simple intérprete, sin usar herramientas de construcción de gramáticas.

Primero, uso Driven Development. Para cada cosa que agrego en código, escribo el test, lo ejecuto en rojo, cambio el código para que quede en verde, y luego refactor. Pueden bajar el código de este primer post desde InterpreterStep01.zip). La solución es:

El punto de partida es una expression.

namespace Interpreter
{
    public interface IExpression
    {
        object Evaluate();
    }
}

Escribí una interfaz, pero podría haber escrito una primera clase concreta, y entonces, extraer la interfaz luego de tener algo andando. En este intérprete simple, una expresión es algo a ser evaludado, como

3
”foo”
3+5
fun(a)

La primera clase concreta es ConstantExpression: new ConstantBLOCKED EXPRESSION; } }

Los tests están en verde:

Buen code coverage:

Bien, es un ejemplo muy simple. Pero es un punto de partida. Próximos pasos: agregar el manejo de variables, su evaluación. Y luego, agregaré comandos, la asignaciónde valor a una variable. Podría escribir funciones, analizador léxico, parser, y más, todo usando TDD.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Published Wed, Sep 15 2010 11:38 by lopez

Comments

# Escribiendo un intérprete en .NET (Parte 2)@ Thursday, September 16, 2010 4:41 AM

En mi anterior post: Writing an Interpreter in .NET (Part 1) Escribiendo un intérprete en .NET (Parte

Angel "Java" Lopez

# Escribiendo un intérprete en .NET (Parte 3)@ Friday, September 17, 2010 4:31 AM

Esta es la tercera parte de esta serie: Writing an Interpreter in .NET (Part 1) Escribiendo un intérprete

Angel "Java" Lopez

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: