private Bound_Expression_Node Bind_Assignment_Expression(Assignment_Expression_Syntax_Node expression_syntax) { var name = expression_syntax.Identifier_Token.Text; var bound_expression = Bind_Expression(expression_syntax.Expression); return(new Bound_Assignment_Expression_Node(name, bound_expression)); }
private Bound_Expression_Node Bind_Assignment_Expression(Assignment_Expression_Syntax_Node expression_syntax) { var name = expression_syntax.Identifier_Token.Text; var bound_expression = Bind_Expression(expression_syntax.Expression); var default_value = bound_expression.Type == typeof(int) ? (object)0 : bound_expression.Type == typeof(bool) ? (object)false : null; return(new Bound_Assignment_Expression_Node(name, bound_expression)); }
private Bound_Expression_Node Bind_Assignment_Expression(Assignment_Expression_Syntax_Node expression_syntax) { var name = expression_syntax.Identifier_Token.Text; var bound_expression = Bind_Expression(expression_syntax.Expression); var existing_variable = _variables.Keys.FirstOrDefault(v => v.Name == name); if (existing_variable != null) { _variables.Remove(existing_variable); } var variable = new Variable_Symbol(name, bound_expression.Type); _variables[variable] = null; return(new Bound_Assignment_Expression_Node(variable, bound_expression)); }
private Bound_Expression_Node Bind_Assignment_Expression(Assignment_Expression_Syntax_Node expression_syntax) { var name = expression_syntax.Identifier_Token.Text; var bound_expression = Bind_Expression(expression_syntax.Expression); var default_value = bound_expression.Type == typeof(int) ? (object)0 : bound_expression.Type == typeof(bool) ? (object)false : null; if (default_value == null) { throw new Exception($"Unsupported variable type: {bound_expression.Type}"); } _variables[name] = default_value; return(new Bound_Assignment_Expression_Node(name, bound_expression)); }
private Bound_Expression_Node Bind_Assignment_Expression(Assignment_Expression_Syntax_Node expression_syntax) { }