Example #1
0
        public void GenerateParserConfig()
        {
            var errorReporter = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment   = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            environment.Setup(x => x.GetResourceName(".table")).Returns("Buffalo.Core.Parser.Configuration.AutoConfigParser.table");

            GeneratorRunner.Run <ParserGenerator>(ParserTestFiles.Parser(), errorReporter.Object, environment.Object);
        }
Example #2
0
        public void NoProductions()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(1, 1, 1, 1, "No productions defined.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.NoProductions(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #3
0
        public void UnknownOption()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(1, 1, 1, 8, "'Disarray' is not a recognised option.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.UnknownOption(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #4
0
        public void InvalidProductionArg()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(6, 15, 6, 16, "Invalid argument reference")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.InvalidProductionArg(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #5
0
        public void ReduceReduceConflict()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(10, 1, 10, 3, "<B> -> causes a reduce-reduce conflict with <A> -> a.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.ReduceReduceConflict(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #6
0
        public void UndefinedProduction()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(1, 9, 1, 11, "The non-terminal <B> is not defined.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.UndefinedProduction(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #7
0
        public void ReduceAcceptConflict()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(6, 6, 6, 8, "<A> -> <A> causes a reduce-accept conflict.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.ReduceAcceptConflict(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #8
0
        public void PseudoReachable()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(1, 1, 1, 1, "All accept actions were optomised away.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.ParserPseudoReachable(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #9
0
        public void DuplicateProduction()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            environment.Setup(x => x.GetResourceName(".table")).Returns((string)null);
            reporter.Setup(x => x.AddWarning(6, 1, 6, 3, "The non-terminal <A> has already been defined.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.DuplicateProduction(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #10
0
        public void UnreachableNonTerminal()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            environment.Setup(x => x.GetResourceName(".table")).Returns((string)null);
            reporter.Setup(x => x.AddWarning(6, 1, 6, 3, "The non-terminal <B> is not reachable.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.UnreachableNonTerminal(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #11
0
        public void ReDefinedDifferentType()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddError(8, 16, 8, 16, "This type conflicts with a previous definition of <NonTerminal>.")).Verifiable();
            reporter.Setup(x => x.AddWarning(8, 1, 8, 13, "The non-terminal <NonTerminal> has already been defined.")).Verifiable();

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.ReDefinedDifferentType(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
Example #12
0
        public void DuplicateEntryPoints()
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            reporter.Setup(x => x.AddWarning(2, 7, 2, 9, "The non-terminal <A> is already an entry point.")).Verifiable();
            environment.Setup(x => x.GetResourceName(".table")).Returns((string)null);

            GeneratorRunner.Run <ParserGenerator>(
                ParserTestFiles.DuplicateEntryPoints(),
                reporter.Object,
                environment.Object);

            reporter.Verify();
        }
        public void Generate(string setName)
        {
            var reporter    = new Mock <IErrorReporter>(MockBehavior.Strict);
            var environment = new Mock <ICodeGeneratorEnv>(MockBehavior.Strict);

            var set = ParserTestFiles.GetNamedResourceSet(setName);

            var builder = new StringBuilder("Buffalo.Core.Test.Parser.Generation.");

            builder.Append(set.Code.ResourceName, ParserTestFiles.Namespace.Length, set.Code.ResourceName.Length - ParserTestFiles.Namespace.Length - 5);
            builder.Append(".table");

            environment.Setup(x => x.GetResourceName(".table")).Returns(builder.ToString());

            GeneratorRunner.Run <ParserGenerator>(set, reporter.Object, environment.Object);
        }
Example #14
0
 public static object ParserParseGraph()
 {
     return(GenerateParseGraph(ParserTestFiles.Parser().Config.ReadString()));
 }