From dbe2b6e2acffd1b7250787c7b727d248e47b891b Mon Sep 17 00:00:00 2001
From: Sven Gestegard Robertz <sven.robertz@cs.lth.se>
Date: Wed, 29 Apr 2015 21:43:55 +0200
Subject: [PATCH] WiP: started adding intentions to parser

---
 compiler/2014/LabCommParser.parser | 15 ++++++++++++++-
 compiler/2014/LabCommScanner.flex  |  3 +++
 compiler/2014/Refactoring.jrag     |  5 +++++
 3 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/compiler/2014/LabCommParser.parser b/compiler/2014/LabCommParser.parser
index 612320a..812e725 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 baf91ee..a0e2efa 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 fbe083f..2b573d9 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");
+    }
 }
-- 
GitLab