public void ParserErrorReportTests(string luaFile, bool useLua52) { var options = new LuaCompilerOptions() { SkipFirstLine = true, UseLua52Features = useLua52, }; var engine = Lua.CreateEngine(); var context = Lua.GetLuaContext(engine); var sourceUnit = context.CreateFileUnit(luaFile); //var reader = TestUtils.OpenReaderOrIgnoreTest(() => File.OpenText(luaFile)); var reader = TestUtils.OpenReaderOrIgnoreTest(sourceUnit.GetReader); var tokenizer = new Tokenizer(ErrorSink.Default, options); tokenizer.Initialize(null, reader, sourceUnit, SourceLocation.MinValue); var parser = new Parser(tokenizer, tokenizer.ErrorSink, options); TestUtils.AssertSyntaxError(() => { var ast = parser.Parse(); Assert.That(ast, Is.Not.Null); }); }
public void RunLexerOnLuaTestSuiteFile(string luaFile, bool useLua52) { var options = new LuaCompilerOptions() { SkipFirstLine = true, UseLua52Features = useLua52, }; var engine = Lua.CreateEngine(); var context = Lua.GetLuaContext(engine); var unit = context.CreateFileUnit(luaFile); var reader = TestUtils.OpenReaderOrIgnoreTest(unit.GetReader); var tokenizer = new Tokenizer(ErrorSink.Default, options); var sw = new Stopwatch(); sw.Start(); tokenizer.Initialize(null, reader, unit, SourceLocation.MinValue); int counter = tokenizer.EnumerateTokens() .TakeWhile(t => t.Symbol != Symbol.Eof) .Count(); sw.Stop(); Console.WriteLine("Tokenizer run: {0} ms, {1} tokens", sw.ElapsedMilliseconds, counter); }
public void GeneratorTest(SourceUnit sourceUnit, bool useLua52) { var options = new LuaCompilerOptions() { SkipFirstLine = true, UseLua52Features = useLua52, }; var reader = TestUtils.OpenReaderOrIgnoreTest(sourceUnit.GetReader); TestUtils.AssertSyntaxError(() => { var tokenizer = new Tokenizer(ErrorSink.Default, options); tokenizer.Initialize(null, reader, sourceUnit, SourceLocation.MinValue); var parser = new Parser(tokenizer, tokenizer.ErrorSink, options); var ast = parser.Parse(); Assert.That(ast, Is.Not.Null); var codeContext = new CodeContext((LuaContext)sourceUnit.LanguageContext); var gen = new Generator(codeContext); var expr = gen.Compile(ast, sourceUnit); Assert.That(expr, Is.Not.Null); }); }