Opparenth
Présentation de Opparenth
Opparenth est ingégré à lazi-translate mais est une librairie indépendante qui peut être utilisée pour n'importe type t d'expression mathématique basé sur l'application.
La fonction d'Opparenth est de gérer les parenthèses, que ce soit en lecture ou écriture. C'est donc lui qui fait en sorte qu'il y ait le moins de parenthèses possibles en écriture et qui associe les sous-expressions suivant les priorités en lecture.
Structure des expressions Opparenth
- parenthèsage d'une liste d'expressions Opparenth
- Item(i), i est l'expression de type t correspondant à l'item.
- Non opérateur
- À protéger à droite (comme $F x -> x x) : si l'expression se trouve en tant que fonction d'une application alors il faut la parenthèser.
- Sans besoin de protection (comme $L[ ... ])
- Opérateur(precedance)
- Préfix (une forme spéciale de préfix est utilisé en interne et provient d'un infix associé par sa gauche)
- Postfix
- Infix
- non associatif
- associatif à droite
- associatif à gauche
- Non opérateur
Interface
La librairie fournie deux fonctions, une pour l'analyse syntaxique et une pour le rendu.
Parsing : assemble
assemble prend en argument une expression Opparenth et retourne une expression de type t.
Rendering : reduceParenth
reduceParenth prend en argument une expression Opparenth et la retourne avec toutes les parenthèses inutiles enlevées.