Fixed tree recognition of TEMPLATE's.
authorJayant DeSouza <jdesouza@uiuc.edu>
Mon, 5 Apr 2004 17:26:17 +0000 (17:26 +0000)
committerJayant DeSouza <jdesouza@uiuc.edu>
Mon, 5 Apr 2004 17:26:17 +0000 (17:26 +0000)
src/langs/jade/java.tree.g
src/langs/jade/java.tree1.g
src/langs/jade/java.tree2.g

index 13afa2eeb6c190bee7dec96f3acb819ae0ca981c..301e0cc53c61b50dcbf2345c3cf633bb85e96fa8 100644 (file)
@@ -22,7 +22,7 @@ import java.io.FileWriter;
 
 class JavaTreeParser extends TreeParser;
 options {
-       importVocab = Java;
+       importVocab = JavaTreeParser2;
 }
 {
 // Class Members
@@ -104,6 +104,11 @@ typeDefinition
             IDENT { J.tmp.push(#IDENT.getText()); }
             e:extendsClause {
 
+                if (((ASTJ)c).status)
+                    System.out.println("pass3: " + #IDENT.getText() + "is main");
+                else
+                    System.out.println("pass3: " + #IDENT.getText() + "is NOT main");
+
                 //{ //((ASTJ)#IDENT).genID(J.h);
                 if (J.isX(m, "synchronized")) { // is a chare
 //                     J.ciOn();
@@ -662,16 +667,14 @@ throwsClause
        :       #( "throws" (identifier)* )
        ;
 
-identifier // done as part of printExpression
-       :       IDENT {
-//             if (J.isChare()) J.ci.append(#IDENT.getText());
-//             J.c.append(#IDENT.getText());
-        }
-       |       #( DOT identifier IDENT {
-//             if (J.isChare()) J.ci.append("." + #IDENT.getText());
-//             J.c.append("." + #IDENT.getText());
-            }
-        )
+templater
+    :  #( TEMPLATE (identifier)+ )
+    ;
+
+// done as part of printExpression
+identifier
+       :       #( IDENT (templater)? )
+       |       #( DOT identifier #( IDENT (templater)? ) )
        ;
 
 identifierStar
index 38e874d300b2a3ac1898dbd2a73369522226a728..c596e4399f3c167390c09e9b87598890d8681b93 100644 (file)
@@ -44,10 +44,10 @@ importDefinition
 typeDefinition[AST parent]
        :       #(c:CLASS_DEF modifiers IDENT { J.tmp.push(#IDENT.getText()); } extendsClause implementsClause
             o:objBlock {
-                if ( ((ASTJ)o).hasMain() ) {
-                    ((ASTJ)c).status = true; // is a mainchare
-                    ((ASTJ)parent).status = true; // is a mainmodule
-                }
+//                 if ( ((ASTJ)o).hasMain() ) {
+//                     ((ASTJ)c).status = true; // is a mainchare
+//                     ((ASTJ)parent).status = true; // is a mainmodule
+//                 }
             }
         ) { J.tmp.pop(); }
        |       #(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
@@ -59,6 +59,7 @@ typeSpec
 
 typeSpecArray
        :       #( ARRAY_DECLARATOR typeSpecArray )
+    |   #( TEMPLATE typeSpecArray )
        |       type
        ;
 
@@ -93,7 +94,7 @@ modifier
     |   "native"
     |   "threadsafe"
     |   "synchronized"
-    |   "const"
+//     |   "const"
     |   "volatile"
        |       "strictfp"
        |       "threaded"
@@ -198,9 +199,13 @@ throwsClause
        :       #( "throws" (identifier)* )
        ;
 
+templater
+    :  #( TEMPLATE (identifier)+ )
+    ;
+
 identifier
-       :       IDENT
-       |       #( DOT identifier IDENT )
+       :       #( IDENT (templater)? )
+       |       #( DOT identifier #( IDENT (templater)? ) )
        ;
 
 identifierStar
index 852d70685d71e530b050423826d060bf2b7e2f5c..1698dc1ef848524df8bae32db70c79dc41ccd9c2 100644 (file)
@@ -8,6 +8,7 @@ package jade;
 {
 //class preamble
 import jade.JJ.J;
+import jade.JJ.ASTJ;
 }
 
 /** Java 1.3 AST Recognizer Grammar
@@ -19,14 +20,15 @@ import jade.JJ.J;
 class JavaTreeParser2 extends TreeParser;
 
 options {
-       importVocab = Java;
+       importVocab = JavaTreeParser1;
     buildAST = true;
+    ASTLabelType = "ASTJ";
 }
 
 compilationUnit
        :       (p:packageDefinition)?
                (importDefinition)*
-               (typeDefinition[p])*
+               (typeDefinition[p_AST])*
         { if (p != null)
             J.tmp.pop();
         }
@@ -42,7 +44,14 @@ importDefinition
 
 typeDefinition[AST parent]
        :       #(c:CLASS_DEF modifiers IDENT { J.tmp.push(#IDENT.getText()); } extendsClause implementsClause
-            o:objBlock) { J.tmp.pop(); }
+            o:objBlock {
+                if ( ((ASTJ)o).hasMain() ) {
+                    System.out.println("pass2 reached has main");
+                    ((ASTJ)c_AST).status = true; // is a mainchare
+                    ((ASTJ)parent).status = true; // is a mainmodule
+                }
+            }
+        ) { J.tmp.pop(); }
        |       #(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
        ;
 
@@ -52,6 +61,7 @@ typeSpec
 
 typeSpecArray
        :       #( ARRAY_DECLARATOR typeSpecArray )
+    |   #( TEMPLATE typeSpecArray )
        |       type
        ;
 
@@ -86,7 +96,7 @@ modifier
     |   "native"
     |   "threadsafe"
     |   "synchronized"
-    |   "const"
+//     |   "const"
     |   "volatile"
        |       "strictfp"
        |       "threaded"
@@ -203,9 +213,13 @@ throwsClause
        :       #( "throws" (identifier)* )
        ;
 
+templater
+    :  #( TEMPLATE (identifier)+ )
+    ;
+
 identifier
-       :       IDENT
-       |       #( DOT identifier IDENT )
+       :       #( IDENT (templater)? )
+       |       #( DOT identifier #( IDENT (templater)? ) )
        ;
 
 identifierStar