public void Null() { Parser p = new Parser(StringToStream("null")); ParseNull o = p.ParseObject() as ParseNull; Assert.NotNull(o); }
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 )); }