Changeset 2442


Ignore:
Timestamp:
Oct 12, 2012, 4:34:45 PM (7 years ago)
Author:
ksherdy
Message:

Added helpers.

File:
1 edited

Legend:

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

    r2433 r2442  
    22
    33import java.util.List;
    4 import java.util.Map.Entry;
    54
    65import ast.ASTNode;
    76import ast.AssignmentNode;
    87import ast.BinaryOperatorNode;
     8import ast.CompoundVariableNode;
    99import ast.FunctionDefNode;
    1010import ast.FunctionInvocationNode;
     
    8888                return node.child(0);
    8989        }
     90
     91        public static ASTNode functionInvocationArg(FunctionInvocationNode node, int index) {
     92                int argIndex = 1 + index;
     93                if(argIndex > node.getChildren().size()) {
     94                        throw new RuntimeException("Function invocation argument out of range.");
     95                }
     96                return node.getChildren().get(argIndex);
     97        }
     98       
    9099        public static List<ASTNode> functionInvocationArgs(FunctionInvocationNode node) {
    91100                return node.getChildren().subList(1, node.nChildren());
    92101        }
    93102       
     103    public static String functionInvocationName(ASTNode node) {
     104        String name = new String();
     105        if(node instanceof IdentifierNode) {
     106            name = Accessors.identifierLexeme(node);
     107        }
     108        else if (node instanceof CompoundVariableNode) {
     109            ASTNode pckage = node.child(0);
     110            ASTNode member = node.child(1);
     111            name = Accessors.identifierLexeme(pckage);
     112            name += ".";
     113            name += Accessors.identifierLexeme(member);
     114        }
     115        return name;
     116    }   
     117       
    94118        ////////////////////////////////////////////////////////////////////////////
    95119        // IdentifierNode helper
    96120        ////////////////////////////////////////////////////////////////////////////
    97         public static String identifierLexeme(ASTNode functionName) {
    98                 IdentifierNode identifier = (IdentifierNode)functionName;
     121        public static String identifierLexeme(ASTNode node) {
     122                IdentifierNode identifier = (IdentifierNode)node;
    99123                return identifier.getToken().getLexeme();
    100124        }
Note: See TracChangeset for help on using the changeset viewer.