112 lines
3.9 KiB
Plaintext
112 lines
3.9 KiB
Plaintext
/*
|
||
* $Id$
|
||
*/
|
||
|
||
/*
|
||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||
* www - http://www.harbour-project.org
|
||
*
|
||
* Copyright 2001 Ron Pinkas <ron@profit-master.com>
|
||
* Documentaci¢n en Ingl‚s de: simplex.txt
|
||
*
|
||
* Copyright 2002 Alejandro de G rate <alex_degarate@hotmail.com>
|
||
* Documentaci¢n en Espa¤ol de: simplex.txt
|
||
*
|
||
* Vea doc/license.txt por los t‚rminos de la licencia.
|
||
*
|
||
*/
|
||
|
||
|
||
SIMPLEX
|
||
=======
|
||
|
||
Simplex usa definiciones de alto nivel, lo cual para muchos
|
||
programadores podr¡a ser m s legible, que las definiciones
|
||
equivalentes de Flex.
|
||
Las definiciones de Simplex son divididas en 6 secciones
|
||
principales:
|
||
|
||
1. Delimiters (Delimitadores). Hay tres tipos de delimitadores
|
||
L‚xicos:
|
||
|
||
a. Ignorable. T¡pico ejemplo de estos delimitadores son los
|
||
"espacios en blanco", por ej. espacio y tabulador.
|
||
|
||
b. Retornable: T¡pico ejemplos de estos delimitadores son
|
||
las comas, par‚ntesis y operadores matem ticos.
|
||
|
||
c. Agregables. Mientras Yo no tengo ning£n ejemplo en mente,
|
||
sospecho que podr¡a haber una necesidad para esos
|
||
delimitadores.
|
||
Este tipo de delimitadores deber¡an ser agregados al
|
||
token que lo precede, haciendo de ese delimitador, un
|
||
caracter terminador.
|
||
|
||
|
||
2. Streams (flujos).
|
||
Estos son referidos como "pares". flujos, como su nombre
|
||
puede sugerir, es cualquier secuencia (¢ flujo) de caracteres,
|
||
encerrados dentro de caracter[es] de inicio (START) y
|
||
caracter[es] de finalizaci¢n (END) (el par).
|
||
T¡pico ejemplo de ese elemento l‚xico es una cadena literal,
|
||
por ejemplo: "Hola Mundo".
|
||
|
||
|
||
3. Self Contained Words (Palabras Auto-contenidas).
|
||
Estos son un grupo espec¡fico de palabras reservadas, las
|
||
cuales NO necesitan NINGUN delimitador. Estas palabras podr¡an
|
||
ser vistas como una forma de meta delimitadores. Estas palabras
|
||
ser n extraidas desde el fujo de entrada sin importar los
|
||
caracteres que los preceden ¢ los caracteres que los siguen.
|
||
T¡pico ejemplo de estos tokens son los operadores l¢gicos de
|
||
dBase: .AND., .OR., .NOT., los operadores de asignaci¢n en
|
||
linea de lenguaje C += *= etc., as¡ como tambi‚n los
|
||
operadores pre y post incremento / decremento -- y ++
|
||
El £nico atributo de esos esos elementos es el hecho que
|
||
estos elementos NO requieren delimitadores precedentes ¢
|
||
siguientes.
|
||
|
||
|
||
4. Keywords (Palabras Claves).
|
||
Estos son un grupo espec¡fico de palabras reservadas,
|
||
las cuales tienen significancia l‚xica en el lenguaje
|
||
definido, cuando aparecen como el token primero (FIRST)
|
||
en una l¡nea dada del fuente.
|
||
Las palabras Claves pueden ser contracciones de m£ltiples
|
||
palabras con espacios en blanco (delimitadores ignorables)
|
||
cuando se usa el patr¢n de coincidencia predefinido (WS).
|
||
|
||
|
||
5. Words (Palabras).
|
||
Estos son un grupo espec¡fico de palabras reservadas, las
|
||
cuales tienen significancia l‚xica en el lenguaje definido,
|
||
cuando aparecen en cualquier lugar de una linea dada de
|
||
c¢digo fuente.
|
||
Las palabras pueden ser contracciones de m£ltiples palabras
|
||
con espacios en blanco (delimitadores ignorables) cuando se
|
||
usa el patr¢n de coincidencia predefinido (WS).
|
||
|
||
|
||
6. Rules (Reglas). hay 2 tipos de reglas:
|
||
|
||
a. Reduction Rules (Reglas de reducci¢n).
|
||
Este tipo de reglas definen la traducci¢n de uno
|
||
¢ muchos tokens dentro de uno ¢ m s tokens (¢
|
||
acciones establecidas).
|
||
Las Reducciones son infinitamente recursivas, lo
|
||
cual significa que los resultados de la reducci¢n,
|
||
son puestos de nuevo, en caso de ser parte todav¡a
|
||
de otra regla.
|
||
Para eliminar esos ciclos recursivos, los resultados
|
||
de la Reducci¢n pueden ser de la forma de n + DONT_REDUCE,
|
||
pasando as¡ a trav‚s del token resultante sin chequeos
|
||
posteriores.
|
||
|
||
b. Pass Through (Pasaje a Trav‚s, asociaci¢n izquierda).
|
||
Este tipo de reglas dirige al lexer para aceptar esos
|
||
tokens como una forma v lida.
|
||
|
||
|
||
|
||
|