options { STATIC = false; JAVA_UNICODE_ESCAPE = true; } PARSER_BEGIN(Parser) import edu.neu.ccs.demeter.*; public class Parser { // oit is uugly. Why isn't there a Character.valueOf(String)? static char unescapifyChar(String s) { char c = s.charAt(0); if (c == '\\') { switch (s.charAt(1)) { case 'n': c = '\n'; break; case 't': c = '\t'; break; case 'b': c = '\b'; break; case 'r': c = '\r'; break; case 'f': c = '\f'; break; case '\\': c = '\\'; break; case '\'': c = '\''; break; case '\"': c = '\"'; break; default: c = (char) Integer.parseInt(s.substring(1, s.length()), 8); break; } } return c; } // Even uglier... static String unescapify(String s) { char str[] = new char[s.length()]; int i = 0, o = 0; while (i < s.length()) { char c = s.charAt(i++); if (c == '\\') { int j = i + 1; while (j < s.length() && Character.digit(s.charAt(j), 8) != -1) { j++; } c = unescapifyChar(s.substring(i-1, j)); i = j; } str[o++] = c; } return String.valueOf(str, 0, o); } } PARSER_END(Parser) Instance _Instance() : { Instance it = null; PresentationXMLElement _presentation; DomainsXMLElement _domains; VariablesXMLElement _variables; RelationsXMLElement _relations; ConstraintsXMLElement _constraints; } { { it=new Instance(); } "<" "instance" ">" _presentation=_PresentationXMLElement() { it.set_presentation(_presentation); } [ _domains=_DomainsXMLElement() { it.set_domains(_domains); } ] _variables=_VariablesXMLElement() { it.set_variables(_variables); } _relations=_RelationsXMLElement() { it.set_relations(_relations); } _constraints=_ConstraintsXMLElement() { it.set_constraints(_constraints); } "<" "/" "instance" ">" { return it; } } PresentationXMLAttribute _PresentationXMLAttribute() : { PresentationXMLAttribute it = null; } { ( it=_PresentationNameAttribute() | it=_PresentationMaxConstraintArityAttribute() | it=_PresentationNbSolutionAttribute() | it=_PresentationSolutionAttribute() | it=_PresentationMaxSatisfiableConstraintsAttribute() | it=_PresentationFormatAttribute() ) { return it; } } void common_PresentationXMLAttribute(PresentationXMLAttribute it) : { } { { } } PresentationNameAttribute _PresentationNameAttribute() : { PresentationNameAttribute it = null; String _name; } { { it=new PresentationNameAttribute(); } "name" "=" _name=_String() { it.set_name(_name); } common_PresentationXMLAttribute(it) { return it; } } PresentationMaxConstraintArityAttribute _PresentationMaxConstraintArityAttribute() : { PresentationMaxConstraintArityAttribute it = null; String _maxConstraintArity; } { { it=new PresentationMaxConstraintArityAttribute(); } "maxConstraintArity" "=" _maxConstraintArity=_String() { it.set_maxConstraintArity(_maxConstraintArity); } common_PresentationXMLAttribute(it) { return it; } } PresentationNbSolutionAttribute _PresentationNbSolutionAttribute() : { PresentationNbSolutionAttribute it = null; String _nbSolutions; } { { it=new PresentationNbSolutionAttribute(); } "nbSolutions" "=" _nbSolutions=_String() { it.set_nbSolutions(_nbSolutions); } common_PresentationXMLAttribute(it) { return it; } } PresentationSolutionAttribute _PresentationSolutionAttribute() : { PresentationSolutionAttribute it = null; String _solution; } { { it=new PresentationSolutionAttribute(); } "solution" "=" _solution=_String() { it.set_solution(_solution); } common_PresentationXMLAttribute(it) { return it; } } PresentationMaxSatisfiableConstraintsAttribute _PresentationMaxSatisfiableConstraintsAttribute() : { PresentationMaxSatisfiableConstraintsAttribute it = null; String _maxSatisfiableConstraints; } { { it=new PresentationMaxSatisfiableConstraintsAttribute(); } "maxSatisfiableConstraints" "=" _maxSatisfiableConstraints=_String() { it.set_maxSatisfiableConstraints(_maxSatisfiableConstraints); } common_PresentationXMLAttribute(it) { return it; } } PresentationFormatAttribute _PresentationFormatAttribute() : { PresentationFormatAttribute it = null; String _format; } { { it=new PresentationFormatAttribute(); } "format" "=" _format=_String() { it.set_format(_format); } common_PresentationXMLAttribute(it) { return it; } } PresentationXMLAttributeList _PresentationXMLAttributeList() : { PresentationXMLAttributeList it = null; PresentationXMLAttribute_List _presentationxmlattribute_list; } { { it=new PresentationXMLAttributeList(); } _presentationxmlattribute_list=_PresentationXMLAttribute_List() { it.set_presentationxmlattribute_list(_presentationxmlattribute_list); } { return it; } } PresentationXMLElement _PresentationXMLElement() : { PresentationXMLElement it = null; PresentationXMLAttributeList _presentationxmlattributelist; } { { it=new PresentationXMLElement(); } "<" "presentation" _presentationxmlattributelist=_PresentationXMLAttributeList() { it.set_presentationxmlattributelist(_presentationxmlattributelist); } "/" ">" { return it; } } DomainNameAttribute _DomainNameAttribute() : { DomainNameAttribute it = null; String _name; } { { it=new DomainNameAttribute(); } "name" "=" _name=_String() { it.set_name(_name); } { return it; } } DomainNbValuesAttribute _DomainNbValuesAttribute() : { DomainNbValuesAttribute it = null; String _nbValues; } { { it=new DomainNbValuesAttribute(); } "nbValues" "=" _nbValues=_String() { it.set_nbValues(_nbValues); } { return it; } } DomainExp _DomainExp() : { DomainExp it = null; } { ( it=_Num() | it=_Dot() ) { return it; } } void common_DomainExp(DomainExp it) : { } { { } } Num _Num() : { Num it = null; int _v; } { { it=new Num(); } _v=_int() { it.set_v(_v); } common_DomainExp(it) { return it; } } Dot _Dot() : { Dot it = null; } { { it=new Dot(); } ".." common_DomainExp(it) { return it; } } DomainXMLElement _DomainXMLElement() : { DomainXMLElement it = null; DomainNameAttribute _domainnameattribute; DomainNbValuesAttribute _domainnbvaluesattribute; DomainExp_List _domainexp_list; } { { it=new DomainXMLElement(); } "domain" [ _domainnameattribute=_DomainNameAttribute() { it.set_domainnameattribute(_domainnameattribute); } ] _domainnbvaluesattribute=_DomainNbValuesAttribute() { it.set_domainnbvaluesattribute(_domainnbvaluesattribute); } ">" _domainexp_list=_DomainExp_List() { it.set_domainexp_list(_domainexp_list); } "<" "/" "domain" ">" "<" { return it; } } DomainsNbDomainsAttribute _DomainsNbDomainsAttribute() : { DomainsNbDomainsAttribute it = null; String _nbDomains; } { { it=new DomainsNbDomainsAttribute(); } "nbDomains" "=" _nbDomains=_String() { it.set_nbDomains(_nbDomains); } { return it; } } DomainsXMLElement _DomainsXMLElement() : { DomainsXMLElement it = null; DomainsNbDomainsAttribute _domainsnbdomainsattribute; DomainXMLElement_List _domainxmlelement_list; } { { it=new DomainsXMLElement(); } "" "<" _domainxmlelement_list=_DomainXMLElement_List() { it.set_domainxmlelement_list(_domainxmlelement_list); } "/" "domains" ">" { return it; } } variableNameAttribute _variableNameAttribute() : { variableNameAttribute it = null; String _name; } { { it=new variableNameAttribute(); } "name" "=" _name=_String() { it.set_name(_name); } { return it; } } variableDomainAttribute _variableDomainAttribute() : { variableDomainAttribute it = null; String _domain; } { { it=new variableDomainAttribute(); } "domain" "=" _domain=_String() { it.set_domain(_domain); } { return it; } } VariableXMLElement _VariableXMLElement() : { VariableXMLElement it = null; variableNameAttribute _variablenameattribute; variableDomainAttribute _variabledomainattribute; } { { it=new VariableXMLElement(); } "variable" _variablenameattribute=_variableNameAttribute() { it.set_variablenameattribute(_variablenameattribute); } _variabledomainattribute=_variableDomainAttribute() { it.set_variabledomainattribute(_variabledomainattribute); } "/" ">" "<" { return it; } } VariablesNbVariablesAttribute _VariablesNbVariablesAttribute() : { VariablesNbVariablesAttribute it = null; String _nbVariables; } { { it=new VariablesNbVariablesAttribute(); } "nbVariables" "=" _nbVariables=_String() { it.set_nbVariables(_nbVariables); } { return it; } } VariablesXMLElement _VariablesXMLElement() : { VariablesXMLElement it = null; VariablesNbVariablesAttribute _variablesnbvariablesattribute; VariableXMLElement_List _variablexmlelement_list; } { { it=new VariablesXMLElement(); } "<" "variables" _variablesnbvariablesattribute=_VariablesNbVariablesAttribute() { it.set_variablesnbvariablesattribute(_variablesnbvariablesattribute); } ">" "<" _variablexmlelement_list=_VariableXMLElement_List() { it.set_variablexmlelement_list(_variablexmlelement_list); } "/" "variables" ">" { return it; } } RelationNameAttribute _RelationNameAttribute() : { RelationNameAttribute it = null; String _name; } { { it=new RelationNameAttribute(); } "name" "=" _name=_String() { it.set_name(_name); } { return it; } } RelationNumberAttribute _RelationNumberAttribute() : { RelationNumberAttribute it = null; String _number; } { { it=new RelationNumberAttribute(); } "number" "=" _number=_String() { it.set_number(_number); } { return it; } } RelationArityAttribute _RelationArityAttribute() : { RelationArityAttribute it = null; String _arity; } { { it=new RelationArityAttribute(); } "arity" "=" _arity=_String() { it.set_arity(_arity); } { return it; } } RelationNbTuplesAttribute _RelationNbTuplesAttribute() : { RelationNbTuplesAttribute it = null; String _nbTuples; } { { it=new RelationNbTuplesAttribute(); } "nbTuples" "=" _nbTuples=_String() { it.set_nbTuples(_nbTuples); } { return it; } } RelationSemanticsAttribute _RelationSemanticsAttribute() : { RelationSemanticsAttribute it = null; String _semantics; } { { it=new RelationSemanticsAttribute(); } "semantics" "=" _semantics=_String() { it.set_semantics(_semantics); } { return it; } } RelationXMLElement _RelationXMLElement() : { RelationXMLElement it = null; RelationNameAttribute _relationnameattribute; RelationNumberAttribute _relationnumberattribute; RelationArityAttribute _relationarityattribute; RelationNbTuplesAttribute _relationnbtuplesattribute; RelationSemanticsAttribute _relationsemanticsattribute; Tuple_PipeList _tuples; } { { it=new RelationXMLElement(); } "relation" _relationnameattribute=_RelationNameAttribute() { it.set_relationnameattribute(_relationnameattribute); } _relationnumberattribute=_RelationNumberAttribute() { it.set_relationnumberattribute(_relationnumberattribute); } [ _relationarityattribute=_RelationArityAttribute() { it.set_relationarityattribute(_relationarityattribute); } ] [ _relationnbtuplesattribute=_RelationNbTuplesAttribute() { it.set_relationnbtuplesattribute(_relationnbtuplesattribute); } ] [ _relationsemanticsattribute=_RelationSemanticsAttribute() { it.set_relationsemanticsattribute(_relationsemanticsattribute); } ] ">" [ _tuples=_Tuple_PipeList() { it.set_tuples(_tuples); } ] "<" "/" "relation" ">" "<" { return it; } } Tuple _Tuple() : { Tuple it = null; Digit_NList _digit_nlist; } { { it=new Tuple(); } _digit_nlist=_Digit_NList() { it.set_digit_nlist(_digit_nlist); } { return it; } } Digit _Digit() : { Digit it = null; int _v; } { { it=new Digit(); } _v=_int() { it.set_v(_v); } { return it; } } RelationsNbRelationsAttribute _RelationsNbRelationsAttribute() : { RelationsNbRelationsAttribute it = null; String _nbRelations; } { { it=new RelationsNbRelationsAttribute(); } "nbRelations" "=" _nbRelations=_String() { it.set_nbRelations(_nbRelations); } { return it; } } RelationsXMLElement _RelationsXMLElement() : { RelationsXMLElement it = null; RelationsNbRelationsAttribute _relationsnbrelationsattribute; RelationXMLElement_List _relationxmlelement_list; } { { it=new RelationsXMLElement(); } "<" "relations" _relationsnbrelationsattribute=_RelationsNbRelationsAttribute() { it.set_relationsnbrelationsattribute(_relationsnbrelationsattribute); } ">" "<" _relationxmlelement_list=_RelationXMLElement_List() { it.set_relationxmlelement_list(_relationxmlelement_list); } "/" "relations" ">" { return it; } } ConstraintNameAttribute _ConstraintNameAttribute() : { ConstraintNameAttribute it = null; String _name; } { { it=new ConstraintNameAttribute(); } "name" "=" _name=_String() { it.set_name(_name); } { return it; } } ConstraintArityAttribute _ConstraintArityAttribute() : { ConstraintArityAttribute it = null; String _arity; } { { it=new ConstraintArityAttribute(); } "arity" "=" _arity=_String() { it.set_arity(_arity); } { return it; } } ConstraintXMLAttributes _ConstraintXMLAttributes() : { ConstraintXMLAttributes it = null; ConstraintNameAttribute _constraintnameattribute; ConstraintArityAttribute _constraintarityattribute; ScopeAttribute _scopeattribute; ReferencesAttribute _referencesattribute; } { { it=new ConstraintXMLAttributes(); } [ _constraintnameattribute=_ConstraintNameAttribute() { it.set_constraintnameattribute(_constraintnameattribute); } ] [ _constraintarityattribute=_ConstraintArityAttribute() { it.set_constraintarityattribute(_constraintarityattribute); } ] _scopeattribute=_ScopeAttribute() { it.set_scopeattribute(_scopeattribute); } _referencesattribute=_ReferencesAttribute() { it.set_referencesattribute(_referencesattribute); } { return it; } } ScopeAttribute _ScopeAttribute() : { ScopeAttribute it = null; String _scope; } { { it=new ScopeAttribute(); } "scope" "=" _scope=_String() { it.set_scope(_scope); } { return it; } } ReferencesAttribute _ReferencesAttribute() : { ReferencesAttribute it = null; String _references; } { { it=new ReferencesAttribute(); } "reference" "=" _references=_String() { it.set_references(_references); } { return it; } } ConstraintXMLElement _ConstraintXMLElement() : { ConstraintXMLElement it = null; ConstraintXMLAttributes _constraintxmlattributes; } { { it=new ConstraintXMLElement(); } "constraint" _constraintxmlattributes=_ConstraintXMLAttributes() { it.set_constraintxmlattributes(_constraintxmlattributes); } "/" ">" "<" { return it; } } ConstraintsXMLAttributes _ConstraintsXMLAttributes() : { ConstraintsXMLAttributes it = null; String _nbConstraints; } { { it=new ConstraintsXMLAttributes(); } "nbConstraints" "=" _nbConstraints=_String() { it.set_nbConstraints(_nbConstraints); } { return it; } } ConstraintsXMLElement _ConstraintsXMLElement() : { ConstraintsXMLElement it = null; ConstraintsXMLAttributes _constraintsxmlattributes; ConstraintXMLElement_List _constraintxmlelement_list; } { { it=new ConstraintsXMLElement(); } "<" "constraints" _constraintsxmlattributes=_ConstraintsXMLAttributes() { it.set_constraintsxmlattributes(_constraintsxmlattributes); } ">" "<" _constraintxmlelement_list=_ConstraintXMLElement_List() { it.set_constraintxmlelement_list(_constraintxmlelement_list); } "/" "constraints" ">" { return it; } } Main _Main() : { Main it = null; } { { it=new Main(); } { return it; } } PresentationXMLAttribute_List _PresentationXMLAttribute_List() : { PresentationXMLAttribute_List it = null; Nonempty_PresentationXMLAttribute_List _first; } { { it=new PresentationXMLAttribute_List(); } [ _first=_Nonempty_PresentationXMLAttribute_List() { it.set_first(_first); } ] { return it; } } DomainExp_List _DomainExp_List() : { DomainExp_List it = null; Nonempty_DomainExp_List _first; } { { it=new DomainExp_List(); } [ _first=_Nonempty_DomainExp_List() { it.set_first(_first); } ] { return it; } } DomainXMLElement_List _DomainXMLElement_List() : { DomainXMLElement_List it = null; Nonempty_DomainXMLElement_List _first; } { { it=new DomainXMLElement_List(); } [ _first=_Nonempty_DomainXMLElement_List() { it.set_first(_first); } ] { return it; } } VariableXMLElement_List _VariableXMLElement_List() : { VariableXMLElement_List it = null; Nonempty_VariableXMLElement_List _first; } { { it=new VariableXMLElement_List(); } [ _first=_Nonempty_VariableXMLElement_List() { it.set_first(_first); } ] { return it; } } Tuple_PipeList _Tuple_PipeList() : { Tuple_PipeList it = null; Nonempty_Tuple_PipeList _first; } { { it=new Tuple_PipeList(); } _first=_Nonempty_Tuple_PipeList() { it.set_first(_first); } { return it; } } Digit_NList _Digit_NList() : { Digit_NList it = null; Nonempty_Digit_NList _first; } { { it=new Digit_NList(); } _first=_Nonempty_Digit_NList() { it.set_first(_first); } { return it; } } RelationXMLElement_List _RelationXMLElement_List() : { RelationXMLElement_List it = null; Nonempty_RelationXMLElement_List _first; } { { it=new RelationXMLElement_List(); } [ _first=_Nonempty_RelationXMLElement_List() { it.set_first(_first); } ] { return it; } } ConstraintXMLElement_List _ConstraintXMLElement_List() : { ConstraintXMLElement_List it = null; Nonempty_ConstraintXMLElement_List _first; } { { it=new ConstraintXMLElement_List(); } [ _first=_Nonempty_ConstraintXMLElement_List() { it.set_first(_first); } ] { return it; } } Nonempty_PresentationXMLAttribute_List _Nonempty_PresentationXMLAttribute_List() : { Nonempty_PresentationXMLAttribute_List it = null; PresentationXMLAttribute _it; Nonempty_PresentationXMLAttribute_List _next; } { { it=new Nonempty_PresentationXMLAttribute_List(); } _it=_PresentationXMLAttribute() { it.set_it(_it); } [ _next=_Nonempty_PresentationXMLAttribute_List() { it.set_next(_next); } ] { return it; } } Nonempty_DomainExp_List _Nonempty_DomainExp_List() : { Nonempty_DomainExp_List it = null; DomainExp _it; Nonempty_DomainExp_List _next; } { { it=new Nonempty_DomainExp_List(); } _it=_DomainExp() { it.set_it(_it); } [ _next=_Nonempty_DomainExp_List() { it.set_next(_next); } ] { return it; } } Nonempty_DomainXMLElement_List _Nonempty_DomainXMLElement_List() : { Nonempty_DomainXMLElement_List it = null; DomainXMLElement _it; Nonempty_DomainXMLElement_List _next; } { { it=new Nonempty_DomainXMLElement_List(); } _it=_DomainXMLElement() { it.set_it(_it); } [ _next=_Nonempty_DomainXMLElement_List() { it.set_next(_next); } ] { return it; } } Nonempty_VariableXMLElement_List _Nonempty_VariableXMLElement_List() : { Nonempty_VariableXMLElement_List it = null; VariableXMLElement _it; Nonempty_VariableXMLElement_List _next; } { { it=new Nonempty_VariableXMLElement_List(); } _it=_VariableXMLElement() { it.set_it(_it); } [ _next=_Nonempty_VariableXMLElement_List() { it.set_next(_next); } ] { return it; } } Nonempty_Tuple_PipeList _Nonempty_Tuple_PipeList() : { Nonempty_Tuple_PipeList it = null; Tuple _it; Nonempty_Tuple_PipeList _next; } { { it=new Nonempty_Tuple_PipeList(); } _it=_Tuple() { it.set_it(_it); } [ "|" _next=_Nonempty_Tuple_PipeList() { it.set_next(_next); } ] { return it; } } Nonempty_Digit_NList _Nonempty_Digit_NList() : { Nonempty_Digit_NList it = null; Digit _it; Nonempty_Digit_NList _next; } { { it=new Nonempty_Digit_NList(); } _it=_Digit() { it.set_it(_it); } [ _next=_Nonempty_Digit_NList() { it.set_next(_next); } ] { return it; } } Nonempty_RelationXMLElement_List _Nonempty_RelationXMLElement_List() : { Nonempty_RelationXMLElement_List it = null; RelationXMLElement _it; Nonempty_RelationXMLElement_List _next; } { { it=new Nonempty_RelationXMLElement_List(); } _it=_RelationXMLElement() { it.set_it(_it); } [ _next=_Nonempty_RelationXMLElement_List() { it.set_next(_next); } ] { return it; } } Nonempty_ConstraintXMLElement_List _Nonempty_ConstraintXMLElement_List() : { Nonempty_ConstraintXMLElement_List it = null; ConstraintXMLElement _it; Nonempty_ConstraintXMLElement_List _next; } { { it=new Nonempty_ConstraintXMLElement_List(); } _it=_ConstraintXMLElement() { it.set_it(_it); } [ _next=_Nonempty_ConstraintXMLElement_List() { it.set_next(_next); } ] { return it; } } boolean _boolean() : { Token t; }{ ( t= { return true; } | t= { return false; } ) } char _char() : { Token t; } { t= { String s = t.image; return unescapifyChar(s.substring(1, s.length()-1)); } } byte _byte() : { int i; } { i=_int() { return (byte) i; } } short _short() : { int i; } { i=_int() { return (short) i; } } int _int() : { Number num; } { num=_Number() { return num.intValue(); } } long _long() : { Number num; } { num=_Number() { return num.longValue(); } } float _float() : { Number num; } { num=_Number() { return num.floatValue(); } } double _double() : { Number num; } { num=_Number() { return num.doubleValue(); } } Boolean _Boolean() : { Token t; }{ ( t= { return Boolean.TRUE; } | t= { return Boolean.FALSE; } ) } Character _Character() : { char c; } { c=_char() { return new Character(c); } } Integer _Integer() : { int i; } { i = _int() { return new Integer(i); } } Long _Long() : { long l; } { l=_long() { return new Long(l); } } Float _Float() : { float f; } { f=_float() { return new Float(f); } } Double _Double() : { double d; } { d=_double() { return new Double(d); } } Number _Number() : { Token t; String s = null; int radix = 0; Number num = null; } { ( ( t= { s = t.image; radix = 10; } | t= { // Strip off the "0x". s = t.image.substring(2, t.image.length()); radix = 16; } | t= { s = t.image; radix = 8; } ) { switch (s.charAt(s.length()-1)) { case 'l': case 'L': s = s.substring(0, s.length()-1); num = new Long(new java.math.BigInteger(s, radix).longValue()); break; default: num = new Integer(new java.math.BigInteger(s, radix).intValue()); break; } } | t= { s = t.image; switch (s.charAt(s.length()-1)) { case 'd': case 'D': num = Double.valueOf(s.substring(0, s.length()-1)); break; case 'f': case 'F': num = Float.valueOf(s.substring(0, s.length()-1)); break; default: num = Float.valueOf(s); break; } } ) { return num; } } String _String() : { Token t; } { t= { String s = t.image; return unescapify(s.substring(1, s.length()-1)); } } StringBuffer _StringBuffer() : { String s; } { s=_String() { return new StringBuffer(s); } } Ident _Ident() : { Token t; } { t= { return new Ident(t.image); } } Text _Text() : { Token t; } { t= { String s = t.image; return new Text(s.substring(2, s.length()-2)); } } Line _Line() : { Token t; } { { token_source.SwitchTo(1); } t= { return new Line(t.image); } } Word _Word() : { Token t; } { { token_source.SwitchTo(2); } t= { return new Word(t.image); } } // Lexical specification (largely taken from Java.jack): SKIP : { " " | "\t" | "\n" | "\r" | <"//" (~["\n","\r"])* ("\n"|"\r\n")> | <"/*" (~["*"])* "*" (~["/"] (~["*"])* "*")* "/"> } TOKEN : { /* LITERALS */ < DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* (["l","L"])? > | < HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ (["l","L"])? > | < OCTAL_LITERAL: "0" (["0"-"7"])* (["l","L"])? > | < FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])+ ()? (["f","F","d","D"])? | "." (["0"-"9"])+ ()? (["f","F","d","D"])? | (["0"-"9"])+ (["f","F","d","D"])? | (["0"-"9"])+ ()? ["f","F","d","D"] > | < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ > | < CHARACTER_LITERAL: "'" ( (~["\'","\\","\n","\r"]) | ("\\" ( ["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] ( ["0"-"7"] )? | ["0"-"3"] ["0"-"7"] ["0"-"7"] ) ) ) "'" > | < STRING_LITERAL: "\"" ( (~["\"","\\","\n","\r"]) | ("\\" ( ["n","t","b","r","f","\\","\'","\""] | ["0"-"7"] ( ["0"-"7"] )? | ["0"-"3"] ["0"-"7"] ["0"-"7"] ) ) )* "\"" > | < TEXT_LITERAL: ( "(@" (~["@"])* ( "@" ~[")"] (~["@"])* )* "@)" ) | ( "{{" (~["}"])* ( "}" ~["}"] (~["}"])* )* "}}" ) > | < TRUE: "true" > | < FALSE: "false" > } TOKEN : { /* IDENTIFIERS */ < IDENTIFIER: (|)* > | < #LETTER: [ "\u0024", "\u0041"-"\u005a", "\u005f", "\u0061"-"\u007a", "\u00c0"-"\u00d6", "\u00d8"-"\u00f6", "\u00f8"-"\u00ff", "\u0100"-"\u1fff", "\u3040"-"\u318f", "\u3300"-"\u337f", "\u3400"-"\u3d2d", "\u4e00"-"\u9fff", "\uf900"-"\ufaff" ] > | < #DIGIT: [ "\u0030"-"\u0039", "\u0660"-"\u0669", "\u06f0"-"\u06f9", "\u0966"-"\u096f", "\u09e6"-"\u09ef", "\u0a66"-"\u0a6f", "\u0ae6"-"\u0aef", "\u0b66"-"\u0b6f", "\u0be7"-"\u0bef", "\u0c66"-"\u0c6f", "\u0ce6"-"\u0cef", "\u0d66"-"\u0d6f", "\u0e50"-"\u0e59", "\u0ed0"-"\u0ed9", "\u1040"-"\u1049" ] > } TOKEN : { < LINE: (~["\n","\r"])* > : DEFAULT } SKIP : { " " | "\t" | "\n" | "\r" } TOKEN : { < WORD: (~[" ","\t","\n","\r"])* > : DEFAULT }