// ** This class was generated with DemFGen (vers:10/30/2008) options{ STATIC = false; } PARSER_BEGIN(TheParser) package gen; import edu.neu.ccs.demeterf.demfgen.lib.*; import edu.neu.ccs.demeterf.*; 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 Cd_graph parse_Cd_graph():{ Adj first; Adj_list rest; }{ first = parse_Adj() rest = parse_Adj_list() { return new Cd_graph(first,rest); } } public Adj parse_Adj():{ Vertex vertex; Neighbors ns; }{ "type" vertex = parse_Vertex() ns = parse_Neighbors() "end" { return new Adj(vertex,ns); } } public Neighbors parse_Neighbors():{ Neighbors sup = null; }{ ( sup = parse_Product() { return sup; } | sup = parse_Sum() { return sup; } ) } public Product parse_Product():{ Any_vertex_list c_ns; }{ "product" c_ns = parse_Any_vertex_list() { return new Product(c_ns); } } public Sum parse_Sum():{ Vertex first; Vertex second; }{ "sum" first = parse_Vertex() "|" second = parse_Vertex() { return new Sum(first,second); } } public Any_vertex parse_Any_vertex():{ Any_vertex sup = null; }{ ( sup = parse_Labeled_vertex() { return sup; } | sup = parse_Syntax_vertex() { return sup; } ) } public Syntax_vertex parse_Syntax_vertex():{ String string; }{ string = parse_String() { return new Syntax_vertex(string); } } public Labeled_vertex parse_Labeled_vertex():{ ident label_name; Vertex class_name; }{ "<" label_name = parse_ident() ">" class_name = parse_Vertex() { return new Labeled_vertex(label_name,class_name); } } public Adj_list parse_Adj_list():{ Adj_list sup = null; }{ ( sup = parse_Cd_graph() { return sup; } | sup = parse_Empty_cd_graph() { return sup; } ) } public Any_vertex_list parse_Any_vertex_list():{ Any_vertex_list sup = null; }{ ( sup = parse_Nany_vertex_list() { return sup; } | sup = parse_Empty_vl() { return sup; } ) } public Nany_vertex_list parse_Nany_vertex_list():{ Any_vertex first; Any_vertex_list rest; }{ first = parse_Any_vertex() rest = parse_Any_vertex_list() { return new Nany_vertex_list(first,rest); } } public Empty_vl parse_Empty_vl():{ }{ { return new Empty_vl(); } } public Empty_cd_graph parse_Empty_cd_graph():{ }{ { return new Empty_cd_graph(); } } public Vertex parse_Vertex():{ ident name; }{ name = parse_ident() { return new Vertex(name); } } 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"] ) ) ) "\'" > }