コード例 #1
0
ファイル: Program.cs プロジェクト: cjhoward92/VB6-2-Other
        static void Main(string[] args)
        {
            Console.WriteLine("We are starting");

            // if (args.Length < 1) {
            //     Console.WriteLine("You need a path");
            //     return;
            // }

            // string path = @"F:\vb6\TestProj\Class1.cls";
            string path = @"F:\vb6\TestProj\Form1.frm";
            string text = null;

            using (var reader = new StreamReader(File.Open(path, FileMode.Open))) {
                text = reader.ReadToEnd();
            }

            var stream      = new AntlrInputStream(text);
            var lexer       = new VisualBasic6Lexer(stream);
            var tokenStream = new CommonTokenStream(lexer);
            var parser      = new VisualBasic6Parser(tokenStream);
            var ctx         = parser.startRule();
            var treeWalker  = new ParseTreeWalker();

            if (!parser.BuildParseTree)
            {
                throw new Exception("We are not built");
            }
            treeWalker.Walk(new VB6Listener(), ctx);
            Console.ReadKey();
        }
コード例 #2
0
        private void parseBtn_Click(object sender, EventArgs e)
        {
#if DEBUG && HELLO
            String       input  = editor.Text;
            ICharStream  stream = CharStreams.fromstring(input);
            ITokenSource lexer  = new HelloLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            HelloParser  parser = new HelloParser(tokens);

            HelloCustomListener helloListener = new HelloCustomListener();
            parser.r().EnterRule(helloListener);
#elif DEBUG && ADVANCED
            String             input  = editor.Text;
            ICharStream        stream = CharStreams.fromstring(input);
            ITokenSource       lexer  = new VisualBasic6Lexer(stream);
            ITokenStream       tokens = new CommonTokenStream(lexer);
            VisualBasic6Parser parser = new VisualBasic6Parser(tokens);
            IParseTree         tree   = parser.startRule();

            ParseTreeWalker            walker   = new ParseTreeWalker();
            VisualBasic6CustomListener listener = new VisualBasic6CustomListener();
            walker.Walk(listener, tree);

            //parser.startRule().EnterRule(listener);
#endif
        }
コード例 #3
0
        private bool ConvertCodeFile(Stream inputStream, string outputPath, string name, CompilationUnit compilationUnit)
        {
            var input  = new AntlrInputStream(inputStream);
            var lexer  = new VisualBasic6Lexer(input);
            var tokens = new CommonTokenStream(lexer);
            var parser = new VisualBasic6Parser(tokens);
            var tree   = parser.startRule();

            var visitor = new ESCVisitor(name, compilationUnit);

            foreach (var node in visitor.Visit(tree))
            {
                // Just enumerate it all
            }

            var result = compilationUnit.Generate(name);

            File.WriteAllText(outputPath, result);

            return(true);
        }