Changeset 2419


Ignore:
Timestamp:
Sep 28, 2012, 6:58:47 PM (7 years ago)
Author:
ksherdy
Message:

Updated AST accessors and generators.

Location:
proto/pablo/src/compiler/ast
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • proto/pablo/src/compiler/ast/Accessors.java

    r2415 r2419  
    55
    66import ast.ASTNode;
     7import ast.AssignmentNode;
     8import ast.BinaryOperatorNode;
    79import ast.FunctionDefNode;
    810import ast.FunctionInvocationNode;
    911import ast.IdentifierNode;
    1012import ast.IfStatementNode;
     13import ast.UnaryOperatorNode;
    1114import ast.WhileStatementNode;
    1215
     
    2124        // (some planned, some implemented)
    2225        ////////////////////////////////////////////////////////////////////////////
     26
     27        ////////////////////////////////////////////////////////////////////////////
     28        // Assignment Statements
     29        ////////////////////////////////////////////////////////////////////////////                           
     30        public static ASTNode lhs(AssignmentNode node) {
     31                return node.child(0);
     32        }       
    2333       
     34        public static ASTNode rhs(AssignmentNode node) {
     35                return node.child(1);
     36        }       
     37       
     38        ////////////////////////////////////////////////////////////////////////////
     39        // Unary Operators
     40        ////////////////////////////////////////////////////////////////////////////                   
     41        public static ASTNode Operand(UnaryOperatorNode node) {
     42                return node.child(0);
     43        }
     44
     45        ////////////////////////////////////////////////////////////////////////////
     46        // Binary Operators
     47        ////////////////////////////////////////////////////////////////////////////           
     48        public static ASTNode rightOperand(BinaryOperatorNode node) {
     49                return node.child(1);
     50        }
     51
     52        public static ASTNode leftOperand(BinaryOperatorNode node) {
     53                return node.child(0);
     54        }               
     55
    2456        ////////////////////////////////////////////////////////////////////////////
    2557        // IfStatementNode helpers
     
    2860                return node.child(0);
    2961        }
    30        
     62
     63        ////////////////////////////////////////////////////////////////////////////
     64        // WhileStatementNode helpers
     65        ////////////////////////////////////////////////////////////////////////////           
     66        public static ASTNode whileCondition(WhileStatementNode node) {
     67                return node.child(0);
     68        }       
     69               
    3170        ////////////////////////////////////////////////////////////////////////////
    3271        // FunctionDefinitionNode helpers
  • proto/pablo/src/compiler/ast/Generators.java

    r2415 r2419  
    99import tokens.Token;
    1010import ast.ASTNode;
     11import ast.BinaryOperatorNode;
    1112import ast.CompoundVariableNode;
    1213import ast.FunctionInvocationNode;
     
    1718public class Generators {
    1819
     20       
    1921        ////////////////////////////////////////////////////////////////////////////
    2022        // Static factories for various nodes
     
    114116        ////////////////////////////////////////////////////////////////////////////
    115117       
    116        
    117118        /** Makes a new LextantToken with the given lextant and location taken from the given token.
    118119         * @param lextant
     
    164165        }
    165166
     167        /** Makes a new BinaryOperatorNode
     168         * @param lhs                   left hand side
     169         * @param rhs                   right hand side
     170         * @param locationToken         a token containing the operation and TextLocation for this new node.
     171         * @return      the new IntegerConstantNode
     172         */
     173        public static BinaryOperatorNode makeBinaryOperatorNode(ASTNode lhs, ASTNode rhs, Token tokenLocation) {
     174                BinaryOperatorNode node = new BinaryOperatorNode(tokenLocation);
     175                node.appendChild(lhs);
     176                node.appendChild(rhs);
     177                return node;
     178        }       
     179       
    166180}
Note: See TracChangeset for help on using the changeset viewer.