Esempio n. 1
0
        /// <summary>
        /// Traverses assign AST
        /// </summary>
        /// <param name="ast">AssignAST</param>
        private void VisitAssignAST(AssignAST ast)
        {
            string variableName = (string)ast.left.value;
            object right        = this.VisitNode(ast.right);
            string type         = this.symbolTable.LookupSymbol(variableName).type;

            this.symbolTable.DefineSymbol(variableName, type, right);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets an assignment AST
        /// </summary>
        /// <returns>AssignmentAST</returns>
        private AST Assignment()
        {
            VariableAST left  = this.Variable() as VariableAST;
            Token       token = this.currentToken;

            this.ConsumeToken(token.type);
            AST       right = this.Expression();
            AssignAST ast   = new AssignAST(left, this.currentToken, right);

            return(ast);
        }