Пример #1
0
        /// <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();
        }
Пример #2
0
 public virtual void Visit(EachStatement statement)
 {
     VisitSubNodes(statement);
 }
Пример #3
0
        /// <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;
        }