Beispiel #1
0
        public void ParseComplexDictionary()
        {
            Datum complexDictionary = DictionaryDatum.FromEnumerable
                                      (
                new Tuple <Datum, Datum>[]
            {
                new Tuple <Datum, Datum>(BooleanDatum.True, BooleanDatum.False),
                new Tuple <Datum, Datum>(NullDatum.Value, new IntDatum(1000)),
                new Tuple <Datum, Datum>(new ListDatum(new Datum[] { BooleanDatum.True, new RationalDatum(BigRational.OneHalf) }.ToImmutableList()), new SymbolDatum("blah")),
            }
                                      );

            var result = CharParserContext.TryParse
                         (
                Parser.ParseConvert
                (
                    parseDatum,
                    d => DatumEqualityComparer.Instance.Equals(d, complexDictionary),
                    null
                ),
                " { #t => #f, #nil => 1000, (#t 1/2) => blah }"
                         );

            Assert.AreEqual("{ success, pos = 0, len = 45, value = True }", formatBoolResult(result));
        }
Beispiel #2
0
            public Datum Build(ImmutableDictionary <int, MutableBoxDatum> boxes)
            {
                DictionaryDatum result = DictionaryDatum.Empty;

                foreach (Tuple <IDatumBuilder, IDatumBuilder> value in values)
                {
                    result = result.Add(value.Item1.Build(boxes), value.Item2.Build(boxes));
                }
                return(result);
            }