public void SetUp() { mCfg = CfgBuilderGenerator.Generate().Build(); mParenthesizedProduction = new ProductionRule( Symbol.Of <Expression>(), new[] { Symbol.Of <SymLParen>(), Symbol.Of <Expression>(), Symbol.Of <SymRParen>() }, mDummyMethodInfo); }
public void BuildTable() { var cfg = CfgBuilderGenerator .Generate() .Build(); var tableBuilder = new ParseTableBuilder(true); tableBuilder.BuildTableForCfg(cfg); Approvals.Verify(tableBuilder.Dump()); }
public void FindAllTerminals() { var cfgCore = CfgBuilderGenerator.Generate(); var actual = cfgCore.FindAllTerminals(); var expected = new HashSet <Symbol> { Symbol.Of <SymLParen>(), Symbol.Of <SymRParen>(), Symbol.Of <SymA>() }; Assert.IsTrue(actual.SetEquals(expected)); }
public void ListAllSymbols() { var cfg = CfgBuilderGenerator.Generate().Build(); var actual = cfg.AllSymbols; var expected = new HashSet <Symbol> { Symbol.Of <SymLParen>(), Symbol.Of <SymRParen>(), Symbol.Of <SymA>(), Symbol.Of <Expression>() }; Assert.IsTrue(expected.SetEquals(actual)); }
public void FindFirsts() { var core = CfgBuilderGenerator.Generate(); var actual = core.FindFirsts(); var expected = Utils.MakeSymbolDictionary( new List <Type[]> { new[] { typeof(SymLParen), typeof(SymLParen) }, new[] { typeof(SymRParen), typeof(SymRParen) }, new[] { typeof(SymA), typeof(SymA) }, new[] { typeof(Expression), typeof(SymLParen), typeof(SymA) } }); Assert.IsTrue(actual.DictionaryEquals(expected)); }
public void FindNeighborsTest() { var cfg = CfgBuilderGenerator.Generate().Build(); var item = new Item( Cfg.ExtendedStartSymbol.MakeProductionFromStartSymbol(Symbol.Of <Expression>()), 0, Symbol.EndOfInput); var kernel = new HashSet <Item> { item }; cfg.FindClosure(kernel); var actual = kernel.Select(i => i.ToString()).ToHashSet(); var expected = new HashSet <string> { "__START__ :== .expr, $", // Shift on expr "expr :== .expr expr, $", // Shift on expr "expr :== .'a', $", // Shift on a "expr :== .'(' expr ')', $", // Shift on ( "expr :== .expr expr, 'a'", "expr :== .'a', 'a'", "expr :== .'(' expr ')', 'a'", "expr :== .expr expr, '('", "expr :== .'a', '('", "expr :== .'(' expr ')', '('" }; /* * Transition on expr: * __START__ :== .expr, $ -> shift * expr :== .expr expr, $ -> shift * expr :== .'a', $ -> shift */ Assert.IsTrue(expected.SetEquals(actual)); }
public void SetUp() { mCfg = CfgBuilderGenerator.Generate().Build(); }
public void SetUp() { mCfg = CfgBuilderGenerator.Generate().Build(); mParseTable = new ParseTableBuilder().BuildTableForCfg(mCfg); }