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));
        }
예제 #3
0
        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));
        }
예제 #5
0
 private Bound_Expression_Node Bind_Assignment_Expression(Assignment_Expression_Syntax_Node expression_syntax)
 {
 }