Une syntaxe lexicale étrange
- Ce mois-ci, 42 langages de programmation ont été appris afin de créer un nouveau surligneur syntaxique pour llamafile. À l’occasion d’Halloween, voici les syntaxes les plus surprenantes.
- Les langages pris en charge sont 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 et Zig.
Comment coder un surligneur syntaxique
- Implémenter un surligneur syntaxique n’est pas difficile. C++ et GNU gperf sont des outils utiles.
- gperf permet de générer une table de hachage parfaite afin de maximiser les performances.
- Un surligneur syntaxique basique peut être implémenté sous forme de machine à états finis, en se concentrant sur les chaînes, les commentaires et les mots-clés.
Démo
- Le nouveau surligneur syntaxique de llamafile présente un avantage net par rapport à ollama.
- Une démo montre la génération de code dans divers langages de programmation avec le modèle Meta LLaMA 3.2 3B Instruct sous Windows 10.
Exemples de syntaxe lexicale surprenante
- C : le langage C se dit simple, mais il comporte des éléments complexes comme les trigraphes.
- Haskell : autorise les commentaires imbriqués.
- Tcl : peut inclure des guillemets dans les identifiants.
- JavaScript : possède une syntaxe d’expressions régulières et utilise des caractères UNICODE comme sauts de ligne.
- Shell : la syntaxe heredoc peut être utilisée de différentes manières.
- Interpolation de chaînes : Kotlin, Scala et TypeScript autorisent l’insertion de code dans les chaînes.
- Swift : les chaînes peuvent être entourées de plusieurs
#.
- C# : les chaînes peuvent être délimitées par plusieurs guillemets.
- FORTH : tout est tokenisé à partir des espaces.
- FORTRAN et COBOL : llamafile prend en charge la coloration syntaxique de ces langages.
- Zig : les chaînes multilignes commencent par deux antislashs.
- Lua : utilise des crochets et des signes égal pour les chaînes multilignes.
- Assembly : ses nombreux dialectes rendent la coloration syntaxique difficile.
- Ada : utilise l’apostrophe à des fins variées.
- BASIC : les chaînes n’ont pas besoin de guillemet fermant.
- Perl : sa syntaxe d’expressions régulières est particulière.
- Ruby : sa syntaxe est complexe et difficile à comprendre.
Complexité des langages pris en charge
- FORTH est le plus simple, et Ruby le plus complexe.
- La complexité est évaluée d’après le nombre de lignes de code nécessaires pour la coloration syntaxique de chaque langage.
Résumé GN⁺
- Cet article explore les syntaxes uniques de divers langages de programmation et fournit des éclairages utiles pour implémenter un surligneur syntaxique.
- Le surligneur syntaxique de llamafile prend en charge de nombreux langages et peut être particulièrement utile pour la maintenance de langages anciens.
- Il aide à comprendre la complexité syntaxique des langages de programmation et sera utile à ceux qui s’intéressent au développement de surligneurs syntaxiques.
- Parmi les projets offrant des fonctionnalités similaires, on peut citer Pygments et Emacs.
1 commentaires
Avis Hacker News