La extraña sintaxis léxica
- Este mes aprendí 42 lenguajes de programación para crear un nuevo resaltador de sintaxis para llamafile. Con motivo de Halloween, quiero compartir las sintaxis más sorprendentes.
- Los lenguajes compatibles son Ada, Assembly, BASIC, C, C#, C++, COBOL, CSS, D, FORTH, FORTRAN, Go, Haskell, HTML, Java, JavaScript, Julia, JSON, Kotlin, ld, LISP, Lua, m4, Make, Markdown, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell, SQL, Swift, Tcl, TeX, TXT, TypeScript y Zig.
Cómo programar un resaltador de sintaxis
- Implementar un resaltador de sintaxis no es difícil. C++ y GNU gperf son herramientas útiles.
- gperf puede generar una tabla hash perfecta para maximizar el rendimiento.
- Un resaltador de sintaxis básico puede implementarse como una máquina de estados finitos, enfocándose en cadenas, comentarios y palabras clave.
Demo
- El nuevo resaltador de sintaxis de llamafile tiene una ventaja potente sobre ollama.
- Se ofrece una demo que genera código en varios lenguajes de programación usando el modelo Meta LLaMA 3.2 3B Instruct en Windows 10.
Ejemplos sorprendentes de sintaxis léxica
- C: Aunque el lenguaje C afirma ser simple, tiene elementos complejos como los trigraphs.
- Haskell: Permite comentarios anidados.
- Tcl: Puede incluir comillas dentro de los identificadores.
- JavaScript: Tiene sintaxis de expresiones regulares y usa caracteres UNICODE como saltos de línea.
- Shell: La sintaxis heredoc puede usarse de varias maneras.
- String Interpolation: Kotlin, Scala y TypeScript permiten insertar código dentro de cadenas.
- Swift: Las cadenas pueden rodearse con varios
#.
- C#: Las cadenas pueden delimitarse usando varias comillas.
- FORTH: Tokeniza todo usando límites de espacio en blanco.
- FORTRAN y COBOL: llamafile admite resaltado de sintaxis para estos lenguajes.
- Zig: Las cadenas multilínea comienzan con dos barras invertidas.
- Lua: Usa corchetes y signos igual para cadenas multilínea.
- Assembly: Tiene varios dialectos, por lo que el resaltado de sintaxis es difícil.
- Ada: Usa comillas simples para varios propósitos.
- BASIC: No necesita comillas al final de una cadena.
- Perl: Su sintaxis de expresiones regulares es única.
- Ruby: Su sintaxis es compleja y difícil de entender.
Complejidad de los lenguajes compatibles
- FORTH es el más simple y Ruby es el lenguaje más complejo.
- La complejidad se evalúa según la cantidad de líneas de código necesarias para el resaltado de sintaxis de cada lenguaje.
Resumen de GN⁺
- Este artículo explora la sintaxis única de varios lenguajes de programación y ofrece ideas necesarias para implementar un resaltador de sintaxis.
- El resaltador de sintaxis de llamafile admite muchos lenguajes y puede ser especialmente útil para mantener lenguajes antiguos.
- Ayuda a entender la complejidad sintáctica de los lenguajes de programación y será útil para quienes estén interesados en desarrollar resaltadores de sintaxis.
- Proyectos con funciones similares incluyen Pygments y Emacs.
1 comentarios
Opinión de Hacker News