internal static FormatPatternNode[] Parse(string source) { FormatToken[] tokens = FormatTokenizer.Tokenize(source); FormatTokenBuffer buffer = new FormatTokenBuffer(tokens); FormatPatternParser parser = new FormatPatternParser(buffer); return parser.Parse(); }
public void FormatTokenBuffer_Peek() { Buffer<FormatToken> buffer = new FormatTokenBuffer(new List<FormatToken> { FormatToken.CreateLiteral("Hello World") }); Assert.AreEqual(0, buffer.Position); Assert.AreEqual("Hello World", buffer.Peek().Value); Assert.AreEqual(0, buffer.Position); }
public void FormatTokenBuffer_Create() { Buffer<FormatToken> buffer = new FormatTokenBuffer(new List<FormatToken> { FormatToken.CreateLiteral("Hello World"), FormatToken.CreateSymbol('@') }); Assert.AreEqual(2, buffer.Length); Assert.AreEqual(0, buffer.Position); }
public void FormatTokenBuffer_Consume() { Buffer<FormatToken> buffer = new FormatTokenBuffer(new List<FormatToken> { FormatToken.CreateLiteral("0"), FormatToken.CreateLiteral("1"), FormatToken.CreateLiteral("2"), FormatToken.CreateLiteral("3") }); Assert.AreEqual(0, buffer.Position); buffer.Consume(2); Assert.AreEqual(2, buffer.Position); Assert.AreEqual("2", buffer.Read().Value); Assert.AreEqual(3, buffer.Position); }
public void TokenBuffer_Seek() { Buffer<FormatToken> buffer = new FormatTokenBuffer(new List<FormatToken> { FormatToken.CreateLiteral("Hello World"), FormatToken.CreateSymbol('@') }); Assert.AreEqual(0, buffer.Position); Assert.AreEqual("Hello World", buffer.Read().Value); Assert.AreEqual(1, buffer.Position); Assert.IsTrue(buffer.Seek(0)); Assert.AreEqual(0, buffer.Position); Assert.IsFalse(buffer.Seek(2)); Assert.AreEqual(0, buffer.Position); }
public void TokenBuffer_Rewind() { Buffer<FormatToken> buffer = new FormatTokenBuffer(new List<FormatToken> { FormatToken.CreateLiteral("Hello World"), FormatToken.CreateSymbol('@'), FormatToken.CreateWhitespace('\t') }); buffer.Seek(2); Assert.AreEqual(2, buffer.Position); buffer.Rewind(); Assert.AreEqual(0, buffer.Position); }
private FormatPatternParser(FormatTokenBuffer buffer) { _buffer = buffer; }