public class ProgSimpleWhileTraduit {
  public static int insCourante;
  public static int []memoire = new int[1000];
  // Table des symboles
  // x : 0
  public static void main(String []args) {
    insCourante = 1;
    while (true) {
      System.err.println("ins="+insCourante);
      switch(insCourante) {
      case 1:
        memoire[0] = 0; // traduction de x=0
        insCourante += 1; break; // passage à l'instruction suivante
      case 2:
        if (memoire[0]<10) { // évaluation du test et branchements
          insCourante = 3;   // vers la première instruction du corps
        } else {
          insCourante = 4;   // sort de la boucle
        }
        break;
      case 3:
        memoire[0] += 1; // traduction x += 1
        insCourante = 2; break; // retour ne début de boucle
      case 4:
        System.out.println("x="+memoire[0]);
        insCourante += 1; break;
      case 5:
        System.exit(0); // arrêt de la machine
      }
    }
  }
}