コード例 #1
0
 public void SetUp()
 {
     mCfg = CfgBuilderGenerator.Generate().Build();
     mParenthesizedProduction = new ProductionRule(
         Symbol.Of <Expression>(),
         new[] { Symbol.Of <SymLParen>(), Symbol.Of <Expression>(), Symbol.Of <SymRParen>() },
         mDummyMethodInfo);
 }
コード例 #2
0
        public void BuildTable()
        {
            var cfg = CfgBuilderGenerator
                      .Generate()
                      .Build();

            var tableBuilder = new ParseTableBuilder(true);

            tableBuilder.BuildTableForCfg(cfg);
            Approvals.Verify(tableBuilder.Dump());
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
ファイル: FindFirstsTest.cs プロジェクト: ph3rin/sacc
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
ファイル: ParserConstructionTest.cs プロジェクト: ph3rin/sacc
 public void SetUp()
 {
     mCfg = CfgBuilderGenerator.Generate().Build();
 }
コード例 #8
0
ファイル: ParseTest.cs プロジェクト: ph3rin/sacc
 public void SetUp()
 {
     mCfg        = CfgBuilderGenerator.Generate().Build();
     mParseTable = new ParseTableBuilder().BuildTableForCfg(mCfg);
 }