diff --git a/compiler/2014/LabCommParser.parser b/compiler/2014/LabCommParser.parser index 612320a89feeacbdd4bf7dd77b7732c19caf0b9d..812e72578004628f79d83bcdf6b2dd0b06cc2093 100644 --- a/compiler/2014/LabCommParser.parser +++ b/compiler/2014/LabCommParser.parser @@ -54,7 +54,20 @@ List var_decl_list = | var_decl_list.l var_decl.v {: return l.add(v); :} ; -List intentions = {: return new List(); :} +List intentions = + /* empty list */ {: return new List(); :} + | intention_list.l {: return l; :} + ; + +List intention_list = + intention.i {: return new List().add(i); :} + | intention_list.l intention.i {: return l.add(i); :} + ; + +String key = IDENTIFIER; +String stringliteral = IDENTIFIER; + +Intention intention = LPAREN key.k COLON stringliteral.v RPAREN {: return new Intention(k,v); :}; TypeInstance type_instance = intentions.i type.t IDENTIFIER {: return new TypeInstance(t, IDENTIFIER, i); :} diff --git a/compiler/2014/LabCommScanner.flex b/compiler/2014/LabCommScanner.flex index baf91ee4bd5eee749866308f8b4db6371368d25a..a0e2efa50ac1ce4fe7f95da1ae55a7332968d4c9 100644 --- a/compiler/2014/LabCommScanner.flex +++ b/compiler/2014/LabCommScanner.flex @@ -76,7 +76,10 @@ NonZeroDigit = [1-9] "}" { return sym(Terminals.RBRACE); } "[" { return sym(Terminals.LBRACK); } "]" { return sym(Terminals.RBRACK); } + "(" { return sym(Terminals.LPAREN); } + ")" { return sym(Terminals.RPAREN); } ";" { return sym(Terminals.SEMICOLON); } + ":" { return sym(Terminals.COLON); } "," { return sym(Terminals.COMMA); } {Identifier} { return sym(Terminals.IDENTIFIER); } diff --git a/compiler/2014/Refactoring.jrag b/compiler/2014/Refactoring.jrag index fbe083fbce28e76fe15a8c1c4f60c037f0601eb5..2b573d91760b01f35d127d3d43257ac559da77f8 100644 --- a/compiler/2014/Refactoring.jrag +++ b/compiler/2014/Refactoring.jrag @@ -11,4 +11,9 @@ aspect Refactoring { this(t, n, new List<Annotation>()); System.out.println("WARNING! TypeInstance(DataType, String) ignoring intention list"); } + + public ConcreteType.ConcreteType(Type t, String n) { + this(t, n, new List<Intention>()); + System.out.println("WARNING! ConcreteType(Type, String) ignoring intention list"); + } }