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

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

General refactoring.

File size: 1.4 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;
8import compiler.lang.carryset.CarrySet2Lang;
9
10public class AssertBitBlockAlignStmtsXFormer {
11        private ASTNode ASTree;
12       
13        private Builtins2Lang builtins2Lang;
14        private CarrySet2Lang carrySet2Lang;
15       
16        public AssertBitBlockAlignStmtsXFormer(ASTNode ASTree, Builtins2Lang builtins2Lang, CarrySet2Lang carrySet2Lang) {
17                this.ASTree = ASTree;
18                this.builtins2Lang = builtins2Lang;
19                this.carrySet2Lang = carrySet2Lang;
20        }
21       
22        public ASTNode XForm() {
23                XFormer XFormer = new XFormer();
24                ASTree.accept(XFormer);
25                return ASTree;
26        }
27
28        private class XFormer extends VoidVisitor.Default {
29                               
30                public XFormer () {}
31                               
32                public void visitEnter(LocalVarDeclNode node) {
33                        addDumpStmt(node, Accessors.lhs(node));
34                }               
35               
36                public void visitEnter(AssignNode node) {
37                        addDumpStmt(node, Accessors.lhs(node));
38                }
39
40                private void addDumpStmt(ASTNode node, ASTNode lhs) {
41                        FuncCallNode printRegisterStmt = 
42                                        Generators.makeFuncCallNode(  builtins2Lang.getCode(Builtins.ASSERTBITBLOCKALIGN), 
43                                                                                                                        node.getToken(),
44                                                                                                                        new ASTNode [] {lhs});
45                       
46                        (node.getParent()).insertAfterChild(node, printRegisterStmt);                           
47                }
48        }       
49}
50
Note: See TracBrowser for help on using the repository browser.