/// <summary> /// Visit EachStatement /// </summary> /// <param name="statement">EachStatement to check</param> public override void Visit(EachStatement statement) { CreateChildSymbolTable(); //Store variable of Each = IdCon : Expression SymbolTable.AddVariableDefinition(statement.GetIdentifier(), statement.GetExpression()); //Visit statement statement.GetStatement().AcceptVisitor(this); MoveToParentSymbolTable(); }
public virtual void Visit(EachStatement statement) { VisitSubNodes(statement); }
/// <summary> /// Parser for EachStatement /// </summary> /// <returns>Parsed EachStatement</returns> public EachStatement ParseEachStatement() { EachStatement eachStatement = new EachStatement(); //Skip each token NextToken("each", "each (identifier : expression) Statement", "each"); //Skip ( token NextToken("(", "each (identifier : expression) Statement", '('); //Parse identifier CurrentToken = TokenStream.NextToken(); eachStatement.SetIdentifier(CurrentToken.GetValue().ToString()); //Skip : token NextToken(":", "each (identifier : expression) Statement", ':'); //Parse expression eachStatement.SetExpression(expressionParser.ParseExpression()); //Skip ) token NextToken(")", "each (identifier : expression) Statement", ')'); //Parse statement eachStatement.SetStatement(ParseStatement()); return eachStatement; }