상속: IContext
예제 #1
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void EscapeStateTokenizeNonWhitespace()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("\\S");
     var expected = new NonWhitespaceToken();
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #2
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void EscapeStateTokenizeNumeric()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("\\d");
     var expected = new NumericToken();
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #3
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void BeginSetStateTokenizeNot()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("[^");
     var expected = new NotToken();
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #4
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void EscapeStateTokenizeLiteral()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("\\z");
     var expected = new LiteralToken { Character = 'z' };
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #5
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void EscapeStateTokenizeWord()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("\\w");
     var expected = new WordToken();
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #6
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void SetStateTokenizeRange()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("[a-");
     var expected = new RangeToken();
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #7
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void SetStateTokenizeBracketRight()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("[a]");
     var expected = new BracketRightToken();
     Assert.AreEqual(tokens.Last(), expected);
 }
예제 #8
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void RepetitionStateTokenizeToManyCommas()
 {
     var lexer = new Lexer();
     Assert.Throws<ArgumentException>(() => lexer.Tokenize("{1,,5}").ToList());
 }
예제 #9
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void LiteralStateTokenizeBracketLeft()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("[");
     var expected = new BracketLeftToken();
     Assert.AreEqual(tokens.First(), expected);
 }
예제 #10
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void RepetitionStateTokenizeMissingValues()
 {
     var lexer = new Lexer();
     Assert.Throws<ArgumentException>(() => lexer.Tokenize("{}").ToList());
 }
예제 #11
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void RepetitionStateTokenizeInvalid()
 {
     var lexer = new Lexer();
     Assert.Throws<ArgumentException>(() => lexer.Tokenize("{1,a}").ToList());
 }
예제 #12
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void LiteralStateTokenizeZeroOrOne()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("?");
     var expected = new RepetitionToken { MinOccurs = 0, MaxOccurs = 1 };
     Assert.AreEqual(tokens.First(), expected);
 }
예제 #13
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void LiteralStateTokenizeParenthesisRight()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize(")");
     var expected = new ParenthesisRightToken();
     Assert.AreEqual(tokens.First(), expected);
 }
예제 #14
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
        public void LiteralStateTokenizeLiterals()
        {
            var lexer = new Lexer();
            var tokens = lexer.Tokenize("abc");
            var expected = new List<IToken>
                                     {
                                         new LiteralToken {Character = 'a'}
                                         , new LiteralToken {Character = 'b'}
                                         ,  new LiteralToken {Character = 'c'}
                                     };

            Assert.IsTrue(expected.SequenceEqual(tokens));
        }
예제 #15
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void RepetitionStateTokenizeShort()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize("{7}");
     var expected = new RepetitionToken { MinOccurs = 7, MaxOccurs = 7 };
     Assert.AreEqual(tokens.First(), expected);
 }
예제 #16
0
파일: LexerTests.cs 프로젝트: 4sp1r3/rxrdg
 public void LiteralStateTokenizeAny()
 {
     var lexer = new Lexer();
     var tokens = lexer.Tokenize(".");
     var expected = new AnyToken();
     Assert.AreEqual(tokens.First(), expected);
 }
예제 #17
0
        public INode Parse(string expression)
        {
            var tokens = new Lexer().Tokenize(expression);

            return Parse(tokens);
        }