Écrire des expressions mathématiques en LaTeX peut être fastidieux et la syntaxe difficile à mémoriser. Il faut toujours avoir de la documentation sous la main, et les erreurs sont très fréquentes. J'ai alors imaginé une syntaxe simple, intuitive, facile à mémoriser et en limitant l'utilisation de caractères spéciaux qui frennent parfois la vitesse d'écriture selon les rédacteurs.

MathToTex
Ce projet a été réalisé dans le cadre de l'UE Compilation à l'ENSTA Bretagne. Ce projet consiste en la création d'un petit compilateur pour réaliser une tâche de notre choix. J'ai donc choisi de travailler sur un compilateur qui convertit des expressions mathématiques écrites avec une syntaxe simple et facilement mémorisable en expressions LaTeX.
Proof of concept

Schéma du processus de compilation
Pour comprendre le fonctionnement de ce compilateur, il est important de comprendre le fonctionnement de la compilation en général. La compilation est le processus de conversion d'un code source en un code cible. Dans notre cas, le code source est une expression mathématique écrite avec notre syntaxe, et le code cible est une expression LaTeX. La première étape est donc de venir séparer les éléments du code source pour obtenir une liste de lexèmes. Si un caractère non reconnu est rencontré, une erreur est immédiatement levée. Ensuite, il faut parcourir cette liste de lexèmes pour constituer une arbre de syntaxe abstraite (AST).
Concrètement, dans la syntaxe que j'ai imaginée, l'expression permettant de générer un carré est la suivante :pow(x, 2)
L'analyse syntaxique ayant pour but de générer ici un objet de type Power avec les arguments x et 2, elle va par exemple vérifier que le nombre d'arguments est correct, que les arguments sont bien des nombres, qu'une paranthèse ouvrante est bien suivie d'une paranthèse fermante, etc. Par la suite, une étape de vérification de contexte peut être réalisée pour vérifier que les opérations sont bien définies, que les variables sont bien déclarées, etc. Par exemple, si une variable est utilisée sans avoir été déclarée, une erreur sera levée. La dernière étape consiste à parcouris l'arbre de syntaxe abstraite pour générer le code cible. Dans le cas du projet MathtoTex, l'étape de vérification de contexte n'a pas été réalisée, car elle n'était pas nécessaire pour le projet. En effet, il est tout à fait possible de redéfinir une variable dans LaTeX, et il n'est pas nécessaire de déclarer une variable avant de l'utiliser non plus.
Github