Meta Parseur Naturel

La problématique

Admettons que je veuille calculer la somme des entiers de 1 à 10... en faisant le calcul pas à pas...

En Assembleur, ça serait un truc du genre

Debut: XOR AH

MV BC, 10

Loop: ADD BC

DEC BC JNZ Loop RET

Un peu dur à lire si l'on n'est pas tombé dans la marmite quand on était petit.

En C, ce serait
int somme = 0; for (int i=0; i<=10; i++) somme+=i; return somme;
En Perl, un chouïa plus parlant

$somme = 0; foreach my $entier (1..10) {

$somme += $entier;

} print "Le résultat vaut $somme ...\n";

Je vous épargne les autres langages... Ce qu'un programmeur aimerait bien, peut-être, (et surtout si ce n'est pas un programmeur professionnel), c'est un programme du genre de
\additionne \les \nombres \de {1} \a {10} \et \affiche \le \résultat

Hé bien c'est possible

Ca existe. Enfin presque. Actuellement il y a quelque chose de très approchant qui s'appelle le langage TeSQue, et qui permet de traiter les pages du wiki Blue Moon. Cependant, ce langage ne me plaît pas tellement, et je pense que l'on peut faire bien mieux : un parseur de langage semi-naturel.

La nouveauté de ce genre de parseur, c'est que l'utilisateur peut définir une syntaxe très flexible, qui fait que le parseur se "raccroche aux branches" en cas d'ambiguïtés entre deux interprétations de la même phrase.

Cela permet, du coup, de se passer des accolades qui définissent des blocs ou d'autres horreurs du même genre, et de programmer en... presque... français (ou tout autre langue).

Le "presque" vient de ce que c'est à l'utilisateur lui-même de dire au programme comment il entend qu'on le comprenne... A lui d'éduquer le parseur, en quelque sorte. Mais pas de panique, on peut stocker cette "éducation" dans des modules chargés au début de chaque programme en langage naturel.

Ainsi, c'est un véritable langage de programmation que j'offre, et autorisant jusqu'au bootstrapping (auto-dépassement du langage par lui-même = niveau "méta")...

Contrairement au projet de Projet Escapien/Traducteur Lexical, je n'envisage pas de faire de l'argent avec ce langage de programmation, qui, lorsqu'il sera parfaitement au point, sera un cadeau à tout le monde.

Par contre :

Ce qu'il manque encore

  1. Une grosse machine pour faire le développement.
  2. Les procédés de réduction du temps de calcul requièrent des phases de test avec espace mémoire massivement utilisé, ce qui veut dire, une plus grosse machine que la mienne actuellement. Pas mal plus grosse, en fait.

On en reparle par mail ? -- esc


Nicolas, as tu regardé du coté de Smalltalk pour une syntaxe proche de la langue naturelle ? -- Serge Stinckwich

Dernière modification le lundi 11 avril 2005 14:31:06

Éditer HistoriqueDeLaPage Diff  InfosSurLaPage