Charj: simplify and improve chare type handling
[charm.git] / src / langs / charj / src / charj / translator / Charj.g
index 7b329e8f1438ddabb8e30734cb162ba5c7a68a51..36e47d887db529f0175bd4b8d4879b1fa3c14e6e 100644 (file)
@@ -142,34 +142,27 @@ typeDeclaration
     |   interfaceDefinition
     |   enumDefinition
     |   chareDefinition
-    |   chareArrayDefinition
     ;
 
 classDefinition
     :   'public'? 'class' IDENT ('extends' type)? ('implements' typeList)? '{'
             classScopeDeclaration*
         '}' ';'?
-        -> ^('class' IDENT ^('extends' type)? ^('implements' typeList)? classScopeDeclaration*)
+        -> ^(TYPE 'class' IDENT ^('extends' type)? ^('implements' typeList)? classScopeDeclaration*)
     ;
 
 chareType
     :   'chare'
     |   'group'
     |   'nodegroup'
+    |   'chare_array' '[' ARRAY_DIMENSION ']' -> ^('chare_array' ARRAY_DIMENSION)
     ;
 
 chareDefinition
     :   'public'? chareType IDENT ('extends' type)? ('implements' typeList)? '{'
             classScopeDeclaration*
         '}' ';'?
-        -> ^(chareType IDENT ^('extends' type)? ^('implements' typeList)? classScopeDeclaration*)
-    ;
-
-chareArrayDefinition
-    :   'public'? 'chare_array' '[' ARRAY_DIMENSION ']' IDENT ('extends' type)? ('implements' typeList)? '{'
-            classScopeDeclaration*
-        '}' ';'?
-        -> ^('chare_array' ARRAY_DIMENSION IDENT ^('extends' type)? ^('implements' typeList)? classScopeDeclaration*)
+        -> ^(TYPE chareType IDENT ^('extends' type)? ^('implements' typeList)? classScopeDeclaration*)
     ;
 
 interfaceDefinition
@@ -750,8 +743,7 @@ DECIMAL_LITERAL : ('0' | '1'..'9' '0'..'9'*) INTEGER_TYPE_SUFFIX? ;
 
 OCTAL_LITERAL : '0' ('0'..'7')+ INTEGER_TYPE_SUFFIX? ;
 
-//fragment
-ARRAY_DIMENSION :  '1'..'6' ('d'|'D') ;
+ARRAY_DIMENSION :  ('1'..'6')('d'|'D') ;
 
 fragment
 HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;