コード例 #1
0
        private void ParseSearchFilter()
        {
            m_schemaClassName = String.Empty;
            m_userNames.Clear();

            StringTokenizer filterTokenizer = new StringTokenizer(
                new char[] { ';', '=', ')', '(', '&', '|', '!' },
                new char[] { },
                Filter);

            while (filterTokenizer.HasMoreTokens())
            {
                string filterToken = filterTokenizer.GetNextToken();

                if (StringUtil.CompareIgnoreCase(filterToken, "objectclass"))
                {
                    m_schemaClassName = filterTokenizer.GetNextToken();
                }

                if (StringUtil.CompareIgnoreCase(filterToken, DirectoryServicesUtils.DOMAIN_ACCOUNT_NAME_PROPERTY))
                {
                    m_userNames.Add(filterTokenizer.GetNextToken());
                }
            }
        }
コード例 #2
0
        public void basic_test()
        {
            var tokenizer = new StringTokenizer("42 + 3712");

            tokenizer.GetNextToken().Should().Be(TokenType.Integer);
            tokenizer.MatchInteger(out var i).Should().BeTrue();
            i.Should().Be(42);
            tokenizer.CurrentToken.Should().Be(TokenType.Plus);
            tokenizer.GetNextToken().Should().Be(TokenType.Integer);
            tokenizer.MatchInteger(out i).Should().BeTrue();
            i.Should().Be(3712);
        }
コード例 #3
0
        public void floating()
        {
            var tokenizer = new StringTokenizer("37.12e3 + 4.E2");

            tokenizer.GetNextToken().Should().Be(TokenType.Double);
            tokenizer.MatchInteger(out _).Should().BeFalse();
            tokenizer.MatchDouble(out var d).Should().BeTrue();
            d.Should().BeApproximately(37.12e3, double.Epsilon);
            tokenizer.CurrentToken.Should().Be(TokenType.Plus);
            tokenizer.GetNextToken().Should().Be(TokenType.Double);
            tokenizer.MatchDouble(out d).Should().BeTrue();
            d.Should().BeApproximately(4E2, double.Epsilon);
        }
コード例 #4
0
        public void strings()
        {
            var tokenizer = new StringTokenizer("\"C\" + 3 + \"PO\"");

            tokenizer.GetNextToken().Should().Be(TokenType.String);
            tokenizer.MatchString(out var s).Should().BeTrue();
            s.Should().Be("C");
            tokenizer.CurrentToken.Should().Be(TokenType.Plus);
            tokenizer.GetNextToken().Should().Be(TokenType.Integer);
            tokenizer.MatchInteger(out var i).Should().BeTrue();
            i.Should().Be(3);
            tokenizer.CurrentToken.Should().Be(TokenType.Plus);
            tokenizer.GetNextToken().Should().Be(TokenType.String);
            tokenizer.MatchString(out s).Should().BeTrue();
            s.Should().Be("PO");
        }
コード例 #5
0
        public Node Parse(string expression)
        {
            var t = new StringTokenizer(expression);

            // With this tokenizer, head must be forwarded at first.
            return(t.GetNextToken() == TokenType.EndOfInput
                        ? null
                        : Parse(t));
        }
コード例 #6
0
        public void identifiers()
        {
            var tokenizer = new StringTokenizer("Count * ( _frequency - 1 )");

            tokenizer.GetNextToken().Should().Be(TokenType.Identifier);
            tokenizer.MatchIdentifier(out var id).Should().BeTrue();
            id.Should().Be("Count");
            tokenizer.CurrentToken.Should().Be(TokenType.Multiplicative);
            tokenizer.GetNextToken().Should().Be(TokenType.OpenParenthesis);
            tokenizer.GetNextToken().Should().Be(TokenType.Identifier);
            tokenizer.MatchIdentifier(out id).Should().BeTrue( );
            id.Should().Be("_frequency");
            tokenizer.CurrentToken.Should().Be(TokenType.Minus);
            tokenizer.GetNextToken().Should().Be(TokenType.Integer);
            tokenizer.MatchInteger(out var i).Should().BeTrue();
            i.Should().Be(1);
            tokenizer.CurrentToken.Should().Be(TokenType.CloseParenthesis);
        }
コード例 #7
0
        public void parsing_identifiers(string toParse, string commaSeparatedIdentifiers)
        {
            var             identifiers = commaSeparatedIdentifiers.Split(',');
            int             i           = 0;
            StringTokenizer t           = new StringTokenizer(toParse);

            while (t.GetNextToken() != TokenType.EndOfInput)
            {
                if (t.CurrentToken == TokenType.Identifier)
                {
                    identifiers[i++].Should().Be(t.CurrentBuffer);
                }
            }
        }
コード例 #8
0
        public void list_of_numbers(string toParse)
        {
            var           t      = new StringTokenizer(toParse);
            List <double> values = new List <double>();

            t.GetNextToken();
            while (t.CurrentToken != TokenType.EndOfInput)
            {
                Assert.That(t.CurrentToken == TokenType.Number);
                double v;
                Assert.That(t.MatchDouble(out v));
                values.Add(v);
            }
            CollectionAssert.AreEqual(toParse.Split(' ').Select(s => Double.Parse(s)).ToList(), values);
        }
コード例 #9
0
        public void list_of_variable(string toParse)
        {
            var           t      = new StringTokenizer(toParse);
            List <string> values = new List <string>();

            t.GetNextToken();
            while (t.CurrentToken != TokenType.EndOfInput)
            {
                Assert.That(t.CurrentToken == TokenType.Variable);
                string v;
                Assert.That(t.MatchString(out v));
                values.Add(v);
            }
            CollectionAssert.AreEqual(toParse.Split(' ').ToList(), values);
        }