public void TestStrCombine()
        {
            var r = StrCombine.FromFile(SourceFile("term_strz.bin"));


            Assert.AreEqual(r.StrTerm, "foo");
            Assert.AreEqual(r.StrLimit, "bar|");
            Assert.AreEqual(r.StrEos, "baz@");
            Assert.AreEqual(r.StrCalc, "bar");
            Assert.AreEqual(r.StrCalcBytes, "baz");
            Assert.AreEqual(r.TermOrLimit, "foo");
            Assert.AreEqual(r.TermOrEos, "baz@");
            Assert.AreEqual(r.TermOrCalc, "foo");
            Assert.AreEqual(r.TermOrCalcBytes, "baz");
            Assert.AreEqual(r.LimitOrEos, "bar|");
            Assert.AreEqual(r.LimitOrCalc, "bar");
            Assert.AreEqual(r.LimitOrCalcBytes, "bar|");
            Assert.AreEqual(r.EosOrCalc, "bar");
            Assert.AreEqual(r.EosOrCalcBytes, "baz@");
            Assert.AreEqual(r.CalcOrCalcBytes, "baz");
        }
Esempio n. 2
0
        private static string CombineOutput(string outputX, string outputY, StrCombine combine)
        {
            switch (combine)
            {
            case StrCombine.Ignore:
                return(String.Empty);

            case StrCombine.Append:
                return(String.Concat(outputX, Environment.NewLine, outputY));

            case StrCombine.Prepend:
                return(String.Concat(outputY, Environment.NewLine, outputX));

            case StrCombine.LeftOnly:
                return(outputX);

            case StrCombine.RightOnly:
                return(outputY);

            default:
                throw new ArgumentException($"No combine logic defined for combine type: {Enum.GetName(typeof(StrCombine), combine)}");
            }
        }
Esempio n. 3
0
        public static GrammarParseResult Combine(string rawText, GrammarParseResult x, GrammarParseResult y, BoolCombine isSuccessfulCombine = BoolCombine.Or, ArithCombine valueCombine = ArithCombine.Add, StrCombine outputCombine = StrCombine.Ignore)
        {
            GrammarParseResult combined = new GrammarParseResult(rawText);

            combined.IsSuccessful = CombineSuccessful(x.IsSuccessful, y.IsSuccessful, isSuccessfulCombine);
            combined.Value        = CombineValue(x.Value, y.Value, valueCombine);
            combined.Output       = CombineOutput(x.Output, y.Output, outputCombine);

            combined.Children.Add(x);
            combined.Children.Add(y);

            return(combined);
        }