Crumb : un nouveau langage de programmation où il n'y a pas de mots-clés et où tout est une fonction
Crumb est un langage de programmation de haut niveau, fonctionnel, interprété, dynamiquement typé, à usage général, avec une syntaxe laconique et une bibliothèque standard verbeuse.
Il présente les caractéristiques suivantes :
- Strictement aucun effet secondaire pour vous aider à écrire du code fonctionnel
- La possibilité de localiser les effets des fichiers Crumb importés.
- Le typage dynamique et le "garbage collection".
- 0 mot-clé, tout est une fonction.
Syntaxe
Crumb utilise une définition syntaxique particulièrement laconique. La syntaxe entière peut être décrite en 6 lignes d'EBNF. De plus, il n'y a pas de mots réservés, et seulement 7 symboles réservés.
EBNF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 program = start, statement, end; statement = {return | assignment | value}; return = "<-", value; assignment = identifier, "=", value; value = application | function | int | float | string | identifier; application = "(", {value}, ")"; function = "{", [{identifier}, "->"], statement, "}";
Tokens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 "=" "(" ")" "{" "}" "->" "<-" identifier int float string start end
Spécificités
Les chaînes de caractères sont des caractères entourés de guillemets, par exemple :
Les codes d'échappement dans crumb sont équivalents à leurs codes d'échappement C respectifs. La liste des codes d'échappement pris en charge est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 "hello world" "this is\nsplit between new lines" "\e[31mthis text is in red\e[0m"
Les nombres entiers sont des groupes de caractères numériques, qui peuvent être précédés de -, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 "\a" "\b" "\f" "\n" "\r" "\t" "\v" "\e" "\\" "\""
Les flottants sont comme les entiers, mais ils contiennent une décimale, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1234 -14 345
Les identificateurs sont des ensembles de caractères qui ne sont pas séparés par des espaces, qui ne commencent pas par des guillemets ou des chiffres, et qui ne sont pas des symboles réservés, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 13.45 -2.3 745.0
Les commentaires commencent par "//" et se terminent à la fin d'une ligne, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 hello x₂ symbol1 +
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 // this is a program that prints hi (print "hi") // this prints hi
Vous pourrez voir plus d'information dans la source.
Source : GitHub
Et vous ?
Pensez-vous que ce langage de programmation soit crédible ou pertinent ?
Pensez-vous que ce langage de programmation soit utile à quelque chose ? Si oui à quoi ?
Que pensez-vous de ce langage de programmation ?
Selon vous, quelle est la différence avec le langage de programmation Lisp ?
Voir aussi :
La version 3.6b d'ARM uLisp, une variante du langage de programmation Lisp conçue pour microcontrôleurs, est disponible. Elle prend en charge la sauvegarde d'images sur toutes les cartes ATSAMD21
Un développeur publie un langage de programmation qui peut être traduit automatiquement en C, C++, C#, Java, JavaScript, etc., avec une traduction rapide et sans machine virtuelle
Le langage fonctionnel et impératif Janet, qui reprend des fonctionnalités de Lua et Clojure, s'apparente à une version légère de Lisp implémentée en C
Partager