Structure générale

                                                                  +---> file input
                +----------+     +---------+     +------------+   |
                |          |     |         |     |            |   |
    +---------->+  parser  +---->+  lexer  +---->+ IO backend +------> readline input
    |           |          |     |         |     |            |   |
+---+---+       +----------+     +---------+     +------------+   |
|       |                                                         +---> string input
| Read  |
| Eval  |
| Loop  |
|       |
+---+---+       +-----------+       +-----------+
    |           |           |       |           |
    +---------->+ execution +------>+ expansion |
                |           |       |           |
                +-----------+       +-----------+
  • Le lexeur découpe votre suite de charactère en mots. Il donne du sens basique à ces mots:

    • points-virgule / retours à la ligne (; \n)

    • IO number (pour les redirections) (1>)

    • mot toto if then

    • mot d’assignation A=B

    • nom générique 0abc

    • opérateurs |

  • Le parseur prend ces mots, et analyse leur sens pour les organiser en arbre

  • Le composant d’exécution prend cet arbre et un état initial (variables), effectue les actions spécifiées par l’arbre et modifie l’état en conséquence.