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)); }
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); }