示例#1
0
        /// <summary>
        /// Visit LetStatement
        /// </summary>
        /// <param name="statement">LetStatement to check</param>
        public override void Visit(LetStatement statement)
        {
            foreach (Assignment assignment in statement.GetAssignments())
            {
                //Go level deeper in SymbolTable, to check using variables in other assignments
                CreateChildSymbolTable();

                //Visit Assignment
                assignment.AcceptVisitor(this);
            }

            //Visit statements
            foreach(Statement stmt in statement.GetStatements())
            {
                stmt.AcceptVisitor(this);
            }

            //Go back to level of statement in SymbolTable
            foreach (Assignment assignment in statement.GetAssignments())
            {
                MoveToParentSymbolTable();
            }
        }