split variable declarations into primitives and objects
authorAaron Becker <abecker3@illinois.edu>
Tue, 16 Dec 2008 21:43:02 +0000 (21:43 +0000)
committerAaron Becker <abecker3@illinois.edu>
Tue, 16 Dec 2008 21:43:02 +0000 (21:43 +0000)
src/langs/charj/src/charj/translator/Charj.g
src/langs/charj/src/charj/translator/CharjEmitter.g
src/langs/charj/src/charj/translator/CharjSemantics.g

index badee37398fd0d98ae9a2207566dad7bda65e431..a9e0b1965cf5dd2fb9e874ffbb719801509325df 100644 (file)
@@ -216,7 +216,8 @@ tokens {
     TYPE;
     UNARY_MINUS;
     UNARY_PLUS;
-    VAR_DECLARATION;
+    PRIMITIVE_VAR_DECLARATION;
+    OBJECT_VAR_DECLARATION;
     VAR_DECLARATOR;
     VAR_DECLARATOR_LIST;
     VOID_METHOD_DECL;
@@ -444,8 +445,10 @@ classScopeDeclarations
                 ->  ^(CONSTRUCTOR_DECL[$ident, "CONSTRUCTOR_DECL"] modifierList genericTypeParameterList? IDENT formalParameterList throwsClause? block)
                 //->  ^(CONSTRUCTOR_DECL[$ident, $ident.text] modifierList genericTypeParameterList? formalParameterList throwsClause? block)
             )
-        |   type classFieldDeclaratorList SEMI
-            ->  ^(VAR_DECLARATION modifierList type classFieldDeclaratorList)
+        |   simpleType classFieldDeclaratorList SEMI
+            ->  ^(PRIMITIVE_VAR_DECLARATION modifierList simpleType classFieldDeclaratorList)
+        |   objectType classFieldDeclaratorList SEMI
+            ->  ^(OBJECT_VAR_DECLARATION modifierList objectType classFieldDeclaratorList)
         )
     |   typeDeclaration
     |   SEMI!
@@ -459,8 +462,10 @@ interfaceScopeDeclarations
             |   VOID IDENT formalParameterList throwsClause? SEMI
                 ->  ^(VOID_METHOD_DECL modifierList genericTypeParameterList? IDENT formalParameterList throwsClause?)
             )
-        |   type interfaceFieldDeclaratorList SEMI
-            ->  ^(VAR_DECLARATION modifierList type interfaceFieldDeclaratorList)
+        |   simpleType interfaceFieldDeclaratorList SEMI
+            ->  ^(PRIMITIVE_VAR_DECLARATION modifierList simpleType interfaceFieldDeclaratorList)
+        |   objectType interfaceFieldDeclaratorList SEMI
+            ->  ^(OBJECT_VAR_DECLARATION modifierList objectType interfaceFieldDeclaratorList)        
         )
     |   typeDeclaration
     |   SEMI!
@@ -664,8 +669,10 @@ blockStatement
     ;
     
 localVariableDeclaration
-    :   localModifierList type classFieldDeclaratorList
-        ->  ^(VAR_DECLARATION localModifierList type classFieldDeclaratorList)
+    :   localModifierList simpleType classFieldDeclaratorList
+        ->  ^(PRIMITIVE_VAR_DECLARATION localModifierList simpleType classFieldDeclaratorList)
+    :   localModifierList objectType classFieldDeclaratorList
+        ->  ^(OBJECT_VAR_DECLARATION localModifierList objectType classFieldDeclaratorList)
     ;
     
         
index f555a91afc27b5f00b6c9e69b9436936c2cb248f..7ce68e55b1512d4f165823264c0cef611980a919 100644 (file)
@@ -301,7 +301,9 @@ classScopeDeclarations
                 tc={$t.st}, 
                 block={$b.st})
         ->
-    |   ^(VAR_DECLARATION modifierList type variableDeclaratorList)
+    |   ^(PRIMITIVE_VAR_DECLARATION modifierList simpleType variableDeclaratorList)
+        -> template(t={$text}) "vardecl <t>"
+    |   ^(OBJECT_VAR_DECLARATION modifierList objectType variableDeclaratorList)
         -> template(t={$text}) "vardecl <t>"
     |   ^(CONSTRUCTOR_DECL m=modifierList g=genericTypeParameterList? IDENT f=formalParameterList 
             t=throwsClause? b=block)
@@ -348,7 +350,9 @@ interfaceScopeDeclarations
         // Interface constant declarations have been switched to variable
         // declarations by Charj.g; the parser has already checked that
         // there's an obligatory initializer.
-    |   ^(VAR_DECLARATION modifierList type variableDeclaratorList)
+    |   ^(PRIMITIVE_VAR_DECLARATION modifierList simpleType variableDeclaratorList)
+        -> template(t={$text}) "<t>"
+    |   ^(OBJECT_VAR_DECLARATION modifierList objectType variableDeclaratorList)
         -> template(t={$text}) "<t>"
     |   typeDeclaration
         -> template(t={$text}) "<t>"
@@ -530,7 +534,9 @@ blockStatement
     ;
     
 localVariableDeclaration
-    :   ^(VAR_DECLARATION localModifierList type variableDeclaratorList)
+    :   ^(PRIMITIVE_VAR_DECLARATION localModifierList simpleType variableDeclaratorList)
+        -> template(t={$text}) "<t>"
+    :   ^(OBJECT_VAR_DECLARATION localModifierList objectType variableDeclaratorList)
         -> template(t={$text}) "<t>"
     ;
     
index 5cb98fe9d084baef1497cb40f63679dfa7e1fee0..55dee1aec3e32a3ab8471b6ee2e6cbbeb40f7af7 100644 (file)
@@ -233,7 +233,8 @@ classScopeDeclarations
             tc=throwsClause? b=block?)
     |   ^(VOID_METHOD_DECL m=modifierList g=genericTypeParameterList? IDENT 
             f=formalParameterList t=throwsClause? b=block?)
-    |   ^(VAR_DECLARATION modifierList type variableDeclaratorList)
+    |   ^(PRIMITIVE_VAR_DECLARATION modifierList simpleType variableDeclaratorList)
+    |   ^(OBJECT_VAR_DECLARATION modifierList objectType variableDeclaratorList)
     |   ^(CONSTRUCTOR_DECL m=modifierList g=genericTypeParameterList? IDENT f=formalParameterList 
             t=throwsClause? b=block)
     |   d=typeDeclaration
@@ -249,7 +250,8 @@ interfaceScopeDeclarations
         // Interface constant declarations have been switched to variable
         // declarations by Charj.g; the parser has already checked that
         // there's an obligatory initializer.
-    |   ^(VAR_DECLARATION modifierList type variableDeclaratorList)
+    |   ^(PRIMITIVE_VAR_DECLARATION modifierList simpleType variableDeclaratorList)
+    |   ^(OBJECT_VAR_DECLARATION modifierList objectType variableDeclaratorList)
     |   typeDeclaration
     ;
 
@@ -377,10 +379,11 @@ blockStatement
     ;
     
 localVariableDeclaration
-    :   ^(VAR_DECLARATION localModifierList type variableDeclaratorList)
+    :   ^(PRIMITIVE_VAR_DECLARATION localModifierList simpleType variableDeclaratorList)
+    :   ^(OBJECT_VAR_DECLARATION localModifierList objectType variableDeclaratorList)
     ;
-    
-        
+
+
 statement
     :   block
     |   ^(ASSERT expression expression?)