Skip to content

Latest commit

 

History

History
136 lines (95 loc) · 4.42 KB

File metadata and controls

136 lines (95 loc) · 4.42 KB

C Lumen

CI License

C Lumen es un preprocesador fuente-a-fuente multilingüe para C/C++ que permite a los desarrolladores escribir palabras clave localizadas en español (es) y chino (zh) mientras compila con Clang/GCC estándar. El sistema es determinístico, seguro e independiente del editor.

¿Qué es C Lumen?

C Lumen proporciona localización solo de palabras clave para código C/C++. Traduce las palabras clave del lenguaje (como ifsi en español, 如果 en chino) mientras preserva todos los identificadores, cabeceras y símbolos de biblioteca. Esto permite a los desarrolladores escribir código en su idioma nativo manteniendo la compatibilidad completa con sistemas de construcción y cadenas de herramientas existentes.

Garantías de Seguridad

  • Normalización NFC: Toda la entrada se normaliza a la forma Unicode NFC
  • Protección contra Sobrescritura Bidireccional: Rechaza sobrescrituras Unicode bidireccionales potencialmente peligrosas
  • Detección de Caracteres Confusos: Advierte sobre caracteres visualmente similares que podrían causar problemas de seguridad
  • Salida Determinística: La misma entrada siempre produce la misma salida canónica

Inicio Rápido

Instalación

# Construir desde el código fuente
git clone https://github.com/c-lumen/c-lumen.git
cd c-lumen
cargo build --release

Uso Básico

# Traducir palabras clave españolas a C++ canónico
clumen apply --lang es --in examples/ahorcado_es.clumen.c --out build/ahorcado.c

# Compilar la salida canónica
cc build/ahorcado.c -o build/ahorcado && ./build/ahorcado

Configuración de VS Code

  1. Instala la extensión C Lumen desde el marketplace de VS Code
  2. Abre un archivo .clumen.c o .clumen.cpp
  3. Disfruta del resaltado de sintaxis y tokens semánticos para palabras clave localizadas

IDEs JetBrains

  1. Ve a Configuración → Editor → Paquetes TextMate
  2. Importa el archivo textmate-bundle/c-lumen.tmLanguage.json
  3. Reinicia tu IDE

Integración con CMake

Usa el ayudante de CMake proporcionado para una integración perfecta con el sistema de construcción:

include(tools/cmake/ClumenPrepass.cmake)

# Añade tus archivos fuente localizados
clumen_translate(TRANSLATED_SOURCES
    src/main.clumen.cpp
    src/utils.clumen.c
)

# Usa las fuentes traducidas en tu objetivo
add_executable(myapp ${TRANSLATED_SOURCES})

Idiomas Soportados

Español (es)

  • siif
  • sinoelse
  • mientraswhile
  • parafor
  • retornarreturn
  • Y muchos más...

Chino (zh)

  • 如果if
  • 否则else
  • while
  • for
  • 返回return
  • Y muchos más...

Ejemplos

Revisa el directorio examples/ para ejemplos completos funcionales:

  • ahorcado_es.clumen.c - Juego del ahorcado con palabras clave en español
  • 排序_zh.clumen.cpp - Algoritmo de ordenamiento con palabras clave en chino

Política: Qué se Traduce

✅ Traducido:

  • Palabras clave del lenguaje (if, while, for, etc.)
  • Directivas de preprocesador (#include#incluir)

❌ NO Traducido:

  • Nombres de funciones
  • Nombres de variables
  • Nombres de archivos de cabecera
  • Símbolos de biblioteca
  • Nombres de API

Seguridad

C Lumen incluye varias medidas de seguridad:

  • La normalización Unicode previene ataques de canonización
  • La detección de sobrescritura bidireccional previene ataques de dirección de texto
  • La detección de caracteres confusos advierte sobre posibles suplantaciones
  • Los mapas de fuente permiten reportes de error precisos

Ver SECURITY.md para información detallada de seguridad.

Contribuir

¡Aceptamos contribuciones! Por favor consulta CONTRIBUTING.md para pautas sobre:

  • Añadir nuevas palabras clave
  • Extender soporte de idiomas
  • Ejecutar pruebas
  • Código de conducta

Licencia

C Lumen está licenciado bajo la Licencia Apache 2.0. Ver LICENSE para detalles.

Hoja de Ruta

  • Soporte adicional de idiomas (francés, alemán, japonés)
  • Integración con Clangd para diagnósticos mejorados
  • Filtros git clean/smudge para localización transparente
  • Tokenizador WebAssembly para desarrollo basado en navegador