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) {