public virtual bool List(OMetaStream <char> inputStream, out OMetaList <HostExpression> result, out OMetaStream <char> modifiedStream)
        {
            OMetaList <HostExpression> xs = null;

            modifiedStream = inputStream;
            if (!MetaRules.Apply(
                    delegate(OMetaStream <char> inputStream2, out OMetaList <HostExpression> result2, out OMetaStream <char> modifiedStream2)
            {
                modifiedStream2 = inputStream2;
                if (!MetaRules.ApplyWithArgs(Exactly, modifiedStream2, out result2, out modifiedStream2, ("(").AsHostExpressionList()))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                if (!MetaRules.Many(
                        delegate(OMetaStream <char> inputStream3, out OMetaList <HostExpression> result3, out OMetaStream <char> modifiedStream3)
                {
                    modifiedStream3 = inputStream3;
                    if (!MetaRules.Apply(SExpression, modifiedStream3, out result3, out modifiedStream3))
                    {
                        return(MetaRules.Fail(out result3, out modifiedStream3));
                    }
                    return(MetaRules.Success());
                }
                        , modifiedStream2, out result2, out modifiedStream2))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                xs = result2;
                if (!MetaRules.ApplyWithArgs(Exactly, modifiedStream2, out result2, out modifiedStream2, (")").AsHostExpressionList()))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                result2 = (new SExprList(xs.ToIEnumerable <ISExpression>())).AsHostExpressionList();
                return(MetaRules.Success());
            }, modifiedStream, out result, out modifiedStream))
            {
                return(MetaRules.Fail(out result, out modifiedStream));
            }
            return(MetaRules.Success());
        }
        public virtual bool String(OMetaStream <char> inputStream, out OMetaList <HostExpression> result, out OMetaStream <char> modifiedStream)
        {
            OMetaList <HostExpression> s = null;

            modifiedStream = inputStream;
            if (!MetaRules.Apply(
                    delegate(OMetaStream <char> inputStream2, out OMetaList <HostExpression> result2, out OMetaStream <char> modifiedStream2)
            {
                modifiedStream2 = inputStream2;
                if (!MetaRules.ApplyWithArgs(Exactly, modifiedStream2, out result2, out modifiedStream2, ("\"").AsHostExpressionList()))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                if (!MetaRules.Many(
                        delegate(OMetaStream <char> inputStream3, out OMetaList <HostExpression> result3, out OMetaStream <char> modifiedStream3)
                {
                    modifiedStream3 = inputStream3;
                    if (!MetaRules.Or(modifiedStream3, out result3, out modifiedStream3,
                                      delegate(OMetaStream <char> inputStream4, out OMetaList <HostExpression> result4, out OMetaStream <char> modifiedStream4)
                    {
                        modifiedStream4 = inputStream4;
                        if (!MetaRules.Apply(EscapeChar, modifiedStream4, out result4, out modifiedStream4))
                        {
                            return(MetaRules.Fail(out result4, out modifiedStream4));
                        }
                        return(MetaRules.Success());
                    }
                                      , delegate(OMetaStream <char> inputStream4, out OMetaList <HostExpression> result4, out OMetaStream <char> modifiedStream4)
                    {
                        modifiedStream4 = inputStream4;
                        if (!MetaRules.Apply(
                                delegate(OMetaStream <char> inputStream5, out OMetaList <HostExpression> result5, out OMetaStream <char> modifiedStream5)
                        {
                            modifiedStream5 = inputStream5;
                            if (!MetaRules.Not(
                                    delegate(OMetaStream <char> inputStream6, out OMetaList <HostExpression> result6, out OMetaStream <char> modifiedStream6)
                            {
                                modifiedStream6 = inputStream6;
                                if (!MetaRules.ApplyWithArgs(Exactly, modifiedStream6, out result6, out modifiedStream6, ("\"").AsHostExpressionList()))
                                {
                                    return(MetaRules.Fail(out result6, out modifiedStream6));
                                }
                                return(MetaRules.Success());
                            }
                                    , modifiedStream5, out result5, out modifiedStream5))
                            {
                                return(MetaRules.Fail(out result5, out modifiedStream5));
                            }
                            if (!MetaRules.Apply(Character, modifiedStream5, out result5, out modifiedStream5))
                            {
                                return(MetaRules.Fail(out result5, out modifiedStream5));
                            }
                            return(MetaRules.Success());
                        }, modifiedStream4, out result4, out modifiedStream4))
                        {
                            return(MetaRules.Fail(out result4, out modifiedStream4));
                        }
                        return(MetaRules.Success());
                    }
                                      ))
                    {
                        return(MetaRules.Fail(out result3, out modifiedStream3));
                    }
                    return(MetaRules.Success());
                }
                        , modifiedStream2, out result2, out modifiedStream2))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                s = result2;
                if (!MetaRules.ApplyWithArgs(Exactly, modifiedStream2, out result2, out modifiedStream2, ("\"").AsHostExpressionList()))
                {
                    return(MetaRules.Fail(out result2, out modifiedStream2));
                }
                result2 = (s).AsHostExpressionList();
                return(MetaRules.Success());
            }, modifiedStream, out result, out modifiedStream))
            {
                return(MetaRules.Fail(out result, out modifiedStream));
            }
            return(MetaRules.Success());
        }