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

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

General refactoring.

File size: 2.0 KB
Line 
1package compiler.backend.visitors.helpers;
2
3import compiler.backend.visitors.ASTAssertCompareVisitor;
4
5import ast.*;
6
7public class AssertCompare {
8       
9    private ASTNode ASTTree;
10   
11    public AssertCompare(ASTNode ASTTree) {
12        this.ASTTree = ASTTree;
13    }
14   
15    public void compareFuncCallNodes() {
16        ASTFuncCallTestVisitor visitor = new ASTFuncCallTestVisitor();
17        ASTTree.accept(visitor);
18        visitor.assertComplete();
19    }
20
21    public void compareAssignNodes() {
22        ASTAssignTestVisitor visitor = new ASTAssignTestVisitor();
23        ASTTree.accept(visitor);
24        visitor.assertComplete();
25    }   
26   
27    private class ASTTestVisitor extends VoidVisitor.Default {
28                protected ASTNode ASTTree1;
29                protected ASTNode ASTTree2;
30       
31                public ASTTestVisitor() {
32                        this.init();
33                }
34               
35                protected void init() {
36                        this.ASTTree1 = null;
37                        this.ASTTree2 = null;
38                }
39               
40                public void assertComplete() {
41                                               
42                        if (this.ASTTree1 != null) { 
43                                System.err.println("Missing comparison node." 
44                                                                + "\nExpected: " + this.ASTTree1.toString() 
45                                                                + "\nActual: " + null);
46                                System.err.println("Location: " + this.ASTTree1.getToken().getLocation() + ".");
47                                System.exit(9);
48                        }
49                }
50               
51    }
52   
53        private class ASTFuncCallTestVisitor extends ASTTestVisitor {
54
55                ASTFuncCallTestVisitor() {
56                        super();
57                }
58               
59                public void visitEnter(FuncCallNode node) {
60                       
61                        if(this.ASTTree1 == null) {
62                                this.ASTTree1 = node;
63                        } else {
64                                this.ASTTree2 = node;
65                                ASTAssertCompareVisitor.compare(this.ASTTree1, this.ASTTree2);
66                                init();
67                        }
68                }       
69        }
70       
71        private class ASTAssignTestVisitor extends ASTTestVisitor {
72
73                ASTAssignTestVisitor() {
74                        super();
75                }
76               
77                public void visitEnter(AssignNode node) {
78                        if(ASTTree1 == null) {
79                                this.ASTTree1 = node;
80                        } else {
81                                this.ASTTree2 = node;
82                                ASTAssertCompareVisitor.compare(this.ASTTree1, this.ASTTree2);
83                                super.init();
84                        }
85                }       
86        }
87       
88}
Note: See TracBrowser for help on using the repository browser.