private void ProcessCallStatement(CallStatementNode theCallStatementNode) { var visualizer = this.context.GetVisualizerByName(theCallStatementNode.VizualizerName.Name); var visualizerCall = CreateVisualizerCallFrom(theCallStatementNode); visualizer.UpdateWith(visualizerCall); }
public void Visit(CallStatementNode node) { VerifyCall(node); var procedureName = node.AnchorToken.Lexeme; Type type = procedureTable[procedureName].type; if (type != Type.VOID) { builder.AppendLine("\t\tpop"); } }
private VisualizerCall CreateVisualizerCallFrom(CallStatementNode theCallStatementNode) { var arguments = new List <CallArgument>(); foreach (var anArgument in theCallStatementNode.Arguments.Arguments) { var value = ConvertToValueFrom(anArgument); arguments.Add(new CallArgument(anArgument.Name.Name, value)); } return(new VisualizerCall(arguments)); }
public Node AssignmentOrCallStatement() { var id_node = Node.fromToken(Expect(TokenCategory.IDENTIFIER)); Node node = null; if (Has(TokenCategory.PARENTHESIS_OPEN)) { node = new CallStatementNode() { AnchorToken = id_node.AnchorToken }; Expect(TokenCategory.PARENTHESIS_OPEN); node.Add(Optional(firstOfExpression, () => { var list = new List <Node>() { Expression() }; list.AddRange(ZeroOrMore(TokenCategory.COMMA, Expression, true)); return(list); })); Expect(TokenCategory.PARENTHESIS_CLOSE); } else if (Has(TokenCategory.BRACKET_OPEN) || Has(TokenCategory.COLON_EQUAL)) { node = new AssignmentNode(); if (Has(TokenCategory.BRACKET_OPEN)) { Expect(TokenCategory.BRACKET_OPEN); var expression_node = Expression(); Expect(TokenCategory.BRACKET_CLOSE); node.Add(new ListIndexNode() { id_node, expression_node }); } else { node.Add(id_node); } node.AnchorToken = Expect(TokenCategory.COLON_EQUAL); node.Add(Expression()); } else { throw new SyntaxError(firstOfAssignmentOrCallStatement, tokenStream.Current); } Expect(TokenCategory.SEMICOLON); return(node); }
public Type Visit(CallStatementNode node) { VerifyCall(node); return(Type.VOID); }