Пример #1
0
        static void Main(string[] args)
        {
            // в зависимости от наличия параметров командной строки разбираем
            // либо файл с именем, переданным первым параметром, либо стандартный ввод
            ICharStream input = args.Length == 1 ? (ICharStream) new ANTLRFileStream(args[0])
                                                 : (ICharStream) new ANTLRReaderStream(Console.In);
            MyGrammarLexer    lexer   = new MyGrammarLexer(input);
            CommonTokenStream tokens  = new CommonTokenStream(lexer);
            MyGrammarParser   parser  = new MyGrammarParser(tokens);
            ITree             program = (ITree)parser.execute().Tree;
            //AstNodePrinter.Print(program);

            //AstNodePrinter.Print(program);

            Semantic semantic = new Semantic(program);

            AstNodePrinter.Print(program);

            Codegenerator gen = new Codegenerator();

            dynamic root   = program;
            string  output = gen.Start(root, semantic.Context.MethodList, semantic.Context.Vars);

            Console.WriteLine(output);

            FileWorker file = new FileWorker();

            file.WriteToFile(output);

            Console.Read();
        }
Пример #2
0
        private static void Main(string[] args)
        {
            var options = new CommandLineOptions();
            
            if (CommandLine.Parser.Default.ParseArgumentsStrict(args, options))
            {
                if (!options.OutputPath.EndsWith(".cs"))
                {
                    options.OutputPath = Path.Combine(options.OutputPath, options.ApiName + "Client.cs");
                }

                using (var fs = new FileStream(options.OutputPath, FileMode.OpenOrCreate))
                {
                    var codeGenerator = new Codegenerator();
                    codeGenerator.Process(
                        new CodegenSettings
                        {
                            ApiName = options.ApiName,
                            ApiUrl = options.Url,
                            Processor = new CSharpProcessor(),
                            Namespace = options.Namespace
                        },
                        fs
                    );
                }
            }

           
        }
Пример #3
0
        private static void Main(string[] args)
        {
            var options = new CommandLineOptions();

            if (CommandLine.Parser.Default.ParseArgumentsStrict(args, options))
            {
                if (!options.OutputPath.EndsWith(".cs"))
                {
                    options.OutputPath = Path.Combine(options.OutputPath, options.ApiName + "Client.cs");
                }

                using (var fs = new FileStream(options.OutputPath, FileMode.OpenOrCreate))
                {
                    var codeGenerator = new Codegenerator();
                    codeGenerator.Process(
                        new CodegenSettings
                    {
                        ApiName   = options.ApiName,
                        ApiUrl    = options.Url,
                        Processor = new CSharpProcessor(),
                        Namespace = options.Namespace
                    },
                        fs
                        );
                }
            }
        }
Пример #4
0
        private static void CompileFile(Stream fileStream, string fileName, StreamWriter outStream, TypeStorage typeStorage,
                                        ILogger logger, ILogger treeLogger, INameConvertor nameConvertor)
        {
            logger.Log(String.Format("----Файл {0}----", fileName));

            var stream = new ANTLRInputStream(fileStream);
            var lexer  = new PlsqlLexer(stream);
            var parser = new PlsqlParser(new CommonTokenStream(lexer));
            var tree   = parser.program().Tree as CommonTree;

            if (treeLogger != null)
            {
                treeLogger.Log(ASTPrinter.Print(tree));
            }

            var  semanticAnalyser = new SemanticAnalyser(typeStorage, logger);
            bool res = semanticAnalyser.Check(tree);


            if (res)
            {
                var optimizer = new Optimizer();
                optimizer.Optimize(tree);

                var    codegenerator = new Codegenerator(nameConvertor);
                string code          = codegenerator.Generate(tree, typeStorage);

                outStream.Write(code);
            }

            logger.Log(string.Format("--------", fileName));
        }
Пример #5
0
        public void Process_PetStore_ShouldBeApproved()
        {
            using (var stream = new MemoryStream())
            {
                var codeGenerator = new Codegenerator();
                codeGenerator.Process(
                    new CodegenSettings
                {
                    ApiName   = "Petstore",
                    ApiUrl    = "http://petstore.swagger.wordnik.com/api/api-docs",
                    Processor = new CSharpProcessor(),
                    Namespace = "SomeNamespace"
                },
                    stream
                    );

                var result = Encoding.UTF8.GetString(stream.ToArray());

                Approvals.Verify(result);
            }
        }
        public void Process_PetStore_ShouldBeApproved()
        {
            using (var stream = new MemoryStream())
            {
                var codeGenerator = new Codegenerator();
                codeGenerator.Process(
                    new CodegenSettings
                    {
                        ApiName = "Petstore",
                        ApiUrl = "http://petstore.swagger.wordnik.com/api/api-docs",
                        Processor = new CSharpProcessor(),
                        Namespace = "SomeNamespace"
                    },
                    stream
                );

                var result = Encoding.UTF8.GetString(stream.ToArray());

                Approvals.Verify(result);                 
            }
        }
        private static dynamic PostProcessorJob(ProcessorJobModel job)
        {
            var response = new Response();
            var filename = (string.IsNullOrEmpty(job.Options.ApiName) ? "" : job.Options.ApiName) + "Client.cs";

            response.Headers.Add("Content-Disposition", "attachment; filename=" + filename.ToValidFilename());
            response.Headers.Add("x-filename", filename.ToValidFilename());
            response.ContentType = "text/plain";
            response.Contents = stream =>
            {
                var codeGenerator = new Codegenerator();
                codeGenerator.Process(
                    new CodegenSettings
                    {
                        ApiUrl = job.Options.ApiUrl,
                        ApiName = job.Options.ApiName,
                        Processor = new CSharpProcessor()
                    },
                    stream
                );
            };

            return response;
        }
        private static dynamic PostProcessorJob(ProcessorJobModel job)
        {
            var response = new Response();
            var filename = (string.IsNullOrEmpty(job.Options.ApiName) ? "" : job.Options.ApiName) + "Client.cs";

            response.Headers.Add("Content-Disposition", "attachment; filename=" + filename.ToValidFilename());
            response.Headers.Add("x-filename", filename.ToValidFilename());
            response.ContentType = "text/plain";
            response.Contents    = stream =>
            {
                var codeGenerator = new Codegenerator();
                codeGenerator.Process(
                    new CodegenSettings
                {
                    ApiUrl    = job.Options.ApiUrl,
                    ApiName   = job.Options.ApiName,
                    Processor = new CSharpProcessor()
                },
                    stream
                    );
            };

            return(response);
        }
Пример #9
0
        private string Generate(CommonTree tree, INameConvertor nameConvertor, TypeStorage types)
        {
            var codegenerator = new Codegenerator(nameConvertor);

            return(codegenerator.Generate(tree, types));
        }