From: <do...@us...> - 2010-02-24 16:12:56
|
Revision: 4734 http://colossus.svn.sourceforge.net/colossus/?rev=4734&view=rev Author: dolbeau Date: 2010-02-24 15:14:25 +0000 (Wed, 24 Feb 2010) Log Message: ----------- Add support for every single getter in Creature (past, present and future). Reflection makes for complicated but powerful code :-) Modified Paths: -------------- branches/parser-based-ai/Colossus/AIdata/TrivialObjectives.txt branches/parser-based-ai/Colossus/core/src/main/java/net/sf/colossus/ai/objectives/AbstractObjectiveHelper.java branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.java branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.jj branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserBoolValue_Property.java branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserConstants.java branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserIntValue_Property.java branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserTokenManager.java Modified: branches/parser-based-ai/Colossus/AIdata/TrivialObjectives.txt =================================================================== --- branches/parser-based-ai/Colossus/AIdata/TrivialObjectives.txt 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/AIdata/TrivialObjectives.txt 2010-02-24 15:14:25 UTC (rev 4734) @@ -1,3 +1,11 @@ +# Current legit properties on creatures: +# - all int and boolean field of objects from class AllYouNeedToKnowAboutYourCreature +# - all int and boolean getMethod on objects from type Creature +# note that boolean can only be used as condition & with logical operators, +# while integer can only be used for comparison to produce a boolean. +# All logical operators must use parenthesis (including NOT), but +# comparators must not use parenthesis (crappy grammar, I know). + GROUP IF (Other:Creature1.isImmediatelyUsefulKilling AND Other:Creature1.numberLeftToRecruit == 0) THEN @@ -44,6 +52,10 @@ OBJECTIVE CreatureAttackTacticalObjective(0.25, My:Creature1) EXITGROUP ENDIF + IF My:Creature1.getSkill >= 4 THEN + OBJECTIVE CreatureAttackTacticalObjective(0.05, My:Creature1) + EXITGROUP + ENDIF ENDGROUP GROUP @@ -52,4 +64,8 @@ OBJECTIVE PreserveCreatureTacticalObjective(0.05, My:Creature1) EXITGROUP ENDIF -ENDGROUP \ No newline at end of file + IF My:Creature1.isRangestriker THEN + OBJECTIVE PreserveCreatureTacticalObjective(0.02, My:Creature1) + EXITGROUP + ENDIF +ENDGROUP Modified: branches/parser-based-ai/Colossus/core/src/main/java/net/sf/colossus/ai/objectives/AbstractObjectiveHelper.java =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/java/net/sf/colossus/ai/objectives/AbstractObjectiveHelper.java 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/java/net/sf/colossus/ai/objectives/AbstractObjectiveHelper.java 2010-02-24 15:14:25 UTC (rev 4734) @@ -43,7 +43,7 @@ Legion attacker = client.getAttacker(); for (Creature lcritter : attacker.getCreatures()) { - if (!lcritter.isTitan()) + //if (!lcritter.isTitan()) { attackerToKnowledge.put(lcritter, new AllThereIsToKnowAboutYourCreature(ai, lcritter, @@ -54,7 +54,7 @@ Legion defender = client.getDefender(); for (Creature lcritter : defender.getCreatures()) { - if (!lcritter.isTitan()) + //if (!lcritter.isTitan()) { defenderToKnowledge.put(lcritter, new AllThereIsToKnowAboutYourCreature(ai, lcritter, Modified: branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.java =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.java 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.java 2010-02-24 15:14:25 UTC (rev 4734) @@ -478,11 +478,6 @@ finally { jj_save(27, xla); } } - private boolean jj_3_20() { - if (jj_scan_token(GT)) return true; - return false; - } - private boolean jj_3_19() { if (jj_scan_token(NE)) return true; return false; @@ -760,6 +755,11 @@ return false; } + private boolean jj_3_20() { + if (jj_scan_token(GT)) return true; + return false; + } + /** Generated Token Manager. */ public TacticalObjectiveParserTokenManager token_source; SimpleCharStream jj_input_stream; @@ -968,7 +968,7 @@ /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[39]; + boolean[] la1tokens = new boolean[41]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; @@ -985,7 +985,7 @@ } } } - for (int i = 0; i < 39; i++) { + for (int i = 0; i < 41; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; Modified: branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.jj =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.jj 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParser.jj 2010-02-24 15:14:25 UTC (rev 4734) @@ -48,6 +48,14 @@ PARSER_END(TacticalObjectiveParser) + + +SPECIAL_TOKEN : +{ + < #NOTNEWLINE : ~["\n","\r"] > +| < COMMENT : "#"(<NOTNEWLINE>)*"\r" | "#"(<NOTNEWLINE>)*"\n" > +} + SKIP : { " " Modified: branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserBoolValue_Property.java =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserBoolValue_Property.java 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserBoolValue_Property.java 2010-02-24 15:14:25 UTC (rev 4734) @@ -1,6 +1,7 @@ package net.sf.colossus.parser; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.Map; import java.util.logging.Logger; import net.sf.colossus.ai.objectives.AbstractObjectiveHelper.AllThereIsToKnowAboutYourCreature; @@ -29,12 +30,33 @@ { Field f = data.get(c).getClass().getField(p); return f.getBoolean(data.get(c)); + } catch (java.lang.NoSuchFieldException nsfe) + { + LOGGER.finest("No such field " + p + " in " + data.get(c) + + " (" + nsfe + ")"); + try + { + Method m = data.get(c).creature.getClass().getMethod(p); + return (boolean)(Boolean)m.invoke(data.get(c).creature); + } catch (Exception e) + { + LOGGER.severe("OUPS, no such field " + p + " in " + data.get(c) + + " (" + e + ")"); + StringBuffer buf = new StringBuffer(); + for (String n : data.keySet()) + { + buf.append("\t" + n + " --> " + data.get(n) + "\n"); + } + LOGGER.severe(buf.toString()); + return false; + } } catch (Exception e) { LOGGER.severe("OUPS, no such field " + p + " in " + data.get(c) + " (" + e + ")"); StringBuffer buf = new StringBuffer(); - for (String n : data.keySet()) { + for (String n : data.keySet()) + { buf.append("\t" + n + " --> " + data.get(n) + "\n"); } LOGGER.severe(buf.toString()); Modified: branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserConstants.java =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserConstants.java 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserConstants.java 2010-02-24 15:14:25 UTC (rev 4734) @@ -11,73 +11,77 @@ /** End of File. */ int EOF = 0; /** RegularExpression Id. */ - int LE = 5; + int NOTNEWLINE = 1; /** RegularExpression Id. */ - int EQ = 6; + int COMMENT = 2; /** RegularExpression Id. */ - int GE = 7; + int LE = 7; /** RegularExpression Id. */ - int LT = 8; + int EQ = 8; /** RegularExpression Id. */ - int NE = 9; + int GE = 9; /** RegularExpression Id. */ - int GT = 10; + int LT = 10; /** RegularExpression Id. */ - int GROUP = 11; + int NE = 11; /** RegularExpression Id. */ - int ENDGROUP = 12; + int GT = 12; /** RegularExpression Id. */ - int EXITGROUP = 13; + int GROUP = 13; /** RegularExpression Id. */ - int IF = 14; + int ENDGROUP = 14; /** RegularExpression Id. */ - int THEN = 15; + int EXITGROUP = 15; /** RegularExpression Id. */ - int ELSE = 16; + int IF = 16; /** RegularExpression Id. */ - int ENDIF = 17; + int THEN = 17; /** RegularExpression Id. */ - int AND = 18; + int ELSE = 18; /** RegularExpression Id. */ - int OR = 19; + int ENDIF = 19; /** RegularExpression Id. */ - int NOT = 20; + int AND = 20; /** RegularExpression Id. */ - int OBJECTIVE = 21; + int OR = 21; /** RegularExpression Id. */ - int OBJECTIVENAME = 22; + int NOT = 22; /** RegularExpression Id. */ - int CREATUREPROPERTY = 23; + int OBJECTIVE = 23; /** RegularExpression Id. */ - int CREATURE = 24; + int OBJECTIVENAME = 24; /** RegularExpression Id. */ - int TRUE = 25; + int CREATUREPROPERTY = 25; /** RegularExpression Id. */ - int FALSE = 26; + int CREATURE = 26; /** RegularExpression Id. */ - int NUMBER = 27; + int TRUE = 27; /** RegularExpression Id. */ - int FPNUMBER = 28; + int FALSE = 28; /** RegularExpression Id. */ - int DIGIT = 29; + int NUMBER = 29; /** RegularExpression Id. */ - int DOT = 30; + int FPNUMBER = 30; /** RegularExpression Id. */ - int CHAINE = 31; + int DIGIT = 31; /** RegularExpression Id. */ - int QUOTEDCHAINE = 32; + int DOT = 32; /** RegularExpression Id. */ - int CAR = 33; + int CHAINE = 33; /** RegularExpression Id. */ - int NUMCAR = 34; + int QUOTEDCHAINE = 34; /** RegularExpression Id. */ - int QUOTEDCAR = 35; + int CAR = 35; /** RegularExpression Id. */ - int OPENPAR = 36; + int NUMCAR = 36; /** RegularExpression Id. */ - int CLOSEPAR = 37; + int QUOTEDCAR = 37; /** RegularExpression Id. */ - int COMMA = 38; + int OPENPAR = 38; + /** RegularExpression Id. */ + int CLOSEPAR = 39; + /** RegularExpression Id. */ + int COMMA = 40; /** Lexical state. */ int DEFAULT = 0; @@ -85,6 +89,8 @@ /** Literal token values. */ String[] tokenImage = { "<EOF>", + "<NOTNEWLINE>", + "<COMMENT>", "\" \"", "\"\\r\"", "\"\\t\"", Modified: branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserIntValue_Property.java =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserIntValue_Property.java 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserIntValue_Property.java 2010-02-24 15:14:25 UTC (rev 4734) @@ -1,6 +1,7 @@ package net.sf.colossus.parser; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.Map; import java.util.logging.Logger; import net.sf.colossus.ai.objectives.AbstractObjectiveHelper.AllThereIsToKnowAboutYourCreature; @@ -29,12 +30,33 @@ { Field f = data.get(c).getClass().getField(p); return f.getInt(data.get(c)); + } catch (java.lang.NoSuchFieldException nsfe) + { + LOGGER.finest("No such field " + p + " in " + data.get(c) + + " (" + nsfe + ")"); + try + { + Method m = data.get(c).creature.getClass().getMethod(p); + return (int) (Integer) m.invoke(data.get(c).creature); + } catch (Exception e) + { + LOGGER.severe("OUPS, no such field " + p + " in " + data.get(c) + + " (" + e + ")"); + StringBuffer buf = new StringBuffer(); + for (String n : data.keySet()) + { + buf.append("\t" + n + " --> " + data.get(n) + "\n"); + } + LOGGER.severe(buf.toString()); + return -1; + } } catch (Exception e) { LOGGER.severe("OUPS, no such field " + p + " in " + data.get(c) + " (" + e + ")"); StringBuffer buf = new StringBuffer(); - for (String n : data.keySet()) { + for (String n : data.keySet()) + { buf.append("\t" + n + " --> " + data.get(n) + "\n"); } LOGGER.severe(buf.toString()); Modified: branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserTokenManager.java =================================================================== --- branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserTokenManager.java 2010-02-24 14:10:32 UTC (rev 4733) +++ branches/parser-based-ai/Colossus/core/src/main/javacc/net/sf/colossus/parser/TacticalObjectiveParserTokenManager.java 2010-02-24 15:14:25 UTC (rev 4734) @@ -16,98 +16,98 @@ switch (pos) { case 0: - if ((active0 & 0x40000000L) != 0L) - return 63; - if ((active0 & 0x617f800L) != 0L) + if ((active0 & 0x100000000L) != 0L) + return 68; + if ((active0 & 0xa00000L) != 0L) { - jjmatchedKind = 31; - return 63; + jjmatchedKind = 33; + return 58; } - if ((active0 & 0x280000L) != 0L) + if ((active0 & 0x185fe000L) != 0L) { - jjmatchedKind = 31; - return 53; + jjmatchedKind = 33; + return 68; } return -1; case 1: - if ((active0 & 0x84000L) != 0L) - return 63; - if ((active0 & 0x637b800L) != 0L) + if ((active0 & 0x18dee000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 1; - return 63; + return 68; } + if ((active0 & 0x210000L) != 0L) + return 68; return -1; case 2: - if ((active0 & 0x40000L) != 0L) - return 63; - if ((active0 & 0x623b800L) != 0L) + if ((active0 & 0x188ee000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 2; - return 63; + return 68; } + if ((active0 & 0x400000L) != 0L) + return 25; if ((active0 & 0x100000L) != 0L) - return 20; + return 68; return -1; case 3: - if ((active0 & 0x2018000L) != 0L) - return 63; - if ((active0 & 0x4221800L) != 0L) + if ((active0 & 0x10886000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 3; - return 63; + return 68; } - if ((active0 & 0x2000L) != 0L) + if ((active0 & 0x8000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 3; - return 20; + return 25; } + if ((active0 & 0x8060000L) != 0L) + return 68; return -1; case 4: - if ((active0 & 0x4020800L) != 0L) - return 63; - if ((active0 & 0x203000L) != 0L) + if ((active0 & 0x80c000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 4; - return 63; + return 68; } + if ((active0 & 0x10082000L) != 0L) + return 68; return -1; case 5: - if ((active0 & 0x200000L) != 0L) + if ((active0 & 0xc000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 5; - return 20; + return 68; } - if ((active0 & 0x3000L) != 0L) + if ((active0 & 0x800000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 5; - return 63; + return 25; } return -1; case 6: - if ((active0 & 0x203000L) != 0L) + if ((active0 & 0x80c000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 6; - return 63; + return 68; } return -1; case 7: - if ((active0 & 0x1000L) != 0L) - return 63; - if ((active0 & 0x202000L) != 0L) + if ((active0 & 0x808000L) != 0L) { - jjmatchedKind = 31; + jjmatchedKind = 33; jjmatchedPos = 7; - return 63; + return 68; } + if ((active0 & 0x4000L) != 0L) + return 68; return -1; default : return -1; @@ -128,41 +128,41 @@ switch(curChar) { case 33: - return jjMoveStringLiteralDfa1_0(0x200L); + return jjMoveStringLiteralDfa1_0(0x800L); case 40: - return jjStopAtPos(0, 36); + return jjStopAtPos(0, 38); case 41: - return jjStopAtPos(0, 37); + return jjStopAtPos(0, 39); case 44: - return jjStopAtPos(0, 38); + return jjStopAtPos(0, 40); case 46: - return jjStartNfaWithStates_0(0, 30, 63); + return jjStartNfaWithStates_0(0, 32, 68); case 60: - jjmatchedKind = 8; - return jjMoveStringLiteralDfa1_0(0x20L); + jjmatchedKind = 10; + return jjMoveStringLiteralDfa1_0(0x80L); case 61: - return jjMoveStringLiteralDfa1_0(0x40L); + return jjMoveStringLiteralDfa1_0(0x100L); case 62: - jjmatchedKind = 10; - return jjMoveStringLiteralDfa1_0(0x80L); + jjmatchedKind = 12; + return jjMoveStringLiteralDfa1_0(0x200L); case 65: - return jjMoveStringLiteralDfa1_0(0x40000L); + return jjMoveStringLiteralDfa1_0(0x100000L); case 69: - return jjMoveStringLiteralDfa1_0(0x33000L); + return jjMoveStringLiteralDfa1_0(0xcc000L); case 71: - return jjMoveStringLiteralDfa1_0(0x800L); + return jjMoveStringLiteralDfa1_0(0x2000L); case 73: - return jjMoveStringLiteralDfa1_0(0x4000L); + return jjMoveStringLiteralDfa1_0(0x10000L); case 78: - return jjMoveStringLiteralDfa1_0(0x100000L); + return jjMoveStringLiteralDfa1_0(0x400000L); case 79: - return jjMoveStringLiteralDfa1_0(0x280000L); + return jjMoveStringLiteralDfa1_0(0xa00000L); case 84: - return jjMoveStringLiteralDfa1_0(0x8000L); + return jjMoveStringLiteralDfa1_0(0x20000L); case 102: - return jjMoveStringLiteralDfa1_0(0x4000000L); + return jjMoveStringLiteralDfa1_0(0x10000000L); case 116: - return jjMoveStringLiteralDfa1_0(0x2000000L); + return jjMoveStringLiteralDfa1_0(0x8000000L); default : return jjMoveNfa_0(0, 0); } @@ -177,39 +177,39 @@ switch(curChar) { case 61: - if ((active0 & 0x20L) != 0L) - return jjStopAtPos(1, 5); - else if ((active0 & 0x40L) != 0L) - return jjStopAtPos(1, 6); - else if ((active0 & 0x80L) != 0L) + if ((active0 & 0x80L) != 0L) return jjStopAtPos(1, 7); + else if ((active0 & 0x100L) != 0L) + return jjStopAtPos(1, 8); else if ((active0 & 0x200L) != 0L) return jjStopAtPos(1, 9); + else if ((active0 & 0x800L) != 0L) + return jjStopAtPos(1, 11); break; case 66: - return jjMoveStringLiteralDfa2_0(active0, 0x200000L); + return jjMoveStringLiteralDfa2_0(active0, 0x800000L); case 70: - if ((active0 & 0x4000L) != 0L) - return jjStartNfaWithStates_0(1, 14, 63); + if ((active0 & 0x10000L) != 0L) + return jjStartNfaWithStates_0(1, 16, 68); break; case 72: - return jjMoveStringLiteralDfa2_0(active0, 0x8000L); + return jjMoveStringLiteralDfa2_0(active0, 0x20000L); case 76: - return jjMoveStringLiteralDfa2_0(active0, 0x10000L); + return jjMoveStringLiteralDfa2_0(active0, 0x40000L); case 78: - return jjMoveStringLiteralDfa2_0(active0, 0x61000L); + return jjMoveStringLiteralDfa2_0(active0, 0x184000L); case 79: - return jjMoveStringLiteralDfa2_0(active0, 0x100000L); + return jjMoveStringLiteralDfa2_0(active0, 0x400000L); case 82: - if ((active0 & 0x80000L) != 0L) - return jjStartNfaWithStates_0(1, 19, 63); - return jjMoveStringLiteralDfa2_0(active0, 0x800L); + if ((active0 & 0x200000L) != 0L) + return jjStartNfaWithStates_0(1, 21, 68); + return jjMoveStringLiteralDfa2_0(active0, 0x2000L); case 88: - return jjMoveStringLiteralDfa2_0(active0, 0x2000L); + return jjMoveStringLiteralDfa2_0(active0, 0x8000L); case 97: - return jjMoveStringLiteralDfa2_0(active0, 0x4000000L); + return jjMoveStringLiteralDfa2_0(active0, 0x10000000L); case 114: - return jjMoveStringLiteralDfa2_0(active0, 0x2000000L); + return jjMoveStringLiteralDfa2_0(active0, 0x8000000L); default : break; } @@ -227,27 +227,27 @@ switch(curChar) { case 68: - if ((active0 & 0x40000L) != 0L) - return jjStartNfaWithStates_0(2, 18, 63); - return jjMoveStringLiteralDfa3_0(active0, 0x21000L); + if ((active0 & 0x100000L) != 0L) + return jjStartNfaWithStates_0(2, 20, 68); + return jjMoveStringLiteralDfa3_0(active0, 0x84000L); case 69: + return jjMoveStringLiteralDfa3_0(active0, 0x20000L); + case 73: return jjMoveStringLiteralDfa3_0(active0, 0x8000L); - case 73: - return jjMoveStringLiteralDfa3_0(active0, 0x2000L); case 74: - return jjMoveStringLiteralDfa3_0(active0, 0x200000L); + return jjMoveStringLiteralDfa3_0(active0, 0x800000L); case 79: - return jjMoveStringLiteralDfa3_0(active0, 0x800L); + return jjMoveStringLiteralDfa3_0(active0, 0x2000L); case 83: - return jjMoveStringLiteralDfa3_0(active0, 0x10000L); + return jjMoveStringLiteralDfa3_0(active0, 0x40000L); case 84: - if ((active0 & 0x100000L) != 0L) - return jjStartNfaWithStates_0(2, 20, 20); + if ((active0 & 0x400000L) != 0L) + return jjStartNfaWithStates_0(2, 22, 25); break; case 108: - return jjMoveStringLiteralDfa3_0(active0, 0x4000000L); + return jjMoveStringLiteralDfa3_0(active0, 0x10000000L); case 117: - return jjMoveStringLiteralDfa3_0(active0, 0x2000000L); + return jjMoveStringLiteralDfa3_0(active0, 0x8000000L); default : break; } @@ -265,27 +265,27 @@ switch(curChar) { case 69: - if ((active0 & 0x10000L) != 0L) - return jjStartNfaWithStates_0(3, 16, 63); - return jjMoveStringLiteralDfa4_0(active0, 0x200000L); + if ((active0 & 0x40000L) != 0L) + return jjStartNfaWithStates_0(3, 18, 68); + return jjMoveStringLiteralDfa4_0(active0, 0x800000L); case 71: - return jjMoveStringLiteralDfa4_0(active0, 0x1000L); + return jjMoveStringLiteralDfa4_0(active0, 0x4000L); case 73: - return jjMoveStringLiteralDfa4_0(active0, 0x20000L); + return jjMoveStringLiteralDfa4_0(active0, 0x80000L); case 78: - if ((active0 & 0x8000L) != 0L) - return jjStartNfaWithStates_0(3, 15, 63); + if ((active0 & 0x20000L) != 0L) + return jjStartNfaWithStates_0(3, 17, 68); break; case 84: + return jjMoveStringLiteralDfa4_0(active0, 0x8000L); + case 85: return jjMoveStringLiteralDfa4_0(active0, 0x2000L); - case 85: - return jjMoveStringLiteralDfa4_0(active0, 0x800L); case 101: - if ((active0 & 0x2000000L) != 0L) - return jjStartNfaWithStates_0(3, 25, 63); + if ((active0 & 0x8000000L) != 0L) + return jjStartNfaWithStates_0(3, 27, 68); break; case 115: - return jjMoveStringLiteralDfa4_0(active0, 0x4000000L); + return jjMoveStringLiteralDfa4_0(active0, 0x10000000L); default : break; } @@ -303,22 +303,22 @@ switch(curChar) { case 67: - return jjMoveStringLiteralDfa5_0(active0, 0x200000L); + return jjMoveStringLiteralDfa5_0(active0, 0x800000L); case 70: - if ((active0 & 0x20000L) != 0L) - return jjStartNfaWithStates_0(4, 17, 63); + if ((active0 & 0x80000L) != 0L) + return jjStartNfaWithStates_0(4, 19, 68); break; case 71: - return jjMoveStringLiteralDfa5_0(active0, 0x2000L); + return jjMoveStringLiteralDfa5_0(active0, 0x8000L); case 80: - if ((active0 & 0x800L) != 0L) - return jjStartNfaWithStates_0(4, 11, 63); + if ((active0 & 0x2000L) != 0L) + return jjStartNfaWithStates_0(4, 13, 68); break; case 82: - return jjMoveStringLiteralDfa5_0(active0, 0x1000L); + return jjMoveStringLiteralDfa5_0(active0, 0x4000L); case 101: - if ((active0 & 0x4000000L) != 0L) - return jjStartNfaWithStates_0(4, 26, 63); + if ((active0 & 0x10000000L) != 0L) + return jjStartNfaWithStates_0(4, 28, 68); break; default : break; @@ -337,11 +337,11 @@ switch(curChar) { case 79: - return jjMoveStringLiteralDfa6_0(active0, 0x1000L); + return jjMoveStringLiteralDfa6_0(active0, 0x4000L); case 82: - return jjMoveStringLiteralDfa6_0(active0, 0x2000L); + return jjMoveStringLiteralDfa6_0(active0, 0x8000L); case 84: - return jjMoveStringLiteralDfa6_0(active0, 0x200000L); + return jjMoveStringLiteralDfa6_0(active0, 0x800000L); default : break; } @@ -359,11 +359,11 @@ switch(curChar) { case 73: - return jjMoveStringLiteralDfa7_0(active0, 0x200000L); + return jjMoveStringLiteralDfa7_0(active0, 0x800000L); case 79: - return jjMoveStringLiteralDfa7_0(active0, 0x2000L); + return jjMoveStringLiteralDfa7_0(active0, 0x8000L); case 85: - return jjMoveStringLiteralDfa7_0(active0, 0x1000L); + return jjMoveStringLiteralDfa7_0(active0, 0x4000L); default : break; } @@ -381,13 +381,13 @@ switch(curChar) { case 80: - if ((active0 & 0x1000L) != 0L) - return jjStartNfaWithStates_0(7, 12, 63); + if ((active0 & 0x4000L) != 0L) + return jjStartNfaWithStates_0(7, 14, 68); break; case 85: - return jjMoveStringLiteralDfa8_0(active0, 0x2000L); + return jjMoveStringLiteralDfa8_0(active0, 0x8000L); case 86: - return jjMoveStringLiteralDfa8_0(active0, 0x200000L); + return jjMoveStringLiteralDfa8_0(active0, 0x800000L); default : break; } @@ -405,12 +405,12 @@ switch(curChar) { case 69: - if ((active0 & 0x200000L) != 0L) - return jjStartNfaWithStates_0(8, 21, 63); + if ((active0 & 0x800000L) != 0L) + return jjStartNfaWithStates_0(8, 23, 68); break; case 80: - if ((active0 & 0x2000L) != 0L) - return jjStartNfaWithStates_0(8, 13, 63); + if ((active0 & 0x8000L) != 0L) + return jjStartNfaWithStates_0(8, 15, 68); break; default : break; @@ -425,10 +425,13 @@ catch(java.io.IOException e) { return pos + 1; } return jjMoveNfa_0(state, pos + 1); } +static final long[] jjbitVec0 = { + 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL +}; private int jjMoveNfa_0(int startState, int curPos) { int startsAt = 0; - jjnewStateCnt = 63; + jjnewStateCnt = 68; int i = 1; jjstateSet[0] = startState; int kind = 0x7fffffff; @@ -443,146 +446,168 @@ { switch(jjstateSet[--i]) { - case 63: + case 25: if ((0x3ff400000000000L & l) != 0L) { - if (kind > 31) - kind = 31; - jjCheckNAdd(22); + if (kind > 33) + kind = 33; + jjCheckNAdd(27); } if ((0x3ff400000000000L & l) != 0L) - jjCheckNAddTwoStates(4, 21); + jjCheckNAddTwoStates(9, 26); break; - case 20: + case 58: if ((0x3ff400000000000L & l) != 0L) { - if (kind > 31) - kind = 31; - jjCheckNAdd(22); + if (kind > 33) + kind = 33; + jjCheckNAdd(27); } if ((0x3ff400000000000L & l) != 0L) - jjCheckNAddTwoStates(4, 21); + jjCheckNAddTwoStates(9, 26); break; + case 68: + if ((0x3ff400000000000L & l) != 0L) + { + if (kind > 33) + kind = 33; + jjCheckNAdd(27); + } + if ((0x3ff400000000000L & l) != 0L) + jjCheckNAddTwoStates(9, 26); + break; case 0: if ((0x3ff000000000000L & l) != 0L) { - if (kind > 27) - kind = 27; + if (kind > 29) + kind = 29; jjCheckNAddStates(0, 2); } else if (curChar == 46) { - if (kind > 31) - kind = 31; + if (kind > 33) + kind = 33; jjCheckNAddStates(3, 5); } + else if (curChar == 35) + jjCheckNAddStates(6, 9); else if (curChar == 34) jjCheckNAdd(1); break; - case 53: - if ((0x3ff400000000000L & l) != 0L) - { - if (kind > 31) - kind = 31; - jjCheckNAdd(22); - } - if ((0x3ff400000000000L & l) != 0L) - jjCheckNAddTwoStates(4, 21); - break; case 1: if ((0xafffd80300000000L & l) != 0L) jjCheckNAddTwoStates(1, 2); break; case 2: - if (curChar == 34 && kind > 32) - kind = 32; + if (curChar == 34 && kind > 34) + kind = 34; break; case 3: + if (curChar == 35) + jjCheckNAddStates(6, 9); + break; + case 4: + if ((0xffffffffffffdbffL & l) != 0L) + jjCheckNAddTwoStates(4, 5); + break; + case 5: + if (curChar == 13) + kind = 2; + break; + case 6: + if ((0xffffffffffffdbffL & l) != 0L) + jjCheckNAddTwoStates(6, 7); + break; + case 7: + if (curChar == 10) + kind = 2; + break; + case 8: if (curChar != 46) break; - if (kind > 31) - kind = 31; + if (kind > 33) + kind = 33; jjCheckNAddStates(3, 5); break; - case 4: + case 9: if ((0x3ff400000000000L & l) != 0L) - jjCheckNAddTwoStates(4, 21); + jjCheckNAddTwoStates(9, 26); break; - case 22: + case 27: if ((0x3ff400000000000L & l) == 0L) break; - if (kind > 31) - kind = 31; - jjCheckNAdd(22); + if (kind > 33) + kind = 33; + jjCheckNAdd(27); break; - case 26: + case 31: if ((0x3ff000000000000L & l) != 0L) - jjAddStates(6, 7); + jjAddStates(10, 11); break; - case 27: + case 32: if (curChar == 46) - jjstateSet[jjnewStateCnt++] = 28; + jjstateSet[jjnewStateCnt++] = 33; break; - case 28: + case 33: if (curChar != 46) break; - if (kind > 23) - kind = 23; - jjCheckNAdd(29); + if (kind > 25) + kind = 25; + jjCheckNAdd(34); break; - case 29: + case 34: if ((0x3ff400000000000L & l) == 0L) break; - if (kind > 23) - kind = 23; - jjCheckNAdd(29); + if (kind > 25) + kind = 25; + jjCheckNAdd(34); break; - case 37: + case 42: if (curChar == 58) - jjstateSet[jjnewStateCnt++] = 36; + jjstateSet[jjnewStateCnt++] = 41; break; - case 40: + case 45: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 24) - kind = 24; - jjstateSet[jjnewStateCnt++] = 40; + if (kind > 26) + kind = 26; + jjstateSet[jjnewStateCnt++] = 45; break; - case 48: + case 53: if (curChar == 58) - jjstateSet[jjnewStateCnt++] = 47; + jjstateSet[jjnewStateCnt++] = 52; break; - case 58: + case 63: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 27) - kind = 27; + if (kind > 29) + kind = 29; jjCheckNAddStates(0, 2); break; - case 59: + case 64: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 27) - kind = 27; - jjCheckNAdd(59); + if (kind > 29) + kind = 29; + jjCheckNAdd(64); break; - case 60: + case 65: if ((0x3ff000000000000L & l) != 0L) - jjCheckNAddTwoStates(60, 61); + jjCheckNAddTwoStates(65, 66); break; - case 61: + case 66: if (curChar != 46) break; - if (kind > 28) - kind = 28; - jjCheckNAdd(62); + if (kind > 30) + kind = 30; + jjCheckNAdd(67); break; - case 62: + case 67: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 28) - kind = 28; - jjCheckNAdd(62); + if (kind > 30) + kind = 30; + jjCheckNAdd(67); break; default : break; } @@ -595,262 +620,268 @@ { switch(jjstateSet[--i]) { - case 63: + case 25: if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 31) - kind = 31; - jjCheckNAdd(22); + if (kind > 33) + kind = 33; + jjCheckNAdd(27); } if ((0x7fffffe87fffffeL & l) != 0L) - jjCheckNAddTwoStates(4, 21); - if (curChar == 84) - jjstateSet[jjnewStateCnt++] = 20; + jjCheckNAddTwoStates(9, 26); + if (curChar == 97) + jjstateSet[jjnewStateCnt++] = 24; + else if (curChar == 84) + jjstateSet[jjnewStateCnt++] = 25; break; - case 20: + case 58: if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 31) - kind = 31; - jjCheckNAdd(22); + if (kind > 33) + kind = 33; + jjCheckNAdd(27); } if ((0x7fffffe87fffffeL & l) != 0L) - jjCheckNAddTwoStates(4, 21); - if (curChar == 97) - jjstateSet[jjnewStateCnt++] = 19; + jjCheckNAddTwoStates(9, 26); + if (curChar == 116) + jjstateSet[jjnewStateCnt++] = 61; else if (curChar == 84) - jjstateSet[jjnewStateCnt++] = 20; + jjstateSet[jjnewStateCnt++] = 25; + if (curChar == 116) + jjstateSet[jjnewStateCnt++] = 57; break; + case 68: + if ((0x7fffffe87fffffeL & l) != 0L) + { + if (kind > 33) + kind = 33; + jjCheckNAdd(27); + } + if ((0x7fffffe87fffffeL & l) != 0L) + jjCheckNAddTwoStates(9, 26); + if (curChar == 84) + jjstateSet[jjnewStateCnt++] = 25; + break; case 0: if ((0x7fffffe87fffffeL & l) != 0L) { - if (kind > 31) - kind = 31; + if (kind > 33) + kind = 33; jjCheckNAddStates(3, 5); } if (curChar == 79) - jjAddStates(8, 9); + jjAddStates(12, 13); else if (curChar == 77) - jjAddStates(10, 11); + jjAddStates(14, 15); break; - case 53: - if ((0x7fffffe87fffffeL & l) != 0L) - { - if (kind > 31) - kind = 31; - jjCheckNAdd(22); - } - if ((0x7fffffe87fffffeL & l) != 0L) - jjCheckNAddTwoStates(4, 21); - if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 56; - else if (curChar == 84) - jjstateSet[jjnewStateCnt++] = 20; - if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 52; - break; case 1: if ((0x7fffffe87fffffeL & l) != 0L) - jjAddStates(12, 13); + jjAddStates(16, 17); break; - case 3: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 31) - kind = 31; - jjCheckNAddStates(3, 5); - break; case 4: - if ((0x7fffffe87fffffeL & l) != 0L) - jjCheckNAddTwoStates(4, 21); + jjAddStates(18, 19); break; - case 5: - if (curChar == 101 && kind > 22) - kind = 22; - break; case 6: - if (curChar == 118) - jjstateSet[jjnewStateCnt++] = 5; + jjAddStates(20, 21); break; - case 7: - if (curChar == 105) - jjstateSet[jjnewStateCnt++] = 6; - break; case 8: - if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 7; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 33) + kind = 33; + jjCheckNAddStates(3, 5); break; case 9: - if (curChar == 99) - jjstateSet[jjnewStateCnt++] = 8; + if ((0x7fffffe87fffffeL & l) != 0L) + jjCheckNAddTwoStates(9, 26); break; case 10: - if (curChar == 101) - jjstateSet[jjnewStateCnt++] = 9; + if (curChar == 101 && kind > 24) + kind = 24; break; case 11: - if (curChar == 106) + if (curChar == 118) jjstateSet[jjnewStateCnt++] = 10; break; case 12: - if (curChar == 98) + if (curChar == 105) jjstateSet[jjnewStateCnt++] = 11; break; case 13: - if (curChar == 79) + if (curChar == 116) jjstateSet[jjnewStateCnt++] = 12; break; case 14: - if (curChar == 108) + if (curChar == 99) jjstateSet[jjnewStateCnt++] = 13; break; case 15: - if (curChar == 97) + if (curChar == 101) jjstateSet[jjnewStateCnt++] = 14; break; case 16: - if (curChar == 99) + if (curChar == 106) jjstateSet[jjnewStateCnt++] = 15; break; case 17: - if (curChar == 105) + if (curChar == 98) jjstateSet[jjnewStateCnt++] = 16; break; case 18: - if (curChar == 116) + if (curChar == 79) jjstateSet[jjnewStateCnt++] = 17; break; case 19: - if (curChar == 99) + if (curChar == 108) jjstateSet[jjnewStateCnt++] = 18; break; + case 20: + if (curChar == 97) + jjstateSet[jjnewStateCnt++] = 19; + break; case 21: - if (curChar == 84) + if (curChar == 99) jjstateSet[jjnewStateCnt++] = 20; break; case 22: - if ((0x7fffffe87fffffeL & l) == 0L) - break; - if (kind > 31) - kind = 31; - jjCheckNAdd(22); + if (curChar == 105) + jjstateSet[jjnewStateCnt++] = 21; break; case 23: - if (curChar == 77) - jjAddStates(10, 11); + if (curChar == 116) + jjstateSet[jjnewStateCnt++] = 22; break; case 24: - if (curChar == 121) - jjCheckNAdd(37); + if (curChar == 99) + jjstateSet[jjnewStateCnt++] = 23; break; - case 25: - if (curChar == 101) - jjstateSet[jjnewStateCnt++] = 26; + case 26: + if (curChar == 84) + jjstateSet[jjnewStateCnt++] = 25; break; - case 28: - case 29: + case 27: if ((0x7fffffe87fffffeL & l) == 0L) break; - if (kind > 23) - kind = 23; - jjCheckNAdd(29); + if (kind > 33) + kind = 33; + jjCheckNAdd(27); break; - case 30: - if (curChar == 114) - jjstateSet[jjnewStateCnt++] = 25; + case 28: + if (curChar == 77) + jjAddStates(14, 15); break; - case 31: - if (curChar == 117) - jjstateSet[jjnewStateCnt++] = 30; + case 29: + if (curChar == 121) + jjCheckNAdd(42); break; - case 32: - if (curChar == 116) + case 30: + if (curChar == 101) jjstateSet[jjnewStateCnt++] = 31; break; case 33: - if (curChar == 97) - jjstateSet[jjnewStateCnt++] = 32; - break; case 34: - if (curChar == 101) - jjstateSet[jjnewStateCnt++] = 33; + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 25) + kind = 25; + jjCheckNAdd(34); break; case 35: if (curChar == 114) - jjstateSet[jjnewStateCnt++] = 34; + jjstateSet[jjnewStateCnt++] = 30; break; case 36: - if (curChar == 67) + if (curChar == 117) jjstateSet[jjnewStateCnt++] = 35; break; + case 37: + if (curChar == 116) + jjstateSet[jjnewStateCnt++] = 36; + break; case 38: - if (curChar == 121) - jjCheckNAdd(48); + if (curChar == 97) + jjstateSet[jjnewStateCnt++] = 37; break; case 39: if (curChar == 101) - jjstateSet[jjnewStateCnt++] = 40; + jjstateSet[jjnewStateCnt++] = 38; break; - case 41: + case 40: if (curChar == 114) jjstateSet[jjnewStateCnt++] = 39; break; - case 42: - if (curChar == 117) - jjstateSet[jjnewStateCnt++] = 41; + case 41: + if (curChar == 67) + jjstateSet[jjnewStateCnt++] = 40; break; case 43: - if (curChar == 116) - jjstateSet[jjnewStateCnt++] = 42; + if (curChar == 121) + jjCheckNAdd(53); break; case 44: - if (curChar == 97) - jjstateSet[jjnewStateCnt++] = 43; - break; - case 45: if (curChar == 101) - jjstateSet[jjnewStateCnt++] = 44; + jjstateSet[jjnewStateCnt++] = 45; break; case 46: if (curChar == 114) - jjstateSet[jjnewStateCnt++] = 45; + jjstateSet[jjnewStateCnt++] = 44; break; case 47: - if (curChar == 67) + if (curChar == 117) jjstateSet[jjnewStateCnt++] = 46; break; + case 48: + if (curChar == 116) + jjstateSet[jjnewStateCnt++] = 47; + break; case 49: - if (curChar == 79) - jjAddStates(8, 9); + if (curChar == 97) + jjstateSet[jjnewStateCnt++] = 48; break; case 50: - if (curChar == 114) - jjCheckNAdd(37); + if (curChar == 101) + jjstateSet[jjnewStateCnt++] = 49; break; case 51: - if (curChar == 101) + if (curChar == 114) jjstateSet[jjnewStateCnt++] = 50; break; case 52: - if (curChar == 104) + if (curChar == 67) jjstateSet[jjnewStateCnt++] = 51; break; case 54: - if (curChar == 114) - jjCheckNAdd(48); + if (curChar == 79) + jjAddStates(12, 13); break; case 55: - if (curChar == 101) - jjstateSet[jjnewStateCnt++] = 54; + if (curChar == 114) + jjCheckNAdd(42); break; case 56: - if (curChar == 104) + if (curChar == 101) jjstateSet[jjnewStateCnt++] = 55; break; case 57: - if (curChar == 116) + if (curChar == 104) jjstateSet[jjnewStateCnt++] = 56; break; + case 59: + if (curChar == 114) + jjCheckNAdd(53); + break; + case 60: + if (curChar == 101) + jjstateSet[jjnewStateCnt++] = 59; + break; + case 61: + if (curChar == 104) + jjstateSet[jjnewStateCnt++] = 60; + break; + case 62: + if (curChar == 116) + jjstateSet[jjnewStateCnt++] = 61; + break; default : break; } } while(i != startsAt); @@ -863,6 +894,14 @@ { switch(jjstateSet[--i]) { + case 4: + if ((jjbitVec0[i2] & l2) != 0L) + jjAddStates(18, 19); + break; + case 6: + if ((jjbitVec0[i2] & l2) != 0L) + jjAddStates(20, 21); + break; default : break; } } while(i != startsAt); @@ -874,20 +913,21 @@ kind = 0x7fffffff; } ++curPos; - if ((i = jjnewStateCnt) == (startsAt = 63 - (jjnewStateCnt = startsAt))) + if ((i = jjnewStateCnt) == (startsAt = 68 - (jjnewStateCnt = startsAt))) return curPos; try { curChar = input_stream.readChar(); } catch(java.io.IOException e) { return curPos; } } } static final int[] jjnextStates = { - 59, 60, 61, 4, 21, 22, 26, 27, 53, 57, 24, 38, 1, 2, + 64, 65, 66, 9, 26, 27, 4, 5, 6, 7, 31, 32, 58, 62, 29, 43, + 1, 2, 4, 5, 6, 7, }; /** Token literal values. */ public static final String[] jjstrLiteralImages = { -"", null, null, null, null, "\74\75", "\75\75", "\76\75", "\74", "\41\75", -"\76", "\107\122\117\125\120", "\105\116\104\107\122\117\125\120", +"", null, null, null, null, null, null, "\74\75", "\75\75", "\76\75", "\74", +"\41\75", "\76", "\107\122\117\125\120", "\105\116\104\107\122\117\125\120", "\105\130\111\124\107\122\117\125\120", "\111\106", "\124\110\105\116", "\105\114\123\105", "\105\116\104\111\106", "\101\116\104", "\117\122", "\116\117\124", "\117\102\112\105\103\124\111\126\105", null, null, null, "\164\162\165\145", "\146\141\154\163\145", null, null, null, "\56", null, @@ -898,14 +938,17 @@ "DEFAULT", }; static final long[] jjtoToken = { - 0x71dfffffe1L, + 0x1c77fffff81L, }; static final long[] jjtoSkip = { - 0x1eL, + 0x7cL, }; +static final long[] jjtoSpecial = { + 0x4L, +}; protected SimpleCharStream input_stream; -private final int[] jjrounds = new int[63]; -private final int[] jjstateSet = new int[126]; +private final int[] jjrounds = new int[68]; +private final int[] jjstateSet = new int[136]; protected char curChar; /** Constructor. */ public TacticalObjectiveParserTokenManager(SimpleCharStream stream){ @@ -932,7 +975,7 @@ { int i; jjround = 0x80000001; - for (i = 63; i-- > 0;) + for (i = 68; i-- > 0;) jjrounds[i] = 0x80000000; } @@ -986,6 +1029,7 @@ /** Get the next Token. */ public Token getNextToken() { + Token specialToken = null; Token matchedToken; int curPos = 0; @@ -1000,6 +1044,7 @@ { jjmatchedKind = 0; matchedToken = jjFillToken(); + matchedToken.specialToken = specialToken; return matchedToken; } @@ -1018,10 +1063,22 @@ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) { matchedToken = jjFillToken(); + matchedToken.specialToken = specialToken; return matchedToken; } else { + if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + if (specialToken == null) + specialToken = matchedToken; + else + { + matchedToken.specialToken = specialToken; + specialToken = (specialToken.next = matchedToken); + } + } continue EOFLoop; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |