Lenguaje de Programación

Hola hace unos días te mande una pregunta, tu respuesta me sirvió, pero más o menos así que te explico todo el problema (como me lo pediste), el trabajo que debo realizar es un lenguaje de programación (en vb6) que realize figuras geométricas, por ejemplo debemos tener palabras reservadas, debemos manejar errores, manejar variables, construir gramáticas bnf para comprobar sintaxis, etc. Luego el profesor debería escribir un código en el notepad con nuestro código y al pasarlo por nuestro interprete ejecutar lo que se escribió, por ejemplo
Inicio
Dibujar cuadrado 10,10
Fin
Esto dibujaría un cuadrado de 10 por 10 en la pantalla, bueno pero mi problema es que no se como empezar, supongo que lo primero que debe hacer nuestro interprete es reconocer todos los caracteres del código, si es así debería analizar que hace cada palabra, pero no se más, ojala me puedas ayudar aunque sea a partir con algo, porque en realidad me va a costar mucho, gracias, chao.

1 respuesta

Respuesta
1
Ahora entiendo mucho mejor lo que me pedías. Realmente yo he hecho cosas parecidas, aunque yo a este tipo de cosas le llamo "Intérprete de comandos"
Lo primero que necesitas es una rutina que separe palabras. Esto es, que con una variable de entrada igual a "dibujar cuadrado 10,10" obtenga una serie de variables de salida (o una matriz de variables)con valores "DIBUJAR" "CUADRADO" y "10,10" ¿Sabes hacer esa rutina? Se basa en la función STR que busca el carácter espacio y en la funcióm MID que separa partes de una cadena. Intencionadamente te he puesto la salida en mayúsculas para hacer que sea válido escribir el comando en mayúsculas o minúsculas.
Con esa rutina preparada haces un programa que lea secuencialmente lada linea de comando. Aplicas la rutina y vas definiendo la acción a realizar parámetro por parámetro. Por ejemplo con un select case:
Select case parametro1
case "ESCRIBIR"
..............
case "DIBUJAR"
DIBUJO
case "FIN"
END
end select
Cada una de estas opciones llama a un seguido nivel, si es necesario. Por ejemplo el parámetro "DIBUJAR" llama al procedimiento "DIBUJO" etc. Puede que alguno comoo "FIN" no necesite llamar a nada, porque no tiene más parámetros. En este caso, la ejecución (en este caso End), se resuelve a este primer nivel.
Por cada Procedimiento llamado en un primer nivel, habrá un Sub que lo resuelva. Por ejemplo para DIBUJAR:
Sub DIBUJAR()
Select case Parametro2
case "LINEA"
..............
case "CIRCULO"
............
case "CUADRADO"
DIBCUADRADO
case "ELIPSE"
...............
end select
Con este código, la instrucción "dibujar cuadrado 10,10" te habrá llevado a una rutina que se llama "DIBCUADRADO" ahora, en esa rutina interpretas el resto del comando "10,10" y utilizas las instrucciones de Visual para realizar la acción pedida.
(Un inciso: si quieres dar los parámetros separados por comas "10,10" necesitas hacerte una rutina análoga a la de separar palabras por el carácter espacio pero ahora separadas por el carácter coma. Supongamos que has hecho eso y que esa rutina te ha devuelto el valor de cada parámetro: Valor1=10, Valor2=10)
Otra cuestión: para dibujar un cuadrado necesito tres valores, no dos: Coordenada por, coordenada y y lado del cuadrado. Asumo por tanto que hay un tercer valor con la longitud del lado.
Con todos esos supuestos, el procedimiento DIBCUADRADO sería algo así como
SUB DIBCUADRADO()
Printer.line(valor1,valor2)-(valor1+valor3, valor2+6valor3),,B
Esto dibujaría un cuadrado por la impresora

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas