Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
57Activity
0 of .
Results for:
No results containing your search query
P. 1
Cómo crear un intérprete de expresiones en .NET

Cómo crear un intérprete de expresiones en .NET

Ratings: (0)|Views: 3,336 |Likes:
Published by Krasis Press
Este artículo da indicaciones generales sobre cómo construir nuestro propio intérprete o compilador de código, que nos permita trabajar con expresiones propias e incluso, por qué no, crear nuestro propio lenguaje.
Como prueba de concepto se incluye un ejemplo completo de un sencillo intérprete de expresiones matemáticas.
Este artículo da indicaciones generales sobre cómo construir nuestro propio intérprete o compilador de código, que nos permita trabajar con expresiones propias e incluso, por qué no, crear nuestro propio lenguaje.
Como prueba de concepto se incluye un ejemplo completo de un sencillo intérprete de expresiones matemáticas.

More info:

Published by: Krasis Press on Nov 26, 2009
Copyright:Attribution Non-commercial Share Alike

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF or read online from Scribd
See more
See less

07/27/2013

pdf

 
 
¿Cómo crear unintérprete deexpresiones en.NET?
 
Alberto Población
 
 
¿Cómo crear un intérprete de expresiones en .NET?
Nivel: Intermedio-Avanzado 
 
por
Alberto Población
 En un artículo anterior dábamos respuesta a las preguntas de este tipo:
Deseo introducir en un TextBox una exresión
tal como “5*x 
-3*(x+1)
” y que mi 
 programa calcule el resultado al pasarle el valor de x.
Y comentábamos que una forma de resolverlo, entre las distintas opcionesdisponibles, consistía en
escribir un intérprete o compilador basado en unanalizador sintáctico
hecho por nosotros mismos. En este artículo vamos a dar unasindicaciones generales acerca de cómo se escribe un programa de este tipo parainterpretar expresiones sencillas.El primer paso consiste en elaborar un diagrama sintáctico que sirva pararepresentar las expresiones que queremos evaluar. La Figura 1 representa undiagrama muy sencillo, que define la sintaxis de las fórmulas matemáticas que
aceptan números paréntesis, las cuatro operaciones matemáticas, y la variable “x”.
 
Figura 1.- Diagrama sintáctico sencillo.
 
 
En este diagrama, se han encerrado en un círculo los elementos “finales”, que seleen “tal cual” en la expresión tecleada.
Normalmente se escribe un fragmento deprograma que en inglés recibe el nombre de
 parser 
(
analizador
), que vadevolviendo cada uno de los símbolos que componen la expresión. En el listado 1que se acompaña más abajo, esto está implementado en la subrutina
ObtenerSiguienteSímbolo
.Las cajas rectangulares sirven para enlazar entre sí las distintas partes del diagrama,y normalmente se traduce cada una de ellas en un método de nuestro programa(en el listado 1 llevan el mismo nombre que figura escrito dentro de cada caja).Las flechas indican la estructura del lenguaje (qué elemento puede venir detrás dequé otro), y a la hora de programar se convierten en una secuencia de instruccionesllamando a otro método (cuando las flechas tropiezan con una caja) o llamando al
 parser 
para que obtenga el siguiente símbolo (cuando tropiezan con un círculo).Cuando una flecha se bifurca en dos, el programa fuente debe contenerinstrucciones para leer el siguiente símbolo, y una instrucción condicional (
if 
o
switch
) para decidir por cuál de los dos caminos hay que seguir, examinandosímbolo obtenido. Por supuesto, no todos los diagramas sintácticos cumplen elrequisito de que en cada bifurcación se pueda decidir el camino a seguirexaminando únicamente el símbolo siguiente. En los casos en que esto sí que secumple (como el diagrama de la figura 1), podremos construir un compilador de
“un solo paso sin marcha atrás”, que es el tipo más simple y el único que vamos a
ver aquí.Finalmente, nuestro código fuente contendrá las instrucciones necesarias parahacer la operación indicada por el diagrama (suma, resta, multiplicación, etc.) cadavez que pase por uno de los puntos en que se ha reunido la información necesaria.Si la operación se realiza inmediatamente al pasar por ese punto, tenemos un
intérprete
; si lo que se hace es generar código ejecutable que más tarde al serejecutado realice la operación deseada, entonces lo que tenemos es un
compilador
.El programa del
listado 1
contiene un intérprete de este tipo, realizado conformecon el esquema de la figura 1. Por razones de claridad y simplicidad, no contieneapenas nada de código para el control de errores, que lógicamente habría queañadir en un programa destinado a ser puesto en producción.Este diagrama es sumamente sencillo, y ha sido fácil dibujarlo en un pequeñográfico. Cuando la sintaxis se complica más, y el diagrama empieza a crecer, sesuele recurrir a otros tipos de notación más formales, tales como
BNF
 (Bakus-NaurForm). Aunque resulta menos claro a simple vista, se trata de un metalenguaje quedefine la sintaxis exactamente igual que nuestro gráfico, y sirve para escribirnuestro intérprete o compilador de la misma manera.

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->