/// <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); }
/// <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); }