NEXIS — Language Support for Visual Studio Code
Extensión oficial del lenguaje de programación Nexis para Visual Studio Code. Proporciona resaltado de sintaxis fiel al lenguaje, soporte completo de los comentarios de Nexis, snippets y configuración de edición para archivos .nxs.
Nexis = Native Extensible eXecution & Integration System.
✨ Características
- Resaltado de sintaxis (
syntaxes/nexis.tmLanguage.json) basado en la gramática oficial:
- Palabras reservadas reales:
if, else, for, foreach, in, step, switch, case, break, continue, func, void, emit, try, catch, finally, throw, lanzar, class, struct…
- Tipos:
int, float, double, char, string, bool, auto, const y los tipos de error nativos (Error, ErrorValidacion, ErrorIndice…).
- Operadores reales de Nexis: aritméticos, asignación, comparación, lógicos, el ternario estructural
=> <--> , la flecha de retorno ->, rangos .. / ... y la inferencia :=.
- Cadenas interpoladas
fs"…{expr}…", cadenas normales "…", caracteres 'c' y todas las secuencias de escape.
- Las 5 formas de comentario:
#/, //, #/* */#, #{ }#, /* */ y el # genérico.
- Literales numéricos:
42, 3.14 / 3.14f, 2.5e3, 0xFF, 0b1010, 077.
- La directiva de importación
#inject libreria; y #inject "archivo.nex";.
- Funciones/métodos del lenguaje:
Console.print, Console.println, Console.input y toda la biblioteca estándar (math.*, string.*, file.*, time.*, random.*, graphics.*, network.*).
- Colecciones genéricas
Vector<T>, Map<K,V>, etc., clases propias en PascalCase y llamadas del usuario.
- Comentarios y edición (
language-configuration.json): toggle de comentario, auto-cierre de {}, [], (), comillas, y soporte de los pares de comentario de bloque de Nexis.
- Snippets (
snippets/nexis.code-snippets): inject, func, voidfn, if, for, foreach, while, switch, tryc, class, struct, Console.print, Console.input, emit, ternario…
- Icono propio del lenguaje y del editor.
📦 Instalación
Desde el Marketplace / VSIX
- Descarga el
.vsix (ver versions/) o generas el tuyo con vsce package.
- En VS Code: Extensiones → menú
… → Install from VSIX….
- Selecciona el archivo y reinicia VS Code si lo pide.
En desarrollo (modo Extension Host)
# abre la carpeta extension/ y pulsa F5
code ./extension
Al pulsar F5 se abre una ventana con la extensión cargada (configuración en .vscode/launch.json). Crea un .nxs y comprueba el coloreado.
🚀 Uso rápido
#inject math;
func suma(int: a, int: b) -> int {
a + b
}
void main() {
auto x = Console.input(text="Dame un número: ")
Console.print("Resultado: " + suma(10, 20))
Console.println(fs"Tu número fue {x}")
}
📚 Documentación
📋 Registro de la versión actual — v0.0.2
Este registro existe para documentar por qué se hace cada cambio. Cada versión deja constancia de lo bueno y de lo malo, para que quien mantenga la extensión entienda la motivación de lo que viene después. Para el detalle histórico completo, ver CHANGELOG.md.
Lo bueno de v0.0.2
- Branding renovado: nombre
nexis, editor bluenovastudio, icono e identidad NEXIS.
- Base empaquetable:
package.json correcto, .vsix publicable con vsce, licencia incluida.
- Registro básico del lenguaje: extensión
.nxs, alias y language-configuration con brackets y auto-cierre.
- Raíz de comentarios: reconocía
//, /* */, #/* */# y #{ }#.
- Algunos scopes de operadores y de tipos heredados, que sirvieron de punto de partida.
Lo malo de v0.0.2 (y por qué se cambiará)
- El repositorio
builtings estaba definido pero nunca incluido: Console.print y compañía NO se resaltaban. (Corregido en la v0.0.3: ahora #builtins se incluye y se renombra con ortografía correcta.)
- Keywords inventadas: se listaba
elif, yield, using, import, as, is, new, delete, interface, extends, override, async, lock… que Nexis no tiene, y faltaban las reales (lanzar, throw, step, in, emit, try, catch, finally…). (Corregido: listado alineado con docs/ y con compiler/tokens-en-accion/.)
- Tipos inexistentes:
int8…uint64, str, decimal, byte, long, var… en línea, mientras faltaban void, auto y const. (Corregido.)
// aparecía como operador aritmético cuando en Nexis solo es comentario; y se coloreaban operadores que el lenguaje no define (|>, :>, ?, ??…). (Corregido: solo operadores reales.)
- Sin
fs"…" (cadenas interpoladas), sin caracteres 'c' y sin la directiva #inject. (Añadidos.)
- Nombres de función: el único "resaltado" eran dos palabras de ejemplo codificadas (
ProcesarPago, RechazarTransaccion), un hack. (Reemplazado por declaración + llamadas genéricas.)
- Sin resaltado de la biblioteca estándar (
math.sqrt, string.longitud, file.leer, Console.println…). (Añadido.)
- Sin snippets y sin generics (
Vector<int> se pintaba como comparación). (Añadidos.)
language-configuration.json ignoraba los comentarios propios de Nexis (#/* */#, #{ }#, #/). (Corregido con pares {open, close}.)
Conclusión de v0.0.2: una base visualmente atractiva pero con una gramática poco fiel al lenguaje. La v0.0.3 (Unreleased) es una reorganización completa de la gramática para que diga lo que Nexis es, no lo que parece.
⚖️ Licencia
Distribuido bajo la licencia incluida en LICENSE.txt.
| |