source: proto/pablo/src/compiler/backend/visitors/DumpAssignStmtsXFormer.java @ 2710

Last change on this file since 2710 was 2710, checked in by ksherdy, 6 years ago

General refactoring.

File size: 1.2 KB
Line 
1package compiler.backend.visitors;
2
3import ast.*;
4import compiler.ast.Accessors;
5import compiler.ast.Generators;
6import compiler.lang.pablo.Builtins;
7import compiler.lang.pablo.Builtins2Lang;
8
9public class DumpAssignStmtsXFormer {
10        private ASTNode ASTree;
11        private Builtins2Lang builtins2Lang;
12       
13        public DumpAssignStmtsXFormer(ASTNode ASTree, Builtins2Lang builtins2Lang) {
14                this.ASTree = ASTree;
15                this.builtins2Lang = builtins2Lang;
16        }
17       
18        public ASTNode XForm() {
19                XFormer XFormer = new XFormer();
20                ASTree.accept(XFormer);
21                return ASTree;
22        }
23
24        private class XFormer extends VoidVisitor.Default {
25                               
26                public XFormer () {}
27                               
28                public void visitEnter(LocalVarDeclNode node) {
29                        addDumpStmt(node, Accessors.lhs(node));
30                }               
31               
32                public void visitEnter(AssignNode node) {
33                        addDumpStmt(node, Accessors.lhs(node));
34                }
35
36                private void addDumpStmt(ASTNode node, ASTNode lhs) {
37                        FuncCallNode printRegisterStmt = 
38                                        Generators.makeFuncCallNode(  builtins2Lang.getCode(Builtins.PRINTBITBLOCK), 
39                                                                                                                        node.getToken(),
40                                                                                                                        new ASTNode [] {lhs});
41                       
42                        (node.getParent()).insertAfterChild(node, printRegisterStmt);                           
43                }
44        }       
45}
46
Note: See TracBrowser for help on using the repository browser.