Exemplo n.º 1
0
 public void VisitFunctionCall(FunctionCallParseNode node)
 {
     node.LHS = _processor.ProcessReplacement(node.LHS);
     for (int i = 0, ilen = node.Arguments.Count; i < ilen; ++i)
     {
         node.Arguments[i] = _processor.ProcessReplacement(node);
     }
 }
Exemplo n.º 2
0
 public void VisitFunctionCall(FunctionCallParseNode node)
 {
     Print("Function Call (Parse Tree Node)");
     VisitSubnode(node.LHS);
     for (int i = 0, ilen = node.Arguments.Count; i < ilen; ++i)
     {
         VisitSubnode(node.Arguments[i]);
     }
 }
Exemplo n.º 3
0
 public void VisitFunctionCall(FunctionCallParseNode node)
 {
     VisitPreOrder(node);
     node.LHS.AcceptSyntaxTreeVisitor(_childVisitor);
     foreach (IExpressionNode argument in node.Arguments)
     {
         argument.AcceptSyntaxTreeVisitor(_childVisitor);
     }
     VisitPostOrder(node);
 }
Exemplo n.º 4
0
        public void Visit(FunctionCallParseNode node)
        {
            IdentifierParseNode?identifier = node.LHS as IdentifierParseNode;

            if (identifier == null)
            {
                _errors.AddError("LHS of function call operator is not an identifier.", node);
                return;
            }

            ShouldReplace = true;

            FunctionCallNode?resultNode = null;

            if (!_semanticModule.Functions.TryGetValue(identifier.Name, out FunctionDefinitionNode function))
            {
                _errors.AddError("Undefined function " + identifier.Name, node);
            }
            else if (function.Parameters.Length != node.Arguments.Count)
            {
                _errors.AddError($"Expected {function.Parameters.Length} argument(s), got {node.Arguments.Count}", node);
                return;
            }
            else
            {
                resultNode = new FunctionCallNode(function, node.Arguments);
            }

            if (resultNode == null)
            {
                resultNode = MakeFakeFunctionCall(identifier);
            }

            UpdateSymbolMap(resultNode, node);
            NewNode = resultNode;
        }
Exemplo n.º 5
0
 public void VisitFunctionCall(FunctionCallParseNode node)
 {
 }
Exemplo n.º 6
0
 public void VisitFunctionCall(FunctionCallParseNode node)
 {
     FunctionCallVisitor?.Visit(node);
 }