¿Cómo podemos ayudarte?

Encuentra documentación, resuelve dudas y consulta las preguntas frecuentes sobre PYTHON 2.

Introducción

PYTHON 2 v1.0 es un lenguaje/meta-lenguaje personalizado que permite escribir código en archivos .py2 y transpilarlo a Python, JavaScript, C++, C# y C.

Incluye un lenguaje propio llamado MITH, un sistema de mods con funciones extra y customize functions extensibles.

💡 Consejo rápido: Si ya sabes Python o JavaScript, aprenderás PYTHON 2 en minutos. Su sintaxis está diseñada para ser familiar pero extensible.

Instalación

Requisitos

  • Python 3.8 o superior
  • (Opcional) Node.js + npx para desplegar con Wrangler

Instalar desde el repositorio

git clone https://github.com/python2-lang/python2.git
cd python2
python3 main.py examples/ejemplo.py2 python

Verificar instalación

python3 tests/run_tests.py

Primeros pasos

Crea un archivo llamado hola.py2 con este contenido:

MITH.LENGUAJE castellano

castellano.NOT.MITHLENGUAJE({
    imprimir "Hola mundo";
    execute languaje;
})

Ejecútalo con:

python3 main.py hola.py2 python

Sintaxis básica

Variables y constantes

version = 1.0
nombre = "PYTHON 2"
activo = true

constante PI = 3.14159
constante AUTOR = "Equipo PYTHON 2"

Funciones

def suma(a: int, b: int): int {
    return a + b
}

fn saludar(nombre: string) {
    imprimir "Hola, " + nombre
}

function factorial(n) {
    if n <= 1 {
        return 1
    }
    return n * factorial(n - 1)
}

Condicionales

if x > 0 {
    imprimir "positivo"
} elif x == 0 {
    imprimir "cero"
} else {
    imprimir "negativo"
}

Bucles

i = 0
while i < 10 {
    imprimir i
    i = i + 1
}

for n in lista {
    imprimir n
}

Clases

class Persona {
    nombre: string
    edad: int

    def constructor(n: string, e: int) {
        this.nombre = n
        this.edad = e
    }

    def presentarse() {
        return "Soy " + this.nombre
    }
}

Lenguaje MITH

MITH permite definir secciones de código personalizadas que se transpilan al target activo.

MITH.LENGUAJE castellano

castellano.NOT.MITHLENGUAJE({
    variable x = 10;
    constante MAX = 100;
    imprimir "Hola desde MITH";

    si x > 0 entonces
        imprimir "Positivo";
    sino
        imprimir "No positivo";
    fin;

    mientras x < MAX hacer
        imprimir x;
        asignar x = x + 10;
    fin;

    funcion duplicar(n) hacer
        retornar n * 2;
    fin;

    lista numeros = 1, 2, duplicar(5);
    diccionario config = "modo":"prod", "debug":false;

    sumar 5, 3, 2;
    multiplicar 4, 5;

    execute languaje;
})

Instrucciones MITH disponibles

variable nombre = valor;Declara variable
constante N = valor;Declara constante
imprimir "texto";Muestra en consola
asignar x = y;Asigna valor
sumar a, b, c;Suma valores
restar a, b;Resta valores
multiplicar a, b;Multiplica valores
dividir a, b;Divide valores
modulo a, b;Módulo
si cond entonces ... fin;Condicional
mientras cond hacer ... fin;Bucle while
funcion f(a) hacer ... fin;Función
lista x = 1, 2, 3;Lista
diccionario x = "k":"v";Diccionario
importar modulo;Importación
execute languaje;Ejecuta sección

Targets soportados

TargetComandoSalidaIdeal para
Pythonpython3 main.py app.py2 pythonapp.pyScripts, IA, backend
JavaScriptpython3 main.py app.py2 jsapp.jsWeb, Node.js
C++python3 main.py app.py2 cppapp.cppAlto rendimiento
C#python3 main.py app.py2 csharpapp.cs.NET, escritorio
Cpython3 main.py app.py2 capp.cEmbeded, sistemas

Mods incluidos

Al usar import python2_commandfunctionfact:IN_USE se cargan automáticamente:

mod_standard

Funciones base como hola_mundo, version y ayuda.

mod_math

Matemáticas: suma, potencia, raíz, fibonacci, primos, factorial.

mod_io

Lectura/escritura de archivos, directorios y entrada de usuario.

mod_net

HTTP GET/POST, archivos, JSON y utilidades de red.

mod_os

Información del sistema, variables de entorno y procesos.

mod_string

Manipulación de cadenas: mayúsculas, división, búsqueda, formato.

mod_data

Listas, diccionarios, ordenamientos y rangos.

mod_time

Fechas, timestamps, cronómetros y formateo.

mod_crypto

Hashing MD5, SHA1, SHA256, SHA512 y Base64.

Errores comunes

SyntaxError: Esperado IDENTIFICADOR

Revisa que los nombres de variables y funciones no usen palabras reservadas como function o class.

El bloque MITH no genera código

Verifica que hayas declarado el lenguaje con MITH.LENGUAJE nombre antes de usar nombre.NOT.MITHLENGUAJE({...}).

Los mods no se cargan

Asegúrate de incluir import python2_commandfunctionfact:IN_USE antes de usar customize functions.

Preguntas y respuestas

PYTHON 2 es un lenguaje/meta-lenguaje personalizado que transpila código .py2 a Python, JavaScript, C++, C# y C. Incluye el lenguaje propio MITH y un sistema de mods.

No necesariamente. La sintaxis está inspirada en Python, JavaScript y C, pero puedes crear tu propio lenguaje MITH y escribir código de forma personalizada.

Crea un generador en targets/nuevo/generator.py que herede de BaseGenerator e implemente el método generar(). Luego regístralo en mith/interpreter.py.

Crea un archivo en mods/mod_tuyo.py, define tus funciones y expón un diccionario CUSTOMIZE_FUNCTIONS. Se cargará automáticamente con IN_USE.

El token nunca debe guardarse en el repositorio. Usa la variable de entorno CLOUDFLARE_API_TOKEN_ELI o un archivo .env ignorado por git.

Sí. Primero define el lenguaje con MITH.LENGUAJE castellano y luego invoca castellano.NOT.MITHLENGUAJE({ ... }).

Ejecuta python3 main.py --repl python. Escribe líneas de PYTHON 2, usa :target para cambiar de target y :salir para salir.

Sí. En la página principal hay una sección "Probar online" donde puedes escribir código MITH, elegir un target y ver la salida generada.

Haz tu propia pregunta

Si no encuentras respuesta, agrega tu pregunta. Si conoces la respuesta, compártela para ayudar a otros.

Las preguntas se guardan temporalmente en el navegador mediante localStorage.

Ejemplos avanzados .py2

Calculadora con MITH

.py2
MITH.LENGUAJE calc

calc.NOT.MITHLENGUAJE({
    variable a = 10;
    variable b = 3;

    sumar a, b;
    restar a, b;
    multiplicar a, b;
    dividir a, b;

    execute languaje;
})

Fibonacci hasta N

.py2
import python2_commandfunctionfact:IN_USE

fn fib(n: int): int {
    if n <= 1 {
        return n
    }
    return fib(n - 1) + fib(n - 2)
}

i = 0
while i < 10 {
    imprimir fib(i)
    i = i + 1
}

Petición HTTP con mod_net

.py2
import python2_commandfunctionfact:IN_USE
import mod_net

respuesta = net_get("https://api.example.com/datos")
imprimir respuesta.status
imprimir respuesta.json()

Hash SHA256 con mod_crypto

.py2
import python2_commandfunctionfact:IN_USE
import mod_crypto

mensaje = "PYTHON 2 es genial"
hash = crypto_sha256(mensaje)
imprimir hash

Soporte

Si no encuentras respuesta, revisa los recursos oficiales: