Changeset 3281


Ignore:
Timestamp:
Jun 7, 2013, 3:17:18 PM (6 years ago)
Author:
ksherdy
Message:

Refactored to use SurroundConditionals? visitor.

Location:
proto/pabloj/trunk/src/toolchain
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/toolchain/pabloS/ast/Accessors.java

    r3275 r3281  
    196196        // WhileStmtNode
    197197        ////////////////////////////////////////////////////////////////////////////
    198         public static ASTNode whileTest(WhileStmtNode node) {
    199                 return condition(node);
    200         }               
    201198        public static ASTNode condition(WhileStmtNode node) {
    202199                return node.child(0);
     
    209206        }
    210207       
    211 
    212208        ////////////////////////////////////////////////////////////////////////////
    213209        // FuncDefNode
     
    482478                return result;
    483479        }
     480       
     481        public static ASTNode[] arguments(ASTNode...astNodes) {
     482        return astNodes;
     483    }
     484           
    484485}
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/Transformer.java

    r3262 r3281  
    1313import toolchain.pabloS.transformer.visitors.ExpandAugmentedAssignments;
    1414import toolchain.pabloS.transformer.visitors.SurroundAssert0sWithIfs;
     15import toolchain.pabloS.transformer.visitors.SurroundConditionsWithBitBlockAny;
    1516import toolchain.pabloS.transformer.visitors.carry.CarryIntroXFormer;
    1617
     
    5859                decoratedTree = CombineAdvances.apply(decoratedTree);
    5960                decoratedTree = CarryIntroXFormer.apply(decoratedTree, getBuiltinEncoder(), getCarrySet2Lang(), finalBlockMode);
     61                decoratedTree = SurroundConditionsWithBitBlockAny.apply(decoratedTree);
    6062                decoratedTree = ConvertBitwiseBooleanToIDISACalls.apply(decoratedTree);
    6163                //decoratedTree = InitializeStreamDefaults.apply(decoratedTree);
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/ConvertBitwiseBooleanToIDISACalls.java

    r3275 r3281  
    1717
    1818import static toolchain.pabloB.lang.idisa.IDISASIMDBitwiseBuiltins.*;
     19import toolchain.util.*;
    1920
    2021public class ConvertBitwiseBooleanToIDISACalls {
     
    3132               
    3233                // TODO - move out of this xFormer
    33                 Bitwise2IDISAGeneralXFormer xFormer = new Bitwise2IDISAGeneralXFormer();
    34                 ASTTree.accept(xFormer);
     34                //Bitwise2IDISAGeneralXFormer xFormer = new Bitwise2IDISAGeneralXFormer();
     35                //ASTTree.accept(xFormer);
    3536               
    3637                return ASTTree;
     
    6061                        if(token.isLextant(Lextant.OR)) {
    6162                                return makeIDISACall(OR,
    62                                                                          arguments(lhs, rhs),
     63                                                                         Accessors.arguments(lhs, rhs),
    6364                                                                         locator);
    6465                        }
     
    6768                                if (rhs.getToken().isLextant(Lextant.NOT)) {                                           
    6869                                        return  makeIDISACall(ANDC,
    69                                                                                   arguments(lhs, rhs.child(0)),
    70                                                                                   locator);
     70                                                                Accessors.arguments(lhs, rhs.child(0)),
     71                                                                locator);
    7172                                }
    7273                                else if(lhs.getToken().isLextant(Lextant.NOT)) {
    7374                                        return  makeIDISACall(ANDC,
    74                                                                                   arguments(rhs, lhs.child(0)),
    75                                                                                   locator);
     75                                                                Accessors.arguments(rhs, lhs.child(0)),
     76                                                                locator);
    7677                                }
    7778                                else {
    7879                                        return  makeIDISACall(AND,
    79                                                                                   arguments(lhs, rhs),
    80                                                                                   locator);                                             
     80                                                                Accessors.arguments(lhs, rhs),
     81                                                                locator);                                               
    8182                                }
    8283                        }
    8384                        else {  // if (token.isLextant(Lextant.XOR)){
    8485                                return makeIDISACall(XOR,
    85                                                                          arguments(lhs, rhs),
    86                                                                         token);
     86                                                        Accessors.arguments(lhs, rhs),
     87                                                        token);
    8788                        }
    8889                }
     
    105106                        if(token.isLextant(Lextant.NOT)) {
    106107                                ASTNode replacement =
    107                                                 makeIDISACall(NOT, arguments(Accessors.operand(node)), token);                 
     108                                                makeIDISACall(NOT, Accessors.arguments(Accessors.operand(node)), token);                       
    108109                                node.updateSelf(replacement);
    109110                        }
    110111                }               
    111         }       
    112        
    113         /*
    114          * PabloS 'if and 'while' to PabloB 'if and 'while'
    115          */
    116         static private class Bitwise2IDISAGeneralXFormer extends VoidVisitor.Default {
    117                 public void visitLeave(IfStmtNode node) {
    118                         ASTNode condition = Accessors.condition(node);                 
    119                         insertANYintoCondition(node, condition);
    120                 }
    121                
    122                 public void visitLeave(WhileStmtNode node) {
    123                         ASTNode condition = Accessors.whileTest(node);                         
    124                         insertANYintoCondition(node, condition);
    125                 }
    126 
    127                 private void insertANYintoCondition(ASTNode node, ASTNode condition) {
    128                         FuncCallNode FuncCallNode = Generators.makeFuncCallNode(
    129                                         node, // TODO Update to IDISA syntax
    130                                         IDISABitBlockBuiltins.ANY.IDISALexeme(),
    131                                         arguments(condition.deepCopy()));                               
    132                        
    133                         node.replaceChild(condition, FuncCallNode);
    134                 }
    135112        }
    136113       
     
    138115                return Generators.makeFuncCallNode(locator, idisaName.Name(), arguments);
    139116        }
    140         static private ASTNode[] arguments(ASTNode...astNodes) {
    141                 return astNodes;
    142         }
     117
    143118}
    144119
  • proto/pabloj/trunk/src/toolchain/util/Labeller.java

    r3280 r3281  
    2222        }
    2323        public void setNextValue(long nextValue) {
    24                 nextValue = nextValue;
     24                this.nextValue = nextValue;
    2525        }
    2626}
Note: See TracChangeset for help on using the changeset viewer.