Exemple #1
0
        private function_parameter Parse_function_parameter()
        {
            function_parameter _self = null;

            List <minus> __minus = new List <minus>();
            var          _minus  = Parse_minus();

            while (_minus != null)
            {
                __minus.Add(_minus); _minus = Parse_minus();;
            }
            if (__minus.Count > 0)
            {
                _minus = new minus(__minus);
            }



            var _ident_lhs = Parse_Paren();

            var _ident_rhs = Parse_Paren(); if (_ident_rhs != null && _ident_rhs.expression == "(")

            {
                _ident_rhs = null; _index--;
            }

            // this allows us to have functions with no parameters by checking for back to back of opposite direction.

            if (_ident_lhs != null && _ident_rhs == null)
            {
                var _parameter_sequence = Parse_parameter_sequence();
                _ident_rhs = Parse_Paren();                                                                                                       // this checks to see if after _parameter_sequence maybe we have a closing param

                if ((_parameter_sequence == null && _ident_rhs != null) || (_parameter_sequence != null && _ident_rhs != null) || _minus != null) // however, if we are missing a parameter we must have a closing ) to fill out a paramless function or we may have a leading minus as in --(-6+2)
                {
                    _self = new function_parameter(_minus, _ident_lhs, _parameter_sequence, _ident_rhs);
                }
            }
            else if (_ident_lhs != null && _ident_rhs != null)
            {
                _self = new function_parameter(_minus, _ident_lhs, null, _ident_rhs);
            }


            return(_self);
        }
Exemple #2
0
 public factor(signed_function _signed_function, function_parameter _function_parameter)
 {
     signed_function    = _signed_function;
     function_parameter = _function_parameter;
     expression         = signed_function?.expression + function_parameter.expression;
 }