Test de correction syntaxique d’expressions arithmétiques

2 rubans
5 états

Cette machine vérifie si son entrée est une expression arithmétique avec les nombres en unaire, c’est à dire générée par la grammaire suivante:

e,f ::= nb | (e + f) | (e * f)

nb est la représentation unaire d’un nombre: le nombre n est représentée par une séquence de 1 de longueur n.

Par exemple, l’expression 2 × 3 s’écrit (11 * 111). Notez que 0 (zéro) s’écrit comme une chaîne vide, puisqu’il s’agit d’une séquence de 1 de longueur 0. On écrit donc 0 + (2 × 0) comme ceci : ( + ( 11 * ) ).

Une expression mal formée a généralement un défaut de parenthèsage: soit à cause d’une incohérence entre le nombre de parenthèses et celui d’opérateurs (par exemple (1+11+111) ou (1)), soit plus simplement parceque des parenthèses sont ouvertes sans être fermées (1+1, ou fermées sans avoir été ouvertes 1+1).

Simulateur

Spécification de la machine

      
    

Messages de sortie du compilateur

Updated: