diff --git a/ArbreAbstrait/Entree.java b/ArbreAbstrait/Entree.java
index 598fce917e883d13ce24a29039c6eb5a85d49256..f70e7f43483f2fdc2406d1568ee8c36e37e3d072 100755
--- a/ArbreAbstrait/Entree.java
+++ b/ArbreAbstrait/Entree.java
@@ -1,5 +1,3 @@
-import java.util.LinkedHashMap;
-
 /*
  * Represent a function declaration instruction node inside the AST.
  */
diff --git a/HepialLexer.java b/HepialLexer.java
deleted file mode 100644
index 651fcdc2b81ca88aefd25c0b1659a3dac433e97b..0000000000000000000000000000000000000000
--- a/HepialLexer.java
+++ /dev/null
@@ -1,914 +0,0 @@
-/* The following code was generated by JFlex 1.6.1 */
-
-import java_cup.runtime.*;
-import java.util.*;
-
-
-/**
- * This class is a scanner generated by 
- * <a href="http://www.jflex.de/">JFlex</a> 1.6.1
- * from the specification file <tt>hepial.flex</tt>
- */
-class HepialLexer implements java_cup.runtime.Scanner {
-
-  /** This character denotes the end of file */
-  public static final int YYEOF = -1;
-
-  /** initial size of the lookahead buffer */
-  private static final int ZZ_BUFFERSIZE = 16384;
-
-  /** lexical states */
-  public static final int YYINITIAL = 0;
-
-  /**
-   * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
-   * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
-   *                  at the beginning of a line
-   * l is of the form l = 2*k, k a non negative integer
-   */
-  private static final int ZZ_LEXSTATE[] = { 
-     0, 0
-  };
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final String ZZ_CMAP_PACKED = 
-    "\11\0\1\16\1\15\1\15\1\15\1\15\22\0\1\16\1\0\1\3"+
-    "\5\0\1\7\1\10\1\45\1\43\1\4\1\44\1\13\1\14\12\2"+
-    "\1\0\1\5\1\46\1\6\1\47\2\0\32\1\1\11\1\0\1\12"+
-    "\3\0\1\23\1\27\1\35\1\26\1\25\1\32\1\22\1\1\1\33"+
-    "\2\1\1\37\1\24\1\34\1\21\1\17\1\40\1\20\1\36\1\31"+
-    "\1\30\1\41\1\1\1\42\2\1\1\0\1\16\10\0\1\15\32\0"+
-    "\1\16\u15df\0\1\16\u097f\0\13\16\35\0\1\15\1\15\5\0\1\16"+
-    "\57\0\1\16\u0fa0\0\1\16\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\ud00f\0";
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
-  /** 
-   * Translates DFA states to action switch labels.
-   */
-  private static final int [] ZZ_ACTION = zzUnpackAction();
-
-  private static final String ZZ_ACTION_PACKED_0 =
-    "\1\0\1\1\1\2\1\0\1\3\1\4\1\5\1\6"+
-    "\1\7\1\10\1\11\1\0\1\12\1\13\2\1\1\14"+
-    "\12\1\1\15\1\16\1\17\1\20\1\21\1\22\1\23"+
-    "\1\24\1\13\2\1\1\25\1\1\1\26\11\1\1\27"+
-    "\2\1\1\30\1\31\1\32\14\1\1\33\5\1\1\34"+
-    "\7\1\1\35\6\1\1\36\1\37\1\1\1\40\6\1"+
-    "\1\41\3\1\1\42\1\1\1\43\2\1\1\44\1\45"+
-    "\3\1\1\46\6\1\1\47\1\50\1\51\3\1\1\52"+
-    "\1\53\2\1\1\54\1\1\1\55\1\56";
-
-  private static int [] zzUnpackAction() {
-    int [] result = new int[134];
-    int offset = 0;
-    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAction(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /** 
-   * Translates a state to a row index in the transition table
-   */
-  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
-  private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\50\0\120\0\170\0\240\0\240\0\310\0\240"+
-    "\0\240\0\240\0\240\0\360\0\u0118\0\u0140\0\u0168\0\u0190"+
-    "\0\u01b8\0\u01e0\0\u0208\0\u0230\0\u0258\0\u0280\0\u02a8\0\u02d0"+
-    "\0\u02f8\0\u0320\0\u0348\0\240\0\240\0\240\0\u0370\0\u0398"+
-    "\0\u03c0\0\240\0\240\0\u03e8\0\u0410\0\u0438\0\50\0\u0460"+
-    "\0\50\0\u0488\0\u04b0\0\u04d8\0\u0500\0\u0528\0\u0550\0\u0578"+
-    "\0\u05a0\0\u05c8\0\u05f0\0\u0618\0\u0640\0\240\0\240\0\240"+
-    "\0\u0668\0\u0690\0\u06b8\0\u06e0\0\u0708\0\u0730\0\u0758\0\u0780"+
-    "\0\u07a8\0\u07d0\0\u07f8\0\u0820\0\50\0\u0848\0\u0870\0\u0898"+
-    "\0\u08c0\0\u08e8\0\50\0\u0910\0\u0938\0\u0960\0\u0988\0\u09b0"+
-    "\0\u09d8\0\u0a00\0\50\0\u0a28\0\u0a50\0\u0a78\0\u0aa0\0\u0ac8"+
-    "\0\u0af0\0\50\0\50\0\u0b18\0\50\0\u0b40\0\u0b68\0\u0b90"+
-    "\0\u0bb8\0\u0be0\0\u0c08\0\50\0\u0c30\0\u0c58\0\u0c80\0\50"+
-    "\0\u0ca8\0\50\0\u0cd0\0\u0cf8\0\50\0\50\0\u0d20\0\u0d48"+
-    "\0\u0d70\0\50\0\u0d98\0\u0dc0\0\u0de8\0\u0e10\0\u0e38\0\u0e60"+
-    "\0\50\0\50\0\50\0\u0e88\0\u0eb0\0\u0ed8\0\50\0\50"+
-    "\0\u0f00\0\u0f28\0\50\0\u0f50\0\50\0\50";
-
-  private static int [] zzUnpackRowMap() {
-    int [] result = new int[134];
-    int offset = 0;
-    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
-    int i = 0;  /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int high = packed.charAt(i++) << 16;
-      result[j++] = high | packed.charAt(i++);
-    }
-    return j;
-  }
-
-  /** 
-   * The transition table of the DFA
-   */
-  private static final int [] ZZ_TRANS = zzUnpackTrans();
-
-  private static final String ZZ_TRANS_PACKED_0 =
-    "\1\0\1\2\1\3\1\4\1\5\1\6\1\7\1\10"+
-    "\1\11\1\12\1\13\1\14\1\15\2\16\1\17\1\2"+
-    "\1\20\1\2\1\21\1\2\1\22\1\23\1\24\1\2"+
-    "\1\25\1\26\1\2\1\27\1\30\1\31\1\32\1\2"+
-    "\1\33\1\2\1\34\1\35\1\36\1\37\1\40\1\0"+
-    "\2\2\14\0\24\2\7\0\1\3\45\0\3\4\1\41"+
-    "\44\4\56\0\1\42\54\0\1\43\50\0\1\44\50\0"+
-    "\2\16\32\0\2\2\14\0\1\2\1\45\1\46\21\2"+
-    "\6\0\2\2\14\0\11\2\1\47\12\2\6\0\2\2"+
-    "\14\0\20\2\1\50\3\2\6\0\2\2\14\0\12\2"+
-    "\1\51\2\2\1\52\1\53\5\2\6\0\2\2\14\0"+
-    "\6\2\1\54\15\2\6\0\2\2\14\0\2\2\1\55"+
-    "\21\2\6\0\2\2\14\0\4\2\1\56\17\2\6\0"+
-    "\2\2\14\0\4\2\1\57\7\2\1\60\7\2\6\0"+
-    "\2\2\14\0\2\2\1\61\21\2\6\0\2\2\14\0"+
-    "\2\2\1\62\21\2\6\0\2\2\14\0\14\2\1\63"+
-    "\7\2\6\0\2\2\14\0\14\2\1\64\7\2\6\0"+
-    "\2\2\14\0\1\2\1\65\22\2\13\0\1\66\40\0"+
-    "\1\67\6\0\1\70\44\0\1\4\44\0\15\44\1\0"+
-    "\32\44\1\0\2\2\14\0\2\2\1\71\21\2\6\0"+
-    "\2\2\14\0\11\2\1\72\12\2\6\0\2\2\14\0"+
-    "\2\2\1\73\15\2\1\74\3\2\6\0\2\2\14\0"+
-    "\12\2\1\75\11\2\6\0\2\2\14\0\1\2\1\76"+
-    "\22\2\6\0\2\2\14\0\10\2\1\77\13\2\6\0"+
-    "\2\2\14\0\2\2\1\100\21\2\6\0\2\2\14\0"+
-    "\15\2\1\101\6\2\6\0\2\2\14\0\11\2\1\102"+
-    "\2\2\1\103\7\2\6\0\2\2\14\0\15\2\1\104"+
-    "\6\2\6\0\2\2\14\0\15\2\1\105\6\2\6\0"+
-    "\2\2\14\0\15\2\1\106\6\2\6\0\2\2\14\0"+
-    "\15\2\1\107\6\2\6\0\2\2\14\0\1\2\1\110"+
-    "\22\2\6\0\2\2\14\0\4\2\1\111\17\2\6\0"+
-    "\2\2\14\0\3\2\1\112\20\2\6\0\2\2\14\0"+
-    "\1\2\1\113\22\2\6\0\2\2\14\0\1\2\1\114"+
-    "\22\2\6\0\2\2\14\0\4\2\1\115\17\2\6\0"+
-    "\2\2\14\0\14\2\1\116\7\2\6\0\2\2\14\0"+
-    "\14\2\1\117\7\2\6\0\2\2\14\0\11\2\1\120"+
-    "\12\2\6\0\2\2\14\0\20\2\1\121\3\2\6\0"+
-    "\2\2\14\0\12\2\1\122\11\2\6\0\2\2\14\0"+
-    "\23\2\1\123\6\0\2\2\14\0\1\2\1\124\22\2"+
-    "\6\0\2\2\14\0\1\125\11\2\1\126\4\2\1\127"+
-    "\4\2\6\0\2\2\14\0\17\2\1\130\4\2\6\0"+
-    "\2\2\14\0\2\2\1\131\21\2\6\0\2\2\14\0"+
-    "\6\2\1\132\15\2\6\0\2\2\14\0\14\2\1\133"+
-    "\7\2\6\0\2\2\14\0\1\2\1\134\22\2\6\0"+
-    "\2\2\14\0\17\2\1\135\4\2\6\0\2\2\14\0"+
-    "\15\2\1\136\6\2\6\0\2\2\14\0\6\2\1\137"+
-    "\15\2\6\0\2\2\14\0\1\2\1\140\22\2\6\0"+
-    "\2\2\14\0\12\2\1\141\11\2\6\0\2\2\14\0"+
-    "\6\2\1\142\15\2\6\0\2\2\14\0\21\2\1\143"+
-    "\2\2\6\0\2\2\14\0\6\2\1\144\15\2\6\0"+
-    "\2\2\14\0\1\2\1\145\1\146\21\2\6\0\2\2"+
-    "\14\0\4\2\1\147\17\2\6\0\2\2\14\0\14\2"+
-    "\1\150\7\2\6\0\2\2\14\0\12\2\1\151\11\2"+
-    "\6\0\2\2\14\0\15\2\1\152\6\2\6\0\2\2"+
-    "\14\0\4\2\1\153\17\2\6\0\2\2\14\0\12\2"+
-    "\1\154\11\2\6\0\2\2\14\0\1\2\1\155\22\2"+
-    "\6\0\2\2\14\0\6\2\1\156\15\2\6\0\2\2"+
-    "\14\0\1\157\23\2\6\0\2\2\14\0\6\2\1\160"+
-    "\15\2\6\0\2\2\14\0\11\2\1\161\12\2\6\0"+
-    "\2\2\14\0\3\2\1\162\20\2\6\0\2\2\14\0"+
-    "\11\2\1\163\12\2\6\0\2\2\14\0\15\2\1\164"+
-    "\6\2\6\0\2\2\14\0\4\2\1\165\17\2\6\0"+
-    "\2\2\14\0\5\2\1\166\16\2\6\0\2\2\14\0"+
-    "\7\2\1\167\14\2\6\0\2\2\14\0\1\2\1\170"+
-    "\22\2\6\0\2\2\14\0\15\2\1\171\6\2\6\0"+
-    "\2\2\14\0\6\2\1\172\15\2\6\0\2\2\14\0"+
-    "\1\2\1\173\22\2\6\0\2\2\14\0\12\2\1\174"+
-    "\11\2\6\0\2\2\14\0\15\2\1\175\6\2\6\0"+
-    "\2\2\14\0\5\2\1\176\16\2\6\0\2\2\14\0"+
-    "\6\2\1\177\15\2\6\0\2\2\14\0\3\2\1\200"+
-    "\20\2\6\0\2\2\14\0\21\2\1\201\2\2\6\0"+
-    "\2\2\14\0\12\2\1\202\11\2\6\0\2\2\14\0"+
-    "\6\2\1\203\15\2\6\0\2\2\14\0\11\2\1\204"+
-    "\12\2\6\0\2\2\14\0\6\2\1\205\15\2\6\0"+
-    "\2\2\14\0\6\2\1\206\15\2\5\0";
-
-  private static int [] zzUnpackTrans() {
-    int [] result = new int[3960];
-    int offset = 0;
-    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackTrans(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      value--;
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /* error codes */
-  private static final int ZZ_UNKNOWN_ERROR = 0;
-  private static final int ZZ_NO_MATCH = 1;
-  private static final int ZZ_PUSHBACK_2BIG = 2;
-
-  /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unknown internal scanner error",
-    "Error: could not match input",
-    "Error: pushback value was too large"
-  };
-
-  /**
-   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
-   */
-  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
-  private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\1\0\2\1\1\0\2\11\1\1\4\11\1\0\17\1"+
-    "\3\11\3\1\2\11\22\1\3\11\116\1";
-
-  private static int [] zzUnpackAttribute() {
-    int [] result = new int[134];
-    int offset = 0;
-    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAttribute(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-  /** the input device */
-  private java.io.Reader zzReader;
-
-  /** the current state of the DFA */
-  private int zzState;
-
-  /** the current lexical state */
-  private int zzLexicalState = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
-  /** the textposition at the last accepting state */
-  private int zzMarkedPos;
-
-  /** the current text position in the buffer */
-  private int zzCurrentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int zzStartRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int zzEndRead;
-
-  /** number of newlines encountered up to the start of the matched text */
-  private int yyline;
-
-  /** the number of characters up to the start of the matched text */
-  private int yychar;
-
-  /**
-   * the number of characters from the last newline up to the start of the 
-   * matched text
-   */
-  private int yycolumn;
-
-  /** 
-   * zzAtBOL == true <=> the scanner is currently at the beginning of a line
-   */
-  private boolean zzAtBOL = true;
-
-  /** zzAtEOF == true <=> the scanner is at the EOF */
-  private boolean zzAtEOF;
-
-  /** denotes if the user-EOF-code has already been executed */
-  private boolean zzEOFDone;
-  
-  /** 
-   * The number of occupied positions in zzBuffer beyond zzEndRead.
-   * When a lead/high surrogate has been read from the input stream
-   * into the final zzBuffer position, this will have a value of 1;
-   * otherwise, it will have a value of 0.
-   */
-  private int zzFinalHighSurrogate = 0;
-
-  /* user code: */
-
-// Print parsing errors
-public void yyerror() {
-       System.out.println("error line " +yyline + " column " +yycolumn
-       + " " +yytext());
-}
-
-
-
-  /**
-   * Creates a new scanner
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  HepialLexer(java.io.Reader in) {
-    this.zzReader = in;
-  }
-
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x110000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 182) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Refills the input buffer.
-   *
-   * @return      <code>false</code>, iff there was new input.
-   * 
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  private boolean zzRefill() throws java.io.IOException {
-
-    /* first: make room (if you can) */
-    if (zzStartRead > 0) {
-      zzEndRead += zzFinalHighSurrogate;
-      zzFinalHighSurrogate = 0;
-      System.arraycopy(zzBuffer, zzStartRead,
-                       zzBuffer, 0,
-                       zzEndRead-zzStartRead);
-
-      /* translate stored positions */
-      zzEndRead-= zzStartRead;
-      zzCurrentPos-= zzStartRead;
-      zzMarkedPos-= zzStartRead;
-      zzStartRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[zzBuffer.length*2];
-      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-      zzBuffer = newBuffer;
-      zzEndRead += zzFinalHighSurrogate;
-      zzFinalHighSurrogate = 0;
-    }
-
-    /* fill the buffer with new input */
-    int requested = zzBuffer.length - zzEndRead;
-    int numRead = zzReader.read(zzBuffer, zzEndRead, requested);
-
-    /* not supposed to occur according to specification of java.io.Reader */
-    if (numRead == 0) {
-      throw new java.io.IOException("Reader returned 0 characters. See JFlex examples for workaround.");
-    }
-    if (numRead > 0) {
-      zzEndRead += numRead;
-      /* If numRead == requested, we might have requested to few chars to
-         encode a full Unicode character. We assume that a Reader would
-         otherwise never return half characters. */
-      if (numRead == requested) {
-        if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
-          --zzEndRead;
-          zzFinalHighSurrogate = 1;
-        }
-      }
-      /* potentially more input available */
-      return false;
-    }
-
-    /* numRead < 0 ==> end of stream */
-    return true;
-  }
-
-    
-  /**
-   * Closes the input stream.
-   */
-  public final void yyclose() throws java.io.IOException {
-    zzAtEOF = true;            /* indicate end of file */
-    zzEndRead = zzStartRead;  /* invalidate buffer    */
-
-    if (zzReader != null)
-      zzReader.close();
-  }
-
-
-  /**
-   * Resets the scanner to read from a new input stream.
-   * Does not close the old reader.
-   *
-   * All internal variables are reset, the old input stream 
-   * <b>cannot</b> be reused (internal buffer is discarded and lost).
-   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
-   *
-   * Internal scan buffer is resized down to its initial length, if it has grown.
-   *
-   * @param reader   the new input stream 
-   */
-  public final void yyreset(java.io.Reader reader) {
-    zzReader = reader;
-    zzAtBOL  = true;
-    zzAtEOF  = false;
-    zzEOFDone = false;
-    zzEndRead = zzStartRead = 0;
-    zzCurrentPos = zzMarkedPos = 0;
-    zzFinalHighSurrogate = 0;
-    yyline = yychar = yycolumn = 0;
-    zzLexicalState = YYINITIAL;
-    if (zzBuffer.length > ZZ_BUFFERSIZE)
-      zzBuffer = new char[ZZ_BUFFERSIZE];
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  public final int yystate() {
-    return zzLexicalState;
-  }
-
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  public final void yybegin(int newState) {
-    zzLexicalState = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  public final String yytext() {
-    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
-  }
-
-
-  /**
-   * Returns the character at position <tt>pos</tt> from the 
-   * matched text. 
-   * 
-   * It is equivalent to yytext().charAt(pos), but faster
-   *
-   * @param pos the position of the character to fetch. 
-   *            A value from 0 to yylength()-1.
-   *
-   * @return the character at position pos
-   */
-  public final char yycharat(int pos) {
-    return zzBuffer[zzStartRead+pos];
-  }
-
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  public final int yylength() {
-    return zzMarkedPos-zzStartRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning.
-   *
-   * In a wellformed scanner (no or only correct usage of 
-   * yypushback(int) and a match-all fallback rule) this method 
-   * will only be called with things that "Can't Possibly Happen".
-   * If this method is called, something is seriously wrong
-   * (e.g. a JFlex bug producing a faulty scanner etc.).
-   *
-   * Usual syntax/scanner level error handling should be done
-   * in error fallback rules.
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void zzScanError(int errorCode) {
-    String message;
-    try {
-      message = ZZ_ERROR_MSG[errorCode];
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-    }
-
-    throw new Error(message);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  public void yypushback(int number)  {
-    if ( number > yylength() )
-      zzScanError(ZZ_PUSHBACK_2BIG);
-
-    zzMarkedPos -= number;
-  }
-
-
-  /**
-   * Contains user EOF-code, which will be executed exactly once,
-   * when the end of file is reached
-   */
-  private void zzDoEOF() throws java.io.IOException {
-    if (!zzEOFDone) {
-      zzEOFDone = true;
-      yyclose();
-    }
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  public java_cup.runtime.Symbol next_token() throws java.io.IOException {
-    int zzInput;
-    int zzAction;
-
-    // cached fields:
-    int zzCurrentPosL;
-    int zzMarkedPosL;
-    int zzEndReadL = zzEndRead;
-    char [] zzBufferL = zzBuffer;
-    char [] zzCMapL = ZZ_CMAP;
-
-    int [] zzTransL = ZZ_TRANS;
-    int [] zzRowMapL = ZZ_ROWMAP;
-    int [] zzAttrL = ZZ_ATTRIBUTE;
-
-    while (true) {
-      zzMarkedPosL = zzMarkedPos;
-
-      boolean zzR = false;
-      int zzCh;
-      int zzCharCount;
-      for (zzCurrentPosL = zzStartRead  ;
-           zzCurrentPosL < zzMarkedPosL ;
-           zzCurrentPosL += zzCharCount ) {
-        zzCh = Character.codePointAt(zzBufferL, zzCurrentPosL, zzMarkedPosL);
-        zzCharCount = Character.charCount(zzCh);
-        switch (zzCh) {
-        case '\u000B':
-        case '\u000C':
-        case '\u0085':
-        case '\u2028':
-        case '\u2029':
-          yyline++;
-          yycolumn = 0;
-          zzR = false;
-          break;
-        case '\r':
-          yyline++;
-          yycolumn = 0;
-          zzR = true;
-          break;
-        case '\n':
-          if (zzR)
-            zzR = false;
-          else {
-            yyline++;
-            yycolumn = 0;
-          }
-          break;
-        default:
-          zzR = false;
-          yycolumn += zzCharCount;
-        }
-      }
-
-      if (zzR) {
-        // peek one character ahead if it is \n (if we have counted one line too much)
-        boolean zzPeek;
-        if (zzMarkedPosL < zzEndReadL)
-          zzPeek = zzBufferL[zzMarkedPosL] == '\n';
-        else if (zzAtEOF)
-          zzPeek = false;
-        else {
-          boolean eof = zzRefill();
-          zzEndReadL = zzEndRead;
-          zzMarkedPosL = zzMarkedPos;
-          zzBufferL = zzBuffer;
-          if (eof) 
-            zzPeek = false;
-          else 
-            zzPeek = zzBufferL[zzMarkedPosL] == '\n';
-        }
-        if (zzPeek) yyline--;
-      }
-      zzAction = -1;
-
-      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-  
-      zzState = ZZ_LEXSTATE[zzLexicalState];
-
-      // set up zzAction for empty match case:
-      int zzAttributes = zzAttrL[zzState];
-      if ( (zzAttributes & 1) == 1 ) {
-        zzAction = zzState;
-      }
-
-
-      zzForAction: {
-        while (true) {
-    
-          if (zzCurrentPosL < zzEndReadL) {
-            zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
-            zzCurrentPosL += Character.charCount(zzInput);
-          }
-          else if (zzAtEOF) {
-            zzInput = YYEOF;
-            break zzForAction;
-          }
-          else {
-            // store back cached positions
-            zzCurrentPos  = zzCurrentPosL;
-            zzMarkedPos   = zzMarkedPosL;
-            boolean eof = zzRefill();
-            // get translated positions and possibly new buffer
-            zzCurrentPosL  = zzCurrentPos;
-            zzMarkedPosL   = zzMarkedPos;
-            zzBufferL      = zzBuffer;
-            zzEndReadL     = zzEndRead;
-            if (eof) {
-              zzInput = YYEOF;
-              break zzForAction;
-            }
-            else {
-              zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
-              zzCurrentPosL += Character.charCount(zzInput);
-            }
-          }
-          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
-          if (zzNext == -1) break zzForAction;
-          zzState = zzNext;
-
-          zzAttributes = zzAttrL[zzState];
-          if ( (zzAttributes & 1) == 1 ) {
-            zzAction = zzState;
-            zzMarkedPosL = zzCurrentPosL;
-            if ( (zzAttributes & 8) == 8 ) break zzForAction;
-          }
-
-        }
-      }
-
-      // store back cached position
-      zzMarkedPos = zzMarkedPosL;
-
-      if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-        zzAtEOF = true;
-            zzDoEOF();
-          { return new java_cup.runtime.Symbol(sym.EOF); }
-      }
-      else {
-        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-          case 1: 
-            { return new Symbol(sym.IDENT, yyline, yycolumn, yytext());
-            }
-          case 47: break;
-          case 2: 
-            { return new Symbol(sym.INTEGERCONST, yyline, yycolumn, Integer.parseInt(yytext()));
-            }
-          case 48: break;
-          case 3: 
-            { return new Symbol(sym.COMMA, yyline, yycolumn);
-            }
-          case 49: break;
-          case 4: 
-            { return new Symbol(sym.SEMICOLON, yyline, yycolumn);
-            }
-          case 50: break;
-          case 5: 
-            { return new Symbol(sym.EQUAL, yyline, yycolumn);
-            }
-          case 51: break;
-          case 6: 
-            { return new Symbol(sym.OPENPARENT, yyline, yycolumn);
-            }
-          case 52: break;
-          case 7: 
-            { return new Symbol(sym.CLOSEPARENT, yyline, yycolumn);
-            }
-          case 53: break;
-          case 8: 
-            { return new Symbol(sym.OPENBRACK, yyline, yycolumn);
-            }
-          case 54: break;
-          case 9: 
-            { return new Symbol(sym.CLOSEBRACK, yyline, yycolumn);
-            }
-          case 55: break;
-          case 10: 
-            { return new Symbol(sym.DIVIDE, yyline, yycolumn);
-            }
-          case 56: break;
-          case 11: 
-            { ;
-            }
-          case 57: break;
-          case 12: 
-            { return new Symbol(sym.TO, yyline, yycolumn);
-            }
-          case 58: break;
-          case 13: 
-            { return new Symbol(sym.PLUS, yyline, yycolumn);
-            }
-          case 59: break;
-          case 14: 
-            { return new Symbol(sym.MINUS, yyline, yycolumn);
-            }
-          case 60: break;
-          case 15: 
-            { return new Symbol(sym.TIMES, yyline, yycolumn);
-            }
-          case 61: break;
-          case 16: 
-            { return new Symbol(sym.INF, yyline, yycolumn);
-            }
-          case 62: break;
-          case 17: 
-            { return new Symbol(sym.SUP, yyline, yycolumn);
-            }
-          case 63: break;
-          case 18: 
-            { return new Symbol(sym.STRINGCONST, yyline, yycolumn, yytext());
-            }
-          case 64: break;
-          case 19: 
-            { return new Symbol(sym.EQUALS, yyline, yycolumn);
-            }
-          case 65: break;
-          case 20: 
-            { return new Symbol(sym.DOUBLEPOINTS, yyline, yycolumn);
-            }
-          case 66: break;
-          case 21: 
-            { return new Symbol(sym.OR, yyline, yycolumn);
-            }
-          case 67: break;
-          case 22: 
-            { return new Symbol(sym.AND, yyline, yycolumn);
-            }
-          case 68: break;
-          case 23: 
-            { return new Symbol(sym.IF, yyline, yycolumn);
-            }
-          case 69: break;
-          case 24: 
-            { return new Symbol(sym.INFEQUAL, yyline, yycolumn);
-            }
-          case 70: break;
-          case 25: 
-            { return new Symbol(sym.DIFF, yyline, yycolumn);
-            }
-          case 71: break;
-          case 26: 
-            { return new Symbol(sym.SUPEQUAL, yyline, yycolumn);
-            }
-          case 72: break;
-          case 27: 
-            { return new Symbol(sym.NOT, yyline, yycolumn);
-            }
-          case 73: break;
-          case 28: 
-            { return new Symbol(sym.FOR, yyline, yycolumn);
-            }
-          case 74: break;
-          case 29: 
-            { return new Symbol(sym.FALSE, yyline, yycolumn);
-            }
-          case 75: break;
-          case 30: 
-            { return new Symbol(sym.READ, yyline, yycolumn);
-            }
-          case 76: break;
-          case 31: 
-            { return new Symbol(sym.TRUE, yyline, yycolumn);
-            }
-          case 77: break;
-          case 32: 
-            { return new Symbol(sym.THEN, yyline, yycolumn);
-            }
-          case 78: break;
-          case 33: 
-            { return new Symbol(sym.DO, yyline, yycolumn);
-            }
-          case 79: break;
-          case 34: 
-            { return new Symbol(sym.ENDIF, yyline, yycolumn);
-            }
-          case 80: break;
-          case 35: 
-            { return new Symbol(sym.ELSE, yyline, yycolumn);
-            }
-          case 81: break;
-          case 36: 
-            { return new Symbol(sym.TINTEGER, yyline, yycolumn);
-            }
-          case 82: break;
-          case 37: 
-            { return new Symbol(sym.WRITE, yyline, yycolumn);
-            }
-          case 83: break;
-          case 38: 
-            { return new Symbol(sym.ENDPRG, yyline, yycolumn);
-            }
-          case 84: break;
-          case 39: 
-            { return new Symbol(sym.TBOOLEAN, yyline, yycolumn);
-            }
-          case 85: break;
-          case 40: 
-            { return new Symbol(sym.WHILE, yyline, yycolumn);
-            }
-          case 86: break;
-          case 41: 
-            { return new Symbol(sym.ENDFOR, yyline, yycolumn);
-            }
-          case 87: break;
-          case 42: 
-            { return new Symbol(sym.FROM, yyline, yycolumn);
-            }
-          case 88: break;
-          case 43: 
-            { return new Symbol(sym.STARTPRG, yyline, yycolumn);
-            }
-          case 89: break;
-          case 44: 
-            { return new Symbol(sym.PRG, yyline, yycolumn);
-            }
-          case 90: break;
-          case 45: 
-            { return new Symbol(sym.CONSTANT, yyline, yycolumn);
-            }
-          case 91: break;
-          case 46: 
-            { return new Symbol(sym.ENDWHILE, yyline, yycolumn);
-            }
-          case 92: break;
-          default:
-            zzScanError(ZZ_NO_MATCH);
-        }
-      }
-    }
-  }
-
-
-}
diff --git a/Visitors/SemanticAnalyzer.java b/Visitors/SemanticAnalyzer.java
index 481a6a0851405f0199310fea4f34afe98cf96394..2409529da2d5ccea6a64b9e5bf12a0a291d9bc27 100755
--- a/Visitors/SemanticAnalyzer.java
+++ b/Visitors/SemanticAnalyzer.java
@@ -82,7 +82,7 @@ public class SemanticAnalyzer implements ASTVisitor {
         return null;
     }
 
-    // public Object visit(Relation node) { return null; }
+    public Object visit(Relation node) { return null; }
 
     public Object visit(Soustraction node) {
         return null;
@@ -94,7 +94,7 @@ public class SemanticAnalyzer implements ASTVisitor {
 
     public Object visit(Tantque node) { return null; }
 
-    // public Object visit(Unaire node) { return null; }
+    public Object visit(Unaire node) { return null; }
 
     public Object visit(Vrai node) { return null; }
 }
diff --git a/Visitors/SourceCodeGenerator.java b/Visitors/SourceCodeGenerator.java
index c658ebef38213350df852cba12e34c3d0622fdcc..43ec55987d4b5bd520a2a407f72dd543238f8bbe 100755
--- a/Visitors/SourceCodeGenerator.java
+++ b/Visitors/SourceCodeGenerator.java
@@ -84,16 +84,15 @@ public class SourceCodeGenerator implements ASTVisitor {
         return null;
     }
 
-    public Object visit(DeclarationConstant node){
-    Symbole sym = TDS.getInstance().identifier(new
-    Entree(node.getIdentifier().getNom()));
-    
-    code += sym + " ";
-    node.getIdentifier().accept(this);
-    code += " = ";
-    node.getConstantExpression().accept(this);
-    code += ";";
-    return null;
+    public Object visit(DeclarationConstant node) {
+        Symbole sym = TDS.getInstance().identifier(new Entree(node.getIdentifier().getNom()));
+
+        code += sym + " ";
+        node.getIdentifier().accept(this);
+        code += " = ";
+        node.getConstantExpression().accept(this);
+        code += ";";
+        return null;
     }
 
     public Object visit(DeclarationProgramme node) {
@@ -107,15 +106,14 @@ public class SourceCodeGenerator implements ASTVisitor {
         return null;
     }
 
-    public Object visit(DeclarationVariable node){
-    Symbole sym = TDS.getInstance().identifier(new
-    Entree(node.getIdentifier().getNom()));
-    
-    code += sym + " ";
-    node.getIdentifier().accept(this);
-    if (!isParameterDeclaration)
-    code += ";";
-    return null;
+    public Object visit(DeclarationVariable node) {
+        Symbole sym = TDS.getInstance().identifier(new Entree(node.getIdentifier().getNom()));
+
+        code += sym + " ";
+        node.getIdentifier().accept(this);
+        if (!isParameterDeclaration)
+            code += ";";
+        return null;
     }
 
     public Object visit(Diff node) {
@@ -215,24 +213,23 @@ public class SourceCodeGenerator implements ASTVisitor {
         return null;
     }
 
-    
-    public Object visit(Pour node){
-    code += "pour ";
-    node.getIteratorName().accept(this);
-    code += " allantde ";
-    node.getFrom().accept(this);
-    code += " a ";
-    node.getTo().accept(this);
-    code+= " faire";
-    level += 1;
-    node.getInstruction().accept(this);
-    level -= 1;
-    code += "\n";
-    addTabulation();
-    code += "finpour";
-    return null;
-    }
-    
+    public Object visit(Pour node) {
+        code += "pour ";
+        node.getIteratorName().accept(this);
+        code += " allantde ";
+        node.getFrom().accept(this);
+        code += " a ";
+        node.getTo().accept(this);
+        code += " faire";
+        level += 1;
+        node.getInstruction().accept(this);
+        level -= 1;
+        code += "\n";
+        addTabulation();
+        code += "finpour";
+        return null;
+    }
+
     public Object visit(Produit node) {
         node.getGauche().accept(this);
         code += " * ";
@@ -261,17 +258,17 @@ public class SourceCodeGenerator implements ASTVisitor {
         return null;
     }
 
-    public Object visit(Tantque node){
-    code += "tantque ";
-    node.getCondition().accept(this);
-    code += " faire";
-    level += 1;
-    node.getInstruction().accept(this);
-    level -= 1;
-    code += "\n";
-    addTabulation();
-    code += "fintantque";
-    return null;
+    public Object visit(Tantque node) {
+        code += "tantque ";
+        node.getCondition().accept(this);
+        code += " faire";
+        level += 1;
+        node.getInstruction().accept(this);
+        level -= 1;
+        code += "\n";
+        addTabulation();
+        code += "fintantque";
+        return null;
     }
 
     public Object visit(Vrai node) {