Changeset 1258 for proto


Ignore:
Timestamp:
Aug 2, 2011, 4:16:41 PM (8 years ago)
Author:
shermer
Message:

Added a new node type for structure/field references.
Adjusted visitors to handle this new type.

Location:
proto/pebble/trunk/src
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • proto/pebble/trunk/src/ast/ASTVisitor.java

    r1242 r1258  
    106106        public void visitEnter(StructBlockASTN node);
    107107        public void visitLeave(StructBlockASTN node);
     108        public void visitEnter(StructFieldASTB node);
     109        public void visitLeave(StructFieldASTB node);
    108110        public void visitEnter(TrueLiteralASTB node);
    109111        public void visitLeave(TrueLiteralASTB node);
     
    185187                public void visitEnter(StructBlockASTN node) { defaultVisitEnter(node); }
    186188                public void visitLeave(StructBlockASTN node) { defaultVisitLeave(node); }
     189                public void visitEnter(StructFieldASTB node) { defaultVisitEnter(node); }
     190                public void visitLeave(StructFieldASTB node) { defaultVisitLeave(node); }
    187191                public void visitEnter(TrueLiteralASTB node) { defaultVisitEnter(node); }
    188192                public void visitLeave(TrueLiteralASTB node) { defaultVisitLeave(node); }
  • proto/pebble/trunk/src/ast/transforms/ASTtoIncode.java

    r1253 r1258  
    183183                        argumentString.put(node, sym);
    184184                }
     185                public void visitLeave(StructFieldASTB node) {
     186                        String arg0 = argument(0, node);
     187                        String arg1 = argument(1, node);
     188                       
     189                        String sym = arg0 + '.' + arg1;
     190                        argumentString.put(node, sym);
     191                }
    185192                public void visitLeave(XorASTB node) {
    186193                        String arg0 = argument(0, node);
  • proto/pebble/trunk/src/ast/transforms/Simplifier.java

    r1242 r1258  
    3838                        AST lhs = node.getChild(AssignmentASTN.ASSIGNABLE);
    3939                        AST rhs = node.getChild(AssignmentASTN.EXPRESSION);
    40                         if(lhs instanceof VariableASTB) {       // v = v
     40               
     41                        // check if assignment is v = v or s.f = s.f
     42                        if(lhs instanceof VariableASTB || lhs instanceof StructFieldASTB) {
    4143                                if(lhs.equivalent(rhs)) {
    4244                                        node.removeInVisit();
     
    210212                                node.replaceWith(SpanASTB.make(node.getChild(0), node.getChild(1)));
    211213                        }
    212                 }
     214                }               
     215                public void visitLeave(StructFieldASTB node) {
     216                        AST t = assumedValue(node);
     217                        if(t!=null) {
     218                                node.replaceWith(t);
     219                        }
     220                }       
    213221                public void visitLeave(TrueLiteralASTB node) {
    214222                }
  • proto/pebble/trunk/src/lexicalStream/MoveLexdefsToBranchStarts.java

    r1242 r1258  
    5555                public void visitLeave(CharClassASTB node) {
    5656                        String name = addCharClassToTopCollector(node);
    57                         node.replaceWith(VariableASTB.make(name));
     57                        node.replaceWith(StructFieldASTB.make(name));
    5858                }
    5959                public void visitLeave(SequenceASTB node) {
    6060                        String name = addSequenceToTopCollector(node);
    61                         node.replaceWith(VariableASTB.make(name));
     61                        node.replaceWith(StructFieldASTB.make(name));
    6262                }
    6363
Note: See TracChangeset for help on using the changeset viewer.