public void LineBreak() { StructLexer lexer = new StructLexer("struct BITMAPINFOHEADER {\n}\n"); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.String)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.String)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.OpenCurly)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.CloseCurly)); Assert.IsTrue(lexer.EndOfStream()); }
[Test] public void LineBreak() { StructLexer lexer = new StructLexer("struct BITMAPINFOHEADER {\n}\n"); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.String)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.String)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.OpenCurly)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.CloseCurly)); Assert.IsTrue(lexer.EndOfStream()); }
[Test] public void SimpleLexer() { StructLexer lexer = new StructLexer("struct BITMAPINFOHEADER { }"); Assert.AreEqual(StructTokenType.String, lexer.PeekNextToken()); Assert.AreEqual("struct", lexer.GetNextToken(StructTokenType.String)); Assert.AreEqual(StructTokenType.String, lexer.PeekNextToken()); Assert.AreEqual("BITMAPINFOHEADER", lexer.GetNextToken(StructTokenType.String)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.OpenCurly)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.CloseCurly)); Assert.IsTrue(lexer.EndOfStream()); }
public void SimpleLexer() { StructLexer lexer = new StructLexer("struct BITMAPINFOHEADER { }"); Assert.AreEqual(StructTokenType.String, lexer.PeekNextToken()); Assert.AreEqual("struct", lexer.GetNextToken(StructTokenType.String)); Assert.AreEqual(StructTokenType.String, lexer.PeekNextToken()); Assert.AreEqual("BITMAPINFOHEADER", lexer.GetNextToken(StructTokenType.String)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.OpenCurly)); Assert.IsTrue(lexer.CheckNextToken(StructTokenType.CloseCurly)); Assert.IsTrue(lexer.EndOfStream()); }
private void LoadStructFile(string fileName, StructSourceContext context) { StructLexer lexer = new StructLexer(fileName, context.GetSourceText(fileName)); while(!lexer.EndOfStream()) { List<Attribute> attrs = new List<Attribute>(); LoadAttributes(lexer, attrs); string token = lexer.GetNextToken(StructTokenType.String); if (token == "struct") LoadStruct(lexer, attrs); else if (token == "enum") LoadEnum(lexer, attrs); else if (token == "alias") LoadAlias(lexer, attrs); else if (token == "plugin") LoadPlugin(lexer); else if (token == "include") { string includeName = lexer.GetNextToken(StructTokenType.String); lexer.GetNextToken(StructTokenType.Semicolon); LoadStructFile(includeName, context); } else throw new Exception("Unexpected top-level item " + token); } }