Added tree adaptor for new AST node type
[charm.git] / src / langs / charj / src / charj / translator / Translator.java
index b2a2b3dab93c6f39030b8bf4792c914773865825..b7c2a8051662667ced52ba8b1c503d4699b56e6b 100644 (file)
@@ -38,6 +38,19 @@ public class Translator {
         m_errorCondition = false;
     }
 
+    public static TreeAdaptor adaptor = new CommonTreeAdaptor() {
+        public Object create(Token token) {
+            return new CharjAST(token);
+        }
+        
+        public Object dupNode(Object t) {
+            if (t == null) {
+                return null;
+            }
+            return create(((CharjAST)t).token);
+        }
+    };
+
     public String translate(String filename) throws Exception 
     {
         ANTLRFileStream input = new ANTLRFileStream(filename);
@@ -73,12 +86,14 @@ public class Translator {
         // Use lexer tokens to feed tree parser
         CommonTokenStream tokens = new CommonTokenStream(lexer);
         CharjParser parser = new CharjParser(tokens);
+        parser.setTreeAdaptor(adaptor);
         CharjParser.charjSource_return r = parser.charjSource();
 
         // Create node stream for emitters
         CommonTree t = (CommonTree)r.getTree();
         CommonTreeNodeStream nodes = new CommonTreeNodeStream(t);
         nodes.setTokenStream(tokens);
+        nodes.setTreeAdaptor(adaptor);
 
         String output = emit(nodes, m);
         return output;