Ejemplo n.º 1
0
        private static List <AphidExpression> PreprocessAst(List <AphidExpression> ast)
        {
            var stage1 = new PartialOperatorMutator().MutateRecursively(ast);
            var stage2 = new AphidMacroMutator().MutateRecursively(stage1);
            var stage3 = new AphidPreprocessorDirectiveMutator().MutateRecursively(stage2);

            return(stage3);
        }
Ejemplo n.º 2
0
        private static void GenerateParser(string code, string dir, string outFile)
        {
            Console.WriteLine("Parsing input file");
            var ast             = AphidParser.Parse(code);
            var includeMutator  = new IncludeMutator(dir);
            var idMutator       = new AphidPreprocessorDirectiveMutator();
            var macroMutator    = new AphidMacroMutator();
            var pipelineMutator = new PipelineToCallMutator();

            ast = idMutator.MutateRecursively(
                macroMutator.MutateRecursively(
                    pipelineMutator.Mutate(
                        includeMutator.MutateRecursively(ast))));

            Console.WriteLine("Generating parser");
            var parserGenerator = new ParserGenerator();
            var s = parserGenerator.Generate(ast, code);

            File.WriteAllText(outFile, s);
            Console.WriteLine("Parser written to '{0}'", outFile);
        }