Exemplo n.º 1
0
        public void Null()
        {
            Parser    p = new Parser(StringToStream("null"));
            ParseNull o = p.ParseObject() as ParseNull;

            Assert.NotNull(o);
        }
Exemplo n.º 2
0
        private static ICharParser <Datum> BuildParseDatumWithBoxes()
        {
            ICharParser <IDatumBuilder> parseDatum = GetParseVariable <IDatumBuilder>();

            ICharParser <IDatumBuilder> p0 = ParseAlternatives
                                             (
                ParseNull.Atom(),
                ParseFalse.Atom(),
                ParseTrue.Atom(),
                ParseConvert(ParseString, s => (Datum)(new StringDatum(s)), null).Atom(),
                ParseConvert(ParseBigRational, r => (Datum)(new RationalDatum(r)), null).Atom(),
                ParseConvert(ParseBigInteger, b => (Datum)(new IntDatum(b)), null).Atom(),
                ParseConvert(ParseDouble, d => (Datum)(new FloatDatum(d)), null).Atom(),
                ParseConvert(ParseSymbol, s => (Datum)(new SymbolDatum(s)), null).Atom(),
                ParseConvert(ParseChar, c => (Datum)(new CharDatum(c)), null).Atom(),
                ParseConvert(ParseGuid, g => (Datum)(new GuidDatum(g)), null).Atom(),
                ParseConvert(ParseByteArray, b => (Datum)(new ByteArrayDatum(b)), null).Atom(),
                BuildQuoteLikeParser(parseDatum, "'", "quote"),
                BuildQuoteLikeParser(parseDatum, "`", "quasiquote"),
                BuildQuoteLikeParser(parseDatum, ",@", "unquote-splicing"),
                BuildQuoteLikeParser(parseDatum, ",", "unquote"),
                ParseConvert(BuildListParser(parseDatum), lst => (IDatumBuilder)(new ListBuilder(lst)), null),
                ParseConvert(BuildSetParser(parseDatum, SetBuilder.Empty, (s, i) => s.Add(i)), s => (IDatumBuilder)s, null),
                ParseConvert(BuildDictionaryParser(parseDatum, parseDatum, DictionaryBuilder.Empty, (d, k, v) => d.Add(k, v)), dict => (IDatumBuilder)dict, null),
                BuildParseMutableBox(parseDatum).WithOptionalLeadingWhiteSpace()
                                             )
                                             .WithOptionalLeadingWhiteSpace();

            SetParseVariable(parseDatum, p0);

            return(ParseConvert
                   (
                       p0,
                       builder => builder.BuildAll(),
                       null
                   ));
        }