A estranha sintaxe lexical
- Neste mês, aprendi 42 linguagens de programação para criar um novo realçador de sintaxe para o llamafile. Aproveitando o Halloween, quero compartilhar as sintaxes mais surpreendentes.
- As linguagens suportadas são 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 e Zig.
Como programar um realçador de sintaxe
- Implementar um realçador de sintaxe não é difícil. C++ e GNU gperf são ferramentas úteis.
- O gperf pode gerar uma tabela de hash perfeita para maximizar o desempenho.
- Um realçador de sintaxe básico pode ser implementado como uma máquina de estados finitos, com foco em strings, comentários e palavras-chave.
Demo
- O novo realçador de sintaxe do llamafile tem uma vantagem poderosa sobre o ollama.
- Há uma demonstração de geração de código em várias linguagens de programação usando o modelo Meta LLaMA 3.2 3B Instruct no Windows 10.
Exemplos surpreendentes de sintaxe lexical
- C: a linguagem C afirma ser simples, mas tem elementos complexos como trigraphs.
- Haskell: permite comentários aninhados.
- Tcl: pode incluir aspas em identificadores.
- JavaScript: tem sintaxe de expressões regulares e usa caracteres UNICODE como quebra de linha.
- Shell: a sintaxe de heredoc pode ser usada de várias maneiras.
- String Interpolation: Kotlin, Scala e TypeScript permitem inserir código dentro de strings.
- Swift: pode cercar strings com vários
#.
- C#: pode delimitar strings usando várias aspas.
- FORTH: tokeniza tudo com base em limites de espaço em branco.
- FORTRAN e COBOL: o llamafile oferece suporte a realce de sintaxe para essas linguagens.
- Zig: inicia strings multilinha com duas barras invertidas.
- Lua: usa colchetes e sinais de igual em strings multilinha.
- Assembly: tem vários dialetos, o que dificulta o realce de sintaxe.
- Ada: usa aspas simples para várias finalidades.
- BASIC: não exige aspas no final da string.
- Perl: a sintaxe de expressões regulares é única.
- Ruby: a sintaxe é complexa e difícil de entender.
Complexidade das linguagens suportadas
- FORTH é a linguagem mais simples, e Ruby é a mais complexa.
- A complexidade é avaliada pelo número de linhas de código para o realce de sintaxe de cada linguagem.
Resumo do GN⁺
- Este artigo explora as sintaxes únicas de várias linguagens de programação e oferece insights necessários para implementar um realçador de sintaxe.
- O realçador de sintaxe do llamafile oferece suporte a várias linguagens e pode ser especialmente útil na manutenção de linguagens antigas.
- Ajuda a entender a complexidade sintática das linguagens de programação e será útil para quem tem interesse em desenvolver realçadores de sintaxe.
- Projetos com funcionalidades semelhantes incluem Pygments e Emacs.
1 comentários
Comentários do Hacker News
||