Conversion d’expressions arithmétiques (infixe → suffixe)

3 rubans
4 états

Cette machine prend en entrée une expression arithmétique (bien formée) 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 * ) ).

Elle convertit son entrée pour la mettre en notation polonaise inverse, c’est à dire en écrivant une opération a + b comme a b +. Plus précisément, on utilise le symbole 0 comme séparateur entre les deux arguments, et on suffixe le tout de l’opération. Par exemple, l’expression (2+3)× 4, codée par ((11+111)*1111), donnera 110111+01111*.

Simulateur

Spécification de la machine

      
    

Messages de sortie du compilateur

Updated: