// ** This class was generated with DemFGen (vers:06/04/2009) options{ STATIC = false; } PARSER_BEGIN(TheParser) package gen; import edu.neu.ccs.demeterf.demfgen.lib.*; import edu.neu.ccs.demeterf.demfgen.lib.*; import edu.neu.ccs.demeterf.demfgen.lib.*; import edu.neu.ccs.demeterf.demfgen.lib.*; import edu.neu.ccs.demeterf.control.Fields; import edu.neu.ccs.demeterf.demfgen.lib.ident; import edu.neu.ccs.demeterf.demfgen.lib.verbatim; class TheParser{ static char unescapeChar(String s){ s = s.substring(1,s.length()-1); char c = s.charAt(0); if (c == '\\'){ switch (s.charAt(1)) { case 'n': return '\n'; case 't': return '\t'; case 'b': return '\b'; case 'r': return '\r'; case 'f': return '\f'; case '\\': return '\\'; case '\'': return '\''; case '\"': return '\"'; default: return (char)Integer.parseInt(s.substring(1, s.length()), 8); } } return c; } } PARSER_END(TheParser) byte parse_byte():{ int i; }{ i = parse_int() { return (byte)i; } } Byte parse_Byte():{ byte b; }{ b = parse_byte() { return b; } } short parse_short():{ int i; }{ i = parse_int() { return (short)i; } } Short parse_Short():{ short s; }{ s = parse_short() { return s; } } int parse_int():{ Token t; }{ t = { return Integer.parseInt(t.image); } } Integer parse_Integer():{ int i; }{ i = parse_int() { return i; } } long parse_long():{ Token t; }{ t = { return Long.parseLong(t.image); } } Long parse_Long():{ long l; }{ l = parse_long() { return l; } } double parse_double():{ Token t; }{ t = { return Double.parseDouble(t.image); } } Double parse_Double():{ double d; }{ d = parse_double() { return d; } } float parse_float():{ Token t; }{ t = { return Float.parseFloat(t.image); } } Float parse_Float():{ float f; }{ f = parse_float() { return f; } } String parse_String():{ Token t; }{ t = { return t.image.substring(1,t.image.length()-1); } } boolean parse_boolean():{ Token t; }{ t = { return true; } | t = { return false; } } Boolean parse_Boolean():{ boolean b; }{ b = parse_boolean() { return b; } } char parse_char():{ Token t; }{ t = { return unescapeChar(t.image); } } Character parse_Character():{ char c; }{ c = parse_char() { return c; } } ident parse_ident():{ Token t; }{ t = { return new ident(t.image); } } verbatim parse_verbatim():{ Token t; }{ t = { return new verbatim(t.image.substring(2,t.image.length()-2)); } } public Type parse_Type():{ Kind kind; List instances; }{ "type" kind = parse_Kind() "[" instances = parse_List$TypeInstance$() "]" { return new Type(kind,instances); } } public Kind parse_Kind():{ Kind sup = null; }{ ( sup = parse_Classic() { return sup; } | sup = parse_Secret() { return sup; } ) } public Classic parse_Classic():{ }{ "classic" { return new Classic(); } } public Secret parse_Secret():{ }{ "secret" { return new Secret(); } } public TypeInstance parse_TypeInstance():{ RelationNr r; }{ r = parse_RelationNr() { return new TypeInstance(r); } } public Solution parse_Solution():{ Assignment assignment; }{ "(assignment:" assignment = parse_Assignment() ")" { return new Solution(assignment); } } public ChallengeInstance parse_ChallengeInstance():{ List cs; Option secret; }{ cs = parse_List$Constraint$() secret = parse_Option$SecretOfChallenge$() { return new ChallengeInstance(cs,secret); } } public SecretOfChallenge parse_SecretOfChallenge():{ Option assign; Quality quality; }{ assign = parse_Option$Assignment$() quality = parse_Quality() { return new SecretOfChallenge(assign,quality); } } public Constraint parse_Constraint():{ Weight w; RelationNr r; List vs; }{ w = parse_Weight() r = parse_RelationNr() vs = parse_List$Variable$() { return new Constraint(w,r,vs); } } public Weight parse_Weight():{ int v; }{ v = parse_int() ":" { return new Weight(v); } } public RelationNr parse_RelationNr():{ int v; }{ v = parse_int() { return new RelationNr(v); } } public Variable parse_Variable():{ ident v; }{ v = parse_ident() { return new Variable(v); } } public Predicate parse_Predicate():{ List pred; }{ pred = parse_List$RelationNr$() { return new Predicate(pred); } } public Assignment parse_Assignment():{ List literals; }{ "[" literals = parse_List$Literal$() "]" { return new Assignment(literals); } } public Literal parse_Literal():{ Sign value; Variable var; }{ value = parse_Sign() var = parse_Variable() { return new Literal(value,var); } } public Sign parse_Sign():{ Sign sup = null; }{ ( sup = parse_Neg() { return sup; } | sup = parse_Pos() { return sup; } ) } public Pos parse_Pos():{ }{ { return new Pos(); } } public Neg parse_Neg():{ }{ "!" { return new Neg(); } } public Price parse_Price():{ double val; }{ val = parse_double() { return new Price(val); } } public Quality parse_Quality():{ double val; }{ val = parse_double() { return new Quality(val); } } public PlayerID parse_PlayerID():{ int id; }{ id = parse_int() { return new PlayerID(id); } } public Player parse_Player():{ PlayerID id; String name; }{ "player" id = parse_PlayerID() name = parse_String() { return new Player(id,name); } } public Challenge parse_Challenge():{ String name; PlayerID seller; Option optbuyer; Price price; Type type; Option optraw; Option optfinished; }{ "challenge[" name = parse_String() seller = parse_PlayerID() optbuyer = parse_Option$PlayerID$() price = parse_Price() type = parse_Type() optraw = parse_Option$ChallengeInstance$() optfinished = parse_Option$Solution$() "]" { return new Challenge(name,seller,optbuyer,price,type,optraw,optfinished); } } public History parse_History():{ List rounds; }{ "history[" rounds = parse_List$Round$() "]" { return new History(rounds); } } public Round parse_Round():{ int num; List ptransactions; }{ "round" num = parse_int() "[" ptransactions = parse_List$PlayerTransaction$() "]" { return new Round(num,ptransactions); } } public PlayerTransaction parse_PlayerTransaction():{ Player player; List transactions; }{ "ptrans[" player = parse_Player() transactions = parse_List$Transaction$() "]" { return new PlayerTransaction(player,transactions); } } public Transaction parse_Transaction():{ TransactionType ttype; Challenge deriv; }{ "trans[" ttype = parse_TransactionType() deriv = parse_Challenge() "]" { return new Transaction(ttype,deriv); } } public TransactionType parse_TransactionType():{ TransactionType sup = null; }{ ( sup = parse_Buy() { return sup; } | sup = parse_Create() { return sup; } | sup = parse_Reoffer() { return sup; } | sup = parse_Deliver() { return sup; } | sup = parse_Finish() { return sup; } ) } public Buy parse_Buy():{ }{ "BUY" { return new Buy(); } } public Create parse_Create():{ }{ "CREATE" { return new Create(); } } public Reoffer parse_Reoffer():{ }{ "REOFFER" { return new Reoffer(); } } public Deliver parse_Deliver():{ }{ "DELIVER" { return new Deliver(); } } public Finish parse_Finish():{ }{ "FINISH" { return new Finish(); } } public Players parse_Players():{ List players; }{ "players[" players = parse_List$Player$() "]" { return new Players(players); } } public Accounts parse_Accounts():{ List> accounts; }{ "accounts[" accounts = parse_List$Pair$PlayerID$Double$$() "]" { return new Accounts(accounts); } } public Store parse_Store():{ List> stores; }{ "store[" stores = parse_List$Pair$PlayerID$PlayerStore$$() "]" { return new Store(stores); } } public PlayerStore parse_PlayerStore():{ List forSale; List bought; }{ "pstore" "forsale" forSale = parse_List$Challenge$() "bought" bought = parse_List$Challenge$() { return new PlayerStore(forSale,bought); } } public Config parse_Config():{ double Money; int Rounds; int Time; double MPD; int MaxCreates; int MaxRawMaterialLen; }{ "Money:" Money = parse_double() "Rounds:" Rounds = parse_int() "Time:" Time = parse_int() "MinPriceDecrement:" MPD = parse_double() "MaxCreates:" MaxCreates = parse_int() "MaxRawMaterialLen:" MaxRawMaterialLen = parse_int() { return new Config(Money,Rounds,Time,MPD,MaxCreates,MaxRawMaterialLen); } } public List parse_List$Challenge$():{ List sup = null; }{ ( sup = parse_Cons$Challenge$() { return sup; } | sup = parse_Empty$Challenge$() { return sup; } ) } public Empty parse_Empty$Challenge$():{ }{ { return new Empty(); } } public Cons parse_Cons$Challenge$():{ Challenge first; List rest; }{ first = parse_Challenge() rest = parse_List$Challenge$() { return new Cons(first,rest); } } public List> parse_List$Pair$PlayerID$PlayerStore$$():{ List> sup = null; }{ ( sup = parse_Cons$Pair$PlayerID$PlayerStore$$() { return sup; } | sup = parse_Empty$Pair$PlayerID$PlayerStore$$() { return sup; } ) } public Empty> parse_Empty$Pair$PlayerID$PlayerStore$$():{ }{ { return new Empty>(); } } public Cons> parse_Cons$Pair$PlayerID$PlayerStore$$():{ Pair first; List> rest; }{ first = parse_Pair$PlayerID$PlayerStore$() rest = parse_List$Pair$PlayerID$PlayerStore$$() { return new Cons>(first,rest); } } public Pair parse_Pair$PlayerID$PlayerStore$():{ PlayerID a; PlayerStore b; }{ a = parse_PlayerID() b = parse_PlayerStore() { return new Pair(a,b); } } public List> parse_List$Pair$PlayerID$Double$$():{ List> sup = null; }{ ( sup = parse_Cons$Pair$PlayerID$Double$$() { return sup; } | sup = parse_Empty$Pair$PlayerID$Double$$() { return sup; } ) } public Empty> parse_Empty$Pair$PlayerID$Double$$():{ }{ { return new Empty>(); } } public Cons> parse_Cons$Pair$PlayerID$Double$$():{ Pair first; List> rest; }{ first = parse_Pair$PlayerID$Double$() rest = parse_List$Pair$PlayerID$Double$$() { return new Cons>(first,rest); } } public Pair parse_Pair$PlayerID$Double$():{ PlayerID a; Double b; }{ a = parse_PlayerID() b = parse_Double() { return new Pair(a,b); } } public List parse_List$Player$():{ List sup = null; }{ ( sup = parse_Cons$Player$() { return sup; } | sup = parse_Empty$Player$() { return sup; } ) } public Empty parse_Empty$Player$():{ }{ { return new Empty(); } } public Cons parse_Cons$Player$():{ Player first; List rest; }{ first = parse_Player() rest = parse_List$Player$() { return new Cons(first,rest); } } public List parse_List$Transaction$():{ List sup = null; }{ ( sup = parse_Cons$Transaction$() { return sup; } | sup = parse_Empty$Transaction$() { return sup; } ) } public Empty parse_Empty$Transaction$():{ }{ { return new Empty(); } } public Cons parse_Cons$Transaction$():{ Transaction first; List rest; }{ first = parse_Transaction() rest = parse_List$Transaction$() { return new Cons(first,rest); } } public List parse_List$PlayerTransaction$():{ List sup = null; }{ ( sup = parse_Cons$PlayerTransaction$() { return sup; } | sup = parse_Empty$PlayerTransaction$() { return sup; } ) } public Empty parse_Empty$PlayerTransaction$():{ }{ { return new Empty(); } } public Cons parse_Cons$PlayerTransaction$():{ PlayerTransaction first; List rest; }{ first = parse_PlayerTransaction() rest = parse_List$PlayerTransaction$() { return new Cons(first,rest); } } public List parse_List$Round$():{ List sup = null; }{ ( sup = parse_Cons$Round$() { return sup; } | sup = parse_Empty$Round$() { return sup; } ) } public Empty parse_Empty$Round$():{ }{ { return new Empty(); } } public Cons parse_Cons$Round$():{ Round first; List rest; }{ first = parse_Round() rest = parse_List$Round$() { return new Cons(first,rest); } } public Option parse_Option$Solution$():{ Option sup = null; }{ ( sup = parse_Some$Solution$() { return sup; } | sup = parse_None$Solution$() { return sup; } ) } public None parse_None$Solution$():{ }{ { return new None(); } } public Some parse_Some$Solution$():{ Solution just; }{ just = parse_Solution() { return new Some(just); } } public Option parse_Option$ChallengeInstance$():{ Option sup = null; }{ ( sup = parse_Some$ChallengeInstance$() { return sup; } | sup = parse_None$ChallengeInstance$() { return sup; } ) } public None parse_None$ChallengeInstance$():{ }{ { return new None(); } } public Some parse_Some$ChallengeInstance$():{ ChallengeInstance just; }{ just = parse_ChallengeInstance() { return new Some(just); } } public Option parse_Option$PlayerID$():{ Option sup = null; }{ ( sup = parse_Some$PlayerID$() { return sup; } | sup = parse_None$PlayerID$() { return sup; } ) } public None parse_None$PlayerID$():{ }{ { return new None(); } } public Some parse_Some$PlayerID$():{ PlayerID just; }{ just = parse_PlayerID() { return new Some(just); } } public List parse_List$Literal$():{ List sup = null; }{ ( sup = parse_Cons$Literal$() { return sup; } | sup = parse_Empty$Literal$() { return sup; } ) } public Empty parse_Empty$Literal$():{ }{ { return new Empty(); } } public Cons parse_Cons$Literal$():{ Literal first; List rest; }{ first = parse_Literal() rest = parse_List$Literal$() { return new Cons(first,rest); } } public List parse_List$RelationNr$():{ List sup = null; }{ ( sup = parse_Cons$RelationNr$() { return sup; } | sup = parse_Empty$RelationNr$() { return sup; } ) } public Empty parse_Empty$RelationNr$():{ }{ { return new Empty(); } } public Cons parse_Cons$RelationNr$():{ RelationNr first; List rest; }{ first = parse_RelationNr() rest = parse_List$RelationNr$() { return new Cons(first,rest); } } public List parse_List$Variable$():{ List sup = null; }{ ( sup = parse_Cons$Variable$() { return sup; } | sup = parse_Empty$Variable$() { return sup; } ) } public Empty parse_Empty$Variable$():{ }{ { return new Empty(); } } public Cons parse_Cons$Variable$():{ Variable first; List rest; }{ first = parse_Variable() rest = parse_List$Variable$() { return new Cons(first,rest); } } public Option parse_Option$Assignment$():{ Option sup = null; }{ ( sup = parse_Some$Assignment$() { return sup; } | sup = parse_None$Assignment$() { return sup; } ) } public None parse_None$Assignment$():{ }{ { return new None(); } } public Some parse_Some$Assignment$():{ Assignment just; }{ just = parse_Assignment() { return new Some(just); } } public Option parse_Option$SecretOfChallenge$():{ Option sup = null; }{ ( sup = parse_Some$SecretOfChallenge$() { return sup; } | sup = parse_None$SecretOfChallenge$() { return sup; } ) } public None parse_None$SecretOfChallenge$():{ }{ { return new None(); } } public Some parse_Some$SecretOfChallenge$():{ SecretOfChallenge just; }{ just = parse_SecretOfChallenge() { return new Some(just); } } public List parse_List$Constraint$():{ List sup = null; }{ ( sup = parse_Cons$Constraint$() { return sup; } | sup = parse_Empty$Constraint$() { return sup; } ) } public Empty parse_Empty$Constraint$():{ }{ { return new Empty(); } } public Cons parse_Cons$Constraint$():{ Constraint first; List rest; }{ first = parse_Constraint() rest = parse_List$Constraint$() { return new Cons(first,rest); } } public List parse_List$TypeInstance$():{ List sup = null; }{ ( sup = parse_Cons$TypeInstance$() { return sup; } | sup = parse_Empty$TypeInstance$() { return sup; } ) } public Empty parse_Empty$TypeInstance$():{ }{ { return new Empty(); } } public Cons parse_Cons$TypeInstance$():{ TypeInstance first; List rest; }{ first = parse_TypeInstance() rest = parse_List$TypeInstance$() { return new Cons(first,rest); } } SKIP : { " " | "\t" | "\n" | "\r" | "\r\n" } SKIP : { <"//" (~["\n","\r"])* ("\n"|"\r\n")> } SKIP : { <"/*" (~["*"])* "*" (~["/"] (~["*"])* "*")* "/">} TOKEN: { < INT : ("+" | "-")?(["0"-"9"])+ > } TOKEN: { < STRING : "\"" (~["\""])* "\"" > } TOKEN: { < TRUE : "true" > } TOKEN: { < FALSE : "false" > } TOKEN: { < DOUBLE : ("-")?(["0"-"9"])+ "." (["0"-"9"])+ | "." (["0"-"9"])+ > } TOKEN: { < IDENT : ["a"-"z","A"-"Z","$","_"] (["a"-"z","A"-"Z","0"-"9","_","$"])* > } TOKEN: { < TEXT : ( "{{" (~["}"])* ( "}" ~["}"] (~["}"])* )* "}}" ) > } TOKEN: { < CHAR: "\'" ( (~["\'","\\","\n","\r"]) | ("\\" ( ["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] ( ["0"-"7"] )? | ["0"-"3"] ["0"-"7"] ["0"-"7"] ) ) ) "\'" > }