Exemplo n.º 1
0
	            public void setInput(AS3TLexer lexer, ICharStream cs) {
	                this.lexer = lexer;
	                this.cs = cs;
	            }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            List <string> names       = new List <string>();
            int           _errorCount = 0;

            string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

            var options            = new Options();
            ICommandLineParser clp = new CommandLineParser(new CommandLineParserSettings(true, Console.Error));

            if (!clp.ParseArguments(args, options))
            {
                Environment.Exit(1);
            }
#if !ANTLR
#if REV4
            Parser4 p = new Parser4();
#else
            Parser3 p = new Parser3();
#endif

            p.OutputPath = options.OutputDir;
#endif
            Console.WriteLine("Initializing...");

            TemplateGroupFile loader = new TemplateGroupFile(path, null);
            loader.Load();
//            TemplateGroupString templates = loader.Compile() ;//"cpp2");//, typeof(TemplateLexer), null);
//            templates.Listener = new ErrorListener();

            if (options.Recurse)
            {
                string rootpath = options.InputFile;
                if (!rootpath.EndsWith("\\"))
                {
                    rootpath += @"\";
                }

                Console.WriteLine("Processing...");

                AS3TParser parser;

                string[] files = Directory.GetFiles(options.InputFile, "*.as", SearchOption.AllDirectories);
                foreach (string f in files)
                {
#if ANTLR
                    AS3TLexer lex = new AS3TLexer(new ANTLRFileStream(f));
                    //CommonTokenStream tokens = new CommonTokenStream(lex);
                    TokenRewriteStream tokens = new TokenRewriteStream(lex);

                    //CommonTokenStream tokens = new CommonTokenStream(lex);

                    parser = new AS3TParser(tokens);
                    parser.TemplateGroup = templates;
                    parser.OutputPath    = options.OutputDir;

                    try
                    {
                        parser.program();
                        if (options.VerboseLevel > 2)
                        {
                            Console.WriteLine("calling generateSource {0}", parser.Classname);
                        }
                        generateSource(options, tokens, parser.Classname);
                        if (options.VerboseLevel > 2)
                        {
                            Console.WriteLine("calling generateHeader {0}", parser.Classname);
                        }
                        generateHeader(options, tokens, parser.Classname, parser.Basetype, parser.SymTable);
                        parser.Reset();
                    }
                    catch (NoViableAltException e)
                    {
                        Console.WriteLine("{0} {1}", e.Line, e.Message);
                        _errorCount += 1;
                    }
                    catch (RewriteEmptyStreamException e)
                    {
                        if (options.VerboseLevel > 2)
                        {
                            Console.WriteLine(e.Message);
                        }

                        _errorCount += 1;
                    }
                    catch (ArgumentException e)
                    {
                        Console.WriteLine("{0} {1}", e.Source, e.Message);
                        _errorCount += 1;
                    }
                    catch (NullReferenceException e)
                    {
                        Console.WriteLine("{0} {1}", e.Source, e.Message);
                        _errorCount += 1;
                    }
#else
                    Console.WriteLine("{0}", f);
                    p.Parse(f);
#endif
                }

                Console.WriteLine("xas done. {0} file(s) processed, {1} Error(s)", files.Length, _errorCount);
#if DEBUG
                Console.ReadKey();
#endif
            }

            else
            {
#if ANTLR
                AS3TLexer          lex    = new AS3TLexer(new ANTLRFileStream(options.InputFile));
                TokenRewriteStream tokens = new TokenRewriteStream(lex);

                AS3TParser parser = new AS3TParser(tokens);
                parser.TemplateGroup = templates;
                parser.OutputPath    = options.OutputDir;

                //parser.TemplateGroup = templates.
                try
                {
                    parser.program();
                    generateSource(options, tokens, parser.Classname);
                    generateHeader(options, tokens, parser.Classname, parser.Basetype, parser.SymTable);
                    parser.Reset();
                }
                catch (NoViableAltException e)
                {
                    if (options.VerboseLevel > 2)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                catch (RewriteEmptyStreamException e)
                {
                    if (options.VerboseLevel > 2)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                catch (ArgumentException e)
                {
                    if (options.VerboseLevel > 2)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                catch (NullReferenceException e)
                {
                    if (options.VerboseLevel > 2)
                    {
                        Console.WriteLine(e.Message);
                    }
                }

                Console.WriteLine("xas done. {0} file(s) processed, {1} Error(s)", 1, _errorCount);

#if DEBUG
                Console.ReadKey();
#endif
#else
                p.Parse(options.InputFile);
#endif
            }
        }