/*
 * $Id: simplex.txt,v 1.1 2002/01/22 22:02:24 lculik Exp $
 */

/*
 * Las siguientes partes son derechos adquiridos de sus autores individuales.
 * www - http://www.harbour-project.org
 *
 * Copyright 2001 Ron Pinkas <ron@profit-master.com> 
 *   Documentacin en Ingls de: simplex.txt
 *
 * Copyright 2002 Alejandro de Grate <alex_degarate@hotmail.com>
 *   Documentacin en Espaol de: simplex.txt
 *
 * Vea doc/license.txt por los trminos de la licencia.
 *
 */


SIMPLEX
=======

Simplex usa definiciones de alto nivel, lo cual para muchos 
programadores podra ser ms 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 
   Lxicos:

   a. Ignorable. Tpico ejemplo de estos delimitadores son los 
      "espacios en blanco", por ej. espacio y tabulador.            

   b. Retornable: Tpico ejemplos de estos delimitadores son 
      las comas, parntesis y operadores matemticos.

   c. Agregables. Mientras Yo no tengo ningn ejemplo en mente, 
      sospecho que podra haber una necesidad para esos 
      delimitadores. 
      Este tipo de delimitadores deberan 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 finalizacin (END) (el par).
   Tpico ejemplo de ese elemento lxico es una cadena literal, 
   por ejemplo: "Hola Mundo".


3. Self Contained Words (Palabras Auto-contenidas).
   Estos son un grupo especfico de palabras reservadas, las 
   cuales NO necesitan NINGUN delimitador. Estas palabras podran 
   ser vistas como una forma de meta delimitadores. Estas palabras
   sern extraidas desde el fujo de entrada sin importar los 
   caracteres que los preceden  los caracteres que los siguen.
   Tpico ejemplo de estos tokens son los operadores lgicos de 
   dBase: .AND., .OR., .NOT., los operadores de asignacin en 
   linea de lenguaje C  +=  *= etc., as como tambin 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 especfico de palabras reservadas, 
   las cuales tienen significancia lxica en el lenguaje 
   definido, cuando aparecen como el token primero (FIRST) 
   en una lnea dada del fuente.
   Las palabras Claves pueden ser contracciones de mltiples 
   palabras con espacios en blanco (delimitadores ignorables) 
   cuando se usa el patrn de coincidencia predefinido (WS).


5. Words (Palabras). 
   Estos son un grupo especfico de palabras reservadas, las 
   cuales tienen significancia lxica en el lenguaje definido, 
   cuando aparecen en cualquier lugar de una linea dada de 
   cdigo fuente.
   Las palabras pueden ser contracciones de mltiples palabras 
   con espacios en blanco (delimitadores ignorables) cuando se 
   usa el patrn de coincidencia predefinido (WS).

   
6. Rules (Reglas). hay 2 tipos de reglas:

   a. Reduction Rules (Reglas de reduccin). 
      Este tipo de reglas definen la traduccin de uno
       muchos tokens dentro de uno  ms tokens ( 
      acciones establecidas).
      Las Reducciones son infinitamente recursivas, lo 
      cual significa que los resultados de la reduccin, 
      son puestos de nuevo, en caso de ser parte todava 
      de otra regla.
      Para eliminar esos ciclos recursivos, los resultados 
      de la Reduccin pueden ser de la forma de n + DONT_REDUCE, 
      pasando as a travs del token resultante sin chequeos 
      posteriores.

   b. Pass Through (Pasaje a Travs, asociacin izquierda). 
      Este tipo de reglas dirige al lexer para aceptar esos 
      tokens como una forma vlida. 



