2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00
2026-05-07 18:01:06 -06:00

================================================================================
                              ZAPLANG
              Lenguaje de programación con sintaxis en español
================================================================================

DESCRIPCIÓN
-----------
zaplang es un lenguaje de programación interpretado cuya sintaxis está inspirada
en C pero con palabras clave completamente en español. Está construido con ANTLR4
(gramática dividida en Lexer y Parser) y un intérprete escrito en Python que
ejecuta el árbol de análisis mediante el patrón Visitor.

El objetivo es facilitar el aprendizaje de programación a hispanohablantes,
eliminando la barrera del inglés en las palabras reservadas del lenguaje.


ARCHIVOS DEL PROYECTO
---------------------
  zaplangLexer.g4          Gramática del analizador léxico (ANTLR4)
  zaplangParser.g4         Gramática del analizador sintáctico (ANTLR4)
  zaplangLexer.py          Código generado por ANTLR4 (lexer)
  zaplangParser.py         Código generado por ANTLR4 (parser)
  zaplangParserListener.py Listener generado por ANTLR4
  zaplangParserVisitor.py  Visitor generado por ANTLR4
  zaplangLexer.tokens      Tabla de tokens del lexer
  zaplangParser.tokens     Tabla de tokens del parser
  zaplangLexer.interp      Archivo de interpretación del lexer
  zaplangParser.interp     Archivo de interpretación del parser
  interprete.py            Intérprete principal (ejecuta programas .zap)
  demo.zap                 Programa de demostración


REQUISITOS
----------
  - Python 3.8 o superior
  - ANTLR4 runtime para Python:

      pip install antlr4-python3-runtime

  (Nota: no es necesario regenerar los archivos .py desde las gramáticas a menos
  que se modifiquen los archivos .g4)


CÓMO EJECUTAR UN PROGRAMA
--------------------------
    python interprete.py <archivo.zap>

Ejemplo con el programa de demostración incluido:

    python interprete.py demo.zap

Salida esperada:

    === Demo zaplang ===
    Cuadrados: 1 4 9 16 25
    x es mayor que 10
    Factorial de 6: 720
    Arreglo: 10 20 30 40 50
    Cuenta regresiva: 3 2 1 ¡Ya!
    ¡Hola desde zaplang!


PALABRAS RESERVADAS
-------------------
  Tipos de datos:
    Ent       → entero (int)
    doble     → doble precisión (double)
    flot      → flotante (float)
    carac     → carácter (char)
    cf        → con firma (signed)
    sf        → sin firma (unsigned)
    vacio     → sin retorno (void)

  Control de flujo:
    si        → if
    sino      → else
    mientras  → while
    por       → for
    caso      → case / switch
    pordef    → default
    retornar  → return
    fin       → break
    interrup  → continue

  Estructuras:
    estruct   → struct
    enum      → enum

  Literales booleanos:
    verdadero → true
    falso     → false

  Especial:
    bul       → marca de punto de entrada en estructuras caso/switch


FUNCIONES DE ENTRADA/SALIDA INTEGRADAS
---------------------------------------
  imprimir(valor)      Imprime un valor sin salto de línea
  imprimirln(valor)    Imprime un valor con salto de línea
  leer()               Lee una línea como cadena de texto
  leerEnt()            Lee un número entero desde la entrada estándar
  leerFlot()           Lee un número flotante desde la entrada estándar
  leerCarac()          Lee un carácter desde la entrada estándar
  longitud(cadena)     Devuelve la longitud de una cadena


CARACTERÍSTICAS DEL LENGUAJE
-----------------------------
  - Funciones con parámetros y valor de retorno
  - Variables locales y globales con scoping léxico
  - Arreglos de tamaño fijo con inicialización literal
  - Estructuras (estruct) y enumeraciones (enum)
  - Punteros (sintaxis soportada, comportamiento simplificado)
  - Operadores aritméticos, lógicos, relacionales y de bits
  - Operadores de asignación compuesta (+=, -=, *=, etc.)
  - Operadores de incremento/decremento prefijos y postfijos (++/--)
  - Sentencia condicional (si/sino)
  - Estructura tipo switch (caso bul)
  - Bucles mientras y por (while y for)
  - Expresión ternaria (condicion ? valor_si : valor_no)
  - Comentarios de línea (//) y de bloque (/* */)
  - Punto de entrada obligatorio: función main()


EJEMPLO DE PROGRAMA
-------------------
    Ent factorial(Ent n) {
        si (n <= 1) retornar 1;
        retornar n * factorial(n - 1);
    }

    vacio main() {
        Ent resultado = factorial(6);
        imprimirln(resultado);  // Imprime: 720
    }


REGENERAR LOS ARCHIVOS DE ANTLR4 (OPCIONAL)
--------------------------------------------
Si se modifican las gramáticas (.g4), regenerar con:

    antlr4 -Dlanguage=Python3 zaplangLexer.g4
    antlr4 -Dlanguage=Python3 zaplangParser.g4

Requiere tener instalado ANTLR4 (herramienta de línea de comandos).
Descarga: https://www.antlr.org/


ARQUITECTURA INTERNA
--------------------
  1. El código fuente (.zap) se lee como texto plano.
  2. zaplangLexer tokeniza el flujo de caracteres.
  3. zaplangParser construye el árbol de análisis sintáctico (AST).
  4. El intérprete (interprete.py) recorre el AST usando el patrón Visitor,
     administrando un entorno de variables con scoping por cadena de entornos
     (clase Entorno con referencia al padre).
  5. El control de flujo (retornar, fin, interrup) se implementa mediante
     excepciones de Python (RetornarSenal, FinSenal, InterrupSenal).

================================================================================
Description
No description provided
Readme 82 KiB
Languages
Python 95.2%
ANTLR 4.4%
ZAP 0.4%