charj: fix subtree construction for templated class bodies
authorAaron Becker <akbecker@gmail.com>
Fri, 16 Apr 2010 18:29:48 +0000 (13:29 -0500)
committerAaron Becker <akbecker@gmail.com>
Fri, 16 Apr 2010 18:29:48 +0000 (13:29 -0500)
Changed tree construction to construct and recognize class subtrees
correctly, and removed extraneous bracket elements from AST

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 3d4f1001cd2cfc05521ba482c3cfa8517a46dd13..1ccfbaa09820f927607eeaaebbc66a951980fe62 100644 (file)
@@ -146,7 +146,7 @@ typeDeclaration
 
 templateDeclaration
     : 'template' '<' 'class' IDENT '>' classDefinition
-        -> ^('template' '<' 'class' IDENT '>' classDefinition)
+        -> ^('template' 'class' IDENT classDefinition)
     ;
 
 classDefinition
index 162fd0109cc212cc087559ce537727a2ece8d9ca..6d3e5739689810136af33d6d2dac2240046aa3b7 100644 (file)
@@ -136,7 +136,7 @@ importDeclaration
     ;
     
 typeDeclaration
-    :   ^('template' '<' 'class' IDENT '>' td=typeDeclaration)
+    :   ^('template' 'class' IDENT td=typeDeclaration)
         -> {emitH()}? templateDeclaration_h(
             ident={$IDENT.text},
             class1={$td.st})
index 6bbd9765b1d395da039d3b6ecb68976556594001..d9dbe1c4108e93ffc53b88530bb9e6cfcd1dbc14 100644 (file)
@@ -119,7 +119,7 @@ importDeclarations returns [List<CharjAST> packageNames]
 
 typeDeclaration[List<CharjAST> imports] returns [ClassSymbol sym]
 scope ScopeStack; // top-level type scope
-    :   ^('template' '<' 'class' i1=IDENT '>' 'class' i2=IDENT (^('extends' type))? (^('implements' type+))? classScopeDeclaration*)
+    :   ^('template' 'class' i1=IDENT ^('class' i2=IDENT (^('extends' type))? (^('implements' type+))? classScopeDeclaration*))
         {
             Scope outerScope = $ScopeStack[-1]::current;
             $sym = new ClassSymbol(symtab, $i2.text, null, outerScope);