Changeset 2464


Ignore:
Timestamp:
Oct 16, 2012, 1:09:33 PM (7 years ago)
Author:
ksherdy
Message:

Updated AST generators, accessors.

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

Legend:

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

    r2448 r2464  
    88import ast.AssignmentNode;
    99import ast.BinaryOperatorNode;
     10import ast.BlockStatementNode;
    1011import ast.CompoundVariableNode;
    1112import ast.FunctionDefNode;
     
    1920
    2021        ////////////////////////////////////////////////////////////////////////////
    21         // Non-terminal child accessors.
    2222        //
    23         // WARNING: Use/add as required. Do not hardcode child indicies in general
    24         //          compiler code (visitors etc...).
     23        // Narrowest node type returned whenever possible. ASTNode type otherwise.
    2524        //
    26         // (some planned, some implemented)
     25        // WARNING: Add addition methods as needed. Do not hard code child index
     26        //                      values in general code.
     27        //
    2728        ////////////////////////////////////////////////////////////////////////////
    2829
     
    5960        // IfStatementNode helpers
    6061        ////////////////////////////////////////////////////////////////////////////   
    61         public static ASTNode ifTest(IfStatementNode node) {
    62                 return node.child(0);
     62        public static BlockStatementNode ifTest(IfStatementNode node) {
     63                return (BlockStatementNode) node.child(0);
    6364        }
    6465       
     
    6768        }
    6869       
    69         public static ASTNode elseBlockStatement(IfStatementNode node) {
    70                 return node.child(2);
     70        public static BlockStatementNode elseBlockStatement(IfStatementNode node) {
     71                return (BlockStatementNode) node.child(2);
    7172        }
    7273
     
    8182        // FunctionDefinitionNode helpers
    8283        ////////////////////////////////////////////////////////////////////////////
    83         public static ASTNode functionName(FunctionDefNode node) {
    84                 return node.child(1);
     84        public static IdentifierNode functionName(FunctionDefNode node) {
     85                return (IdentifierNode) node.child(1);
    8586        }
    8687       
  • proto/pablo/src/compiler/ast/Generators.java

    r2448 r2464  
    3131         * @return      the new FunctionInvocationNode
    3232         */
    33         public static ASTNode makeFunctionInvocationNode(String identifier, Token locationToken) {
     33        public static FunctionInvocationNode makeFunctionInvocationNode(String identifier, Token locationToken) {
    3434                IdentifierNode identifierNode = Generators.makeIdentifierNode(identifier, locationToken);
    3535                return Generators.makeFunctionInvocationNode(identifierNode, locationToken);
     
    4141         * @return      the new FunctionInvocationNode
    4242         */
    43         public static ASTNode makeFunctionInvocationNode(String[] identifiers, Token locationToken) {
     43        public static FunctionInvocationNode makeFunctionInvocationNode(String[] identifiers, Token locationToken) {
    4444                CompoundVariableNode identifierNode = Generators.makeCompoundVariableNode(identifiers, locationToken);
    4545                return Generators.makeFunctionInvocationNode(identifierNode, locationToken);
     
    5252         * @return      the new FunctionInvocationNode
    5353         */
    54         public static ASTNode makeFunctionInvocationNode(String[] identifiers, Token locationToken, ASTNode [] children) {
     54        public static FunctionInvocationNode makeFunctionInvocationNode(String[] identifiers, Token locationToken, ASTNode [] children) {
    5555                CompoundVariableNode identifierNode = Generators.makeCompoundVariableNode(identifiers, locationToken);
    56                 ASTNode functionInvocationNode = Generators.makeFunctionInvocationNode(identifierNode, locationToken);
     56                FunctionInvocationNode functionInvocationNode = Generators.makeFunctionInvocationNode(identifierNode, locationToken);
    5757                for(ASTNode child:children) {
    5858                        functionInvocationNode.appendChild(child);
     
    6666         * @return      the new FunctionInvocationNode
    6767         */
    68         public static ASTNode makeFunctionInvocationNode(ASTNode identifier, Token locationToken) {
     68        public static FunctionInvocationNode makeFunctionInvocationNode(ASTNode identifier, Token locationToken) {
    6969                assert identifier instanceof IdentifierNode || identifier instanceof CompoundVariableNode;
    7070               
    7171                LextantToken token = Generators.makeLextantToken(Lextant.LROUND, locationToken);
    72                 ASTNode functionInvocationNode = new FunctionInvocationNode(token);
     72                FunctionInvocationNode functionInvocationNode = new FunctionInvocationNode(token);
    7373                functionInvocationNode.appendChild(identifier);
    7474                return functionInvocationNode;
     
    8383         * @return      the new FunctionInvocationNode
    8484         */
    85         public static ASTNode makeFunctionInvocationNode(String identifier, ASTNode toBeCopied, Token locationToken) {
    86                 ASTNode functionInvocationNode = new FunctionInvocationNode(toBeCopied);
     85        public static FunctionInvocationNode makeFunctionInvocationNode(String identifier, ASTNode toBeCopied, Token locationToken) {
     86                FunctionInvocationNode functionInvocationNode = new FunctionInvocationNode(toBeCopied);
    8787                for (ASTNode child : toBeCopied.getChildren()) {
    8888                        functionInvocationNode.appendChild(child);
Note: See TracChangeset for help on using the changeset viewer.