/// <summary> /// Быстрое проведение тестирования <see cref="Parser.ParserLang"/>. /// Удаляет жетоны с CH_. /// </summary> /// <param name="resource">Текст тестирования.</param> /// <param name="isSuccess">True, если ожидается успех парсирования.</param> /// <param name="tokens">Количество ожидаемых жетонов. Установите -1 для игнорирования.</param> /// <param name="parser">Особые правила парсера. Оставьте null, если нужен язык <see cref="parserLang"/>.</param> /// <param name="lexer">Особые правила лексера. Оставьте null, если нужен язык <see cref="lexerLang"/>.</param> public ReportParser CheckTest(string resource, bool isSuccess = true, int tokens = -1, ParserLang parser = null, LexerLang lexer = null) { if (parser == null) { parser = parserLang; } if (lexer == null) { lexer = lexerLang; } List <Token> listT = lexer.SearchTokens(StringToStream(resource)); Assert.IsNotNull(listT); Console.WriteLine("Count tokens: " + listT.Count); foreach (Token token in listT) { Console.WriteLine(token); } Console.WriteLine("\n ---- Without CH_:"); listT.RemoveAll((Token t) => t.Type.Name.Contains("CH_")); Console.WriteLine("Count tokens: " + listT.Count); foreach (Token token in listT) { Console.WriteLine(token); } ReportParser report = parser.Check(listT); Console.WriteLine(report); if (tokens != -1) { Assert.AreEqual(tokens, listT.Count); } Assert.AreEqual(isSuccess, report.IsSuccess); return(report); }
public void TestSuperEasyLang() { List <Token> tokens = EasyLexerLang.SearchTokens(StringToStream("a=2")); tokens.RemoveAll((s) => s.Type.Name.Contains("CH_")); tokens.WriteAll(); Console.WriteLine(SuperEasyParserLang.Check(tokens).Compile); List <string> StackCode = SuperEasyParserLang.Compile(tokens); StackCode.WriteAll(); CollectionAssert.AreEqual(new string[] { "a", "2", "=" }, StackCode); EasyStackLang.Execute(StackCode); Assert.AreEqual(2, EasyStackLang.Variables["a"], double.Epsilon); }
public void TestMethod1() { List <Token> tokens = EasyLexerLang.SearchTokens(StringToStream(Resources.Stack_var_print)); tokens.RemoveAll((s) => s.Type.Name.Contains("CH_")); tokens.WriteAll(); Console.WriteLine(EasyParserLang.Check(tokens).Compile); List <string> StackCode = EasyParserLang.Compile(tokens); StackCode.WriteAll(); CollectionAssert.AreEqual(new string[] { "a", "2", "=", "print" }, StackCode); Console.WriteLine("Выполнение стековой машины..."); EasyStackLang.Execute(StackCode); Console.WriteLine("Выполнение стековой машины завершено."); Assert.AreEqual(1, EasyStackLang.Variables.Count); }