コード例 #1
0
ファイル: ParsercTests.cs プロジェクト: JackWangCUMT/lcc-1
        public void parserc_integer_list()
        {
            Parser <char, LinkedList <int> > parser = CharParserc.IntegerList();
            string src = "{1,2,3,4,5}";
            ITokenStream <char> tokens = new CharStream(src);
            var result = parser(tokens);

            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(5, result.First().Value.Count());
            {
                int i = 1;
                foreach (int r in result.First().Value)
                {
                    Assert.AreEqual(i, r);
                    i++;
                }
            }

            string empty = "{}";

            tokens = new CharStream(empty);
            result = parser(tokens);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(0, result.First().Value.Count());
        }
コード例 #2
0
ファイル: ParsercTests.cs プロジェクト: JackWangCUMT/lcc-1
        public void parserc_natural()
        {
            Parser <char, uint> parser = CharParserc.Natural();
            string src = "629abc";
            ITokenStream <char> tokens = new CharStream(src);
            var result = parser(tokens);

            Assert.AreEqual(result.Count(), 3);
            Assert.AreEqual(result.First().Value, 629u);
            Assert.AreEqual(result.ElementAt(1).Value, 62u);
            Assert.AreEqual(result.ElementAt(2).Value, 6u);
        }
コード例 #3
0
ファイル: ParsercTests.cs プロジェクト: JackWangCUMT/lcc-1
        public void parserc_integer()
        {
            Parser <char, int>  parser = CharParserc.Integer();
            string              src    = "-629abc";
            ITokenStream <char> tokens = new CharStream(src);
            var result = parser(tokens);

            Assert.AreEqual(result.Count(), 3);
            Assert.AreEqual(result.First().Value, -629);
            Assert.AreEqual(result.ElementAt(1).Value, -62);
            Assert.AreEqual(result.ElementAt(2).Value, -6);
        }
コード例 #4
0
ファイル: ParsercTests.cs プロジェクト: JackWangCUMT/lcc-1
        public void parserc_word()
        {
            Parser <char, string> parser = CharParserc.Word();
            string src = "abc";
            ITokenStream <char> tokens = new CharStream(src);
            var result = parser(tokens);

            Assert.AreEqual(result.Count(), 4);
            Assert.AreEqual(result.First().Value, "abc");
            Assert.AreEqual(result.ElementAt(1).Value, "ab");
            Assert.AreEqual(result.ElementAt(2).Value, "a");
            Assert.AreEqual(result.ElementAt(3).Value, "");
        }
コード例 #5
0
ファイル: ParsercTests.cs プロジェクト: JackWangCUMT/lcc-1
        public void parserc_bind()
        {
            Parser <char, char[]> parser =
                CharParserc.Lower().Bind(x => { return
                                                (CharParserc.Lower().Bind(y => { return
                                                                                 Result <char, char[]>(new char[] { x, y }); })); });
            string src = "abc";
            ITokenStream <char> tokens = new CharStream(src);
            var result = parser(tokens);

            Assert.AreEqual(result.Count(), 1);
            Assert.AreEqual(result.First().Value.Length, 2);
            Assert.AreEqual(result.First().Value.First(), 'a');
            Assert.AreEqual(result.First().Value[1], 'b');
            Assert.AreEqual(result.First().Remain.Head(), 'c');
        }