custom charj tree node for ast
authorAaron Becker <abecker3@illinois.edu>
Mon, 9 Jun 2008 20:09:00 +0000 (20:09 +0000)
committerAaron Becker <abecker3@illinois.edu>
Mon, 9 Jun 2008 20:09:00 +0000 (20:09 +0000)
src/langs/charj/src/charj/translator/Charj.g
src/langs/charj/src/charj/translator/CharjAST.java [new file with mode: 0644]
src/langs/charj/src/charj/translator/CharjEmitter.g
src/langs/charj/src/charj/translator/Translator.java

index e70c646c3162ba9749c494147c01656ee638689b..7f33e14bea1402abe1d4b0e4076fd51b4782b4f4 100644 (file)
@@ -12,7 +12,7 @@ options {
     backtrack = true; 
     memoize = true;
     output = AST;
-    ASTLabelType = CommonTree;
+    ASTLabelType = CharjAST;
 }
 
 tokens {
diff --git a/src/langs/charj/src/charj/translator/CharjAST.java b/src/langs/charj/src/charj/translator/CharjAST.java
new file mode 100644 (file)
index 0000000..8aa3e0b
--- /dev/null
@@ -0,0 +1,20 @@
+package charj.translator;
+
+import org.antlr.runtime.tree.CommonTree;
+import org.antlr.runtime.Token;
+import org.antlr.runtime.CommonToken;
+
+/**
+ * Custom subclass of Antlr's tree node. Doesn't do anything special yet,
+ * it's just here to make it easier to add features later.
+ */
+public class CharjAST extends CommonTree
+{
+    public CharjAST(Token t) {
+        super(t);
+    }
+
+    public CharjAST(int type, String text) {
+        super(new CommonToken(type, text));
+    }
+}
index e11168046a140e6b9c51170192e051210a5d4c0e..5dd936daca541e367a57e0f412c04a2654d78515 100644 (file)
@@ -8,7 +8,7 @@ options {
     backtrack = true; 
     memoize = true;
     tokenVocab = Charj;
-    ASTLabelType = CommonTree;
+    ASTLabelType = CharjAST;
     output = template;
 }
 
@@ -38,7 +38,7 @@ package charj.translator;
      *
      *  The default value is <code>false</code>.
      *
-     *  @param pNewState  <code>true</code> if error messages should be collected.
+     *  @param newState  <code>true</code> if error messages should be collected.
      */
     public void enableErrorMessageCollection(boolean newState) {
         m_messageCollectionEnabled = newState;
@@ -54,7 +54,7 @@ package charj.translator;
      *  The actual behaviour depends on whether collecting error messages
      *  has been enabled or not.
      *
-     *  @param pMessage  The error message.
+     *  @param message  The error message.
      */
      @Override
     public void emitErrorMessage(String message) {
index 895eb1b6c4674b316fa62c548aed406dfe364e18..b2a2b3dab93c6f39030b8bf4792c914773865825 100644 (file)
@@ -70,7 +70,7 @@ public class Translator {
             OutputMode m) throws
         RecognitionException, IOException, InterruptedException
     {
-        // Use lexer tokens to feed tree parser.
+        // Use lexer tokens to feed tree parser
         CommonTokenStream tokens = new CommonTokenStream(lexer);
         CharjParser parser = new CharjParser(tokens);
         CharjParser.charjSource_return r = parser.charjSource();
@@ -80,8 +80,7 @@ public class Translator {
         CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
         nodes.setTokenStream(tokens);
 
-        String output = null;
-        output = emit(nodes, m);
+        String output = emit(nodes, m);
         return output;
     }
 
@@ -112,7 +111,7 @@ public class Translator {
     /**
      * Enters the .charj directory and compiles the .cc and .ci files 
      * generated from the given filename. The given charmc string 
-     * include all options to be passed to charmc. Any generated .o 
+     * includes all options to be passed to charmc. Any generated .o 
      * file is moved back to the initial directory.
      */
     private void compileTempFiles(
@@ -123,6 +122,9 @@ public class Translator {
         int lastDot = filename.lastIndexOf(".");
         int lastSlash = filename.lastIndexOf("/");
         String baseDirectory = filename.substring(0, lastSlash + 1);
+        if (baseDirectory.equals("")) {
+            baseDirectory = "./";
+        }
         String tempDirectory = baseDirectory + ".charj/";
         String moduleName = filename.substring(lastSlash + 1, lastDot);
         String baseTempFilename = tempDirectory + moduleName;