public void AllLevelsRecovery(Type langDef) { var lang = Language.Get(langDef); var context = new RecoveryLang(); Assert.IsTrue(lang.Grammar.Symbols[lang.Identify("beacon")].Categories.Has(SymbolCategory.Beacon)); Assert.IsTrue(lang.Grammar.Symbols[lang.Identify("{")].Categories.Has(SymbolCategory.DoNotInsert)); Assert.IsTrue(lang.Grammar.Symbols[lang.Identify("{")].Categories.Has(SymbolCategory.DoNotDelete)); Parse( lang, // 3 errors: // 1st handled by panic mode // 2nd uses error-production rule. // 3rd reports missing '}' "{ callFunc callFunc \n callFunc callFunc \n callFunc beacon { callFunc \n callFunc \n callFunc } \n callFunc(); \n"); AssertErrors(1, 2); }
private void Reset() { context = new RecoveryLang(); errorCount = 0; }