Вы находитесь на странице: 1из 1

30/12/2014 -- Por Tito Hinostroza

Se describe la implementacin de un intrprete sencillo, trabajando en Lazarus 1.2.


Para implementar un inrprete sencillo se requieren mnimamente las siguientes unida
des:
*
*
*
*

SynFacilBasic.pas
SynFacilHighlighter.pas
XpresBas.pas
XPresParser.pas

Si se van a mostrar mensajes de salida se puede incluir un formulario como FormO


ut (ver proyecto ejemplo), o un
formulario parecido para mostrar los mensajes generados con las instruccin de sa
lida como puts().
Si se va a usar un editor con SynEdit, para editar el lenguaje a interpretar, es
recomendable usar la
unidad SynFacilUtils, que es una librera que aliviar enrmemente, el trabajo de impl
ementar un editor
con sintaxis coloreada y completado de cdigo.
Para el intrprete, se debe escribir definir el lenguaje e implementar el cdigo de
interpretacin.
Todo esto se debe definir en una nueva unidad. Se recomienda usar el nombre "Par
ser.pas". En esta unidad
se debe incluir a la unidad "XpresParser". Opcionalmente, para no hacer el cdigo
muy extenso y para
modularizar mejor al intrprete, se puede incluir un archivo adicional {$I GenCod.
pas}
El archivo "GenCod.pas", debe seguir una plantilla. Se puede usar el ejemplo "De
mo1" como punto de
partida.
Bsicamente lo que se hace es all es agregar los operadores y operaciones del lengu
aje.
Se deben implementar obligatoriamente:
procedure Cod_StartData; //Codifica la parte inicial de declaracin de variables
estticas
procedure Cod_StartProgram; //Codifica la parte inicial del programa
procedure Cod_EndProgram; //Codifica la parte inicial del programa
procedure expr_start; //Se ejecuta siempre al StartSyntax el procesamiento de un
a expresin
procedure expr_end(isParam: boolean); //Se ejecuta al final de una expresin, si e
s que no ha habido error.
procedure StartSyntax; //Aqu se define al lenguaje.
Todo estas modificaciones se hacen en "Interprete.pas".
En algunos casos se tendr que modificar "XPresParser.pas", pero no es recomendabl
e modificar
"XPresBas.pas".

Вам также может понравиться