Exemple #1
0
 static void Main(string[] args)
 {
     try
     {
         if (args.Length != 2)
         {
             Console.WriteLine("Need 2 arguments: <inputPath> - path to assembly source, <outputPath> - path to binary");
             return;
         }
         Console.WriteLine("Opening files...");
         PulsarAsmParserErrorListener parserErrorlistener = new PulsarAsmParserErrorListener();
         PulsarAsmLexerErrorListener  lexerErrorListener  = new PulsarAsmLexerErrorListener();
         using FileStream inStream  = new FileStream(args[0], FileMode.Open);
         using FileStream outStream = new FileStream(args[1], FileMode.Create);
         ICharStream           charStream = CharStreams.fromStream(inStream);
         ICharStream           upper      = new CaseChangingCharStream(charStream, true);
         PulsarAsmGrammarLexer lexer      = new PulsarAsmGrammarLexer(upper);
         lexer.AddErrorListener(lexerErrorListener);
         ITokenStream           tokens = new CommonTokenStream(lexer);
         PulsarAsmGrammarParser parser = new PulsarAsmGrammarParser(tokens)
         {
             BuildParseTree = true,
         };
         parser.AddErrorListener(parserErrorlistener);
         Console.WriteLine("Parsing...");
         var tree = parser.asm_file();
         if (lexerErrorListener.WasError)
         {
             if (lexerErrorListener.Exception != null)
             {
                 throw lexerErrorListener.Exception;
             }
             else
             {
                 throw new InvalidOperationException("Lexer failed");
             }
         }
         if (parserErrorlistener.WasError)
         {
             if (parserErrorlistener.Exception != null)
             {
                 throw parserErrorlistener.Exception;
             }
             else
             {
                 throw new InvalidOperationException("Parser failed");
             }
         }
         PulsarAsmCodeGenerator l = new PulsarAsmCodeGenerator();
         ParseTreeWalker.Default.Walk(l, tree);
         Console.WriteLine("Emitting binary...");
         l.EmitBinary(outStream);
         Console.WriteLine("Done");
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
 }
Exemple #2
0
        public static TSqlParser GetParser(string sql)
        {
            var       stream = new AntlrInputStream(sql);
            var       caseInsensitiveStream = new CaseChangingCharStream(stream, upper: true);
            TSqlLexer lexer       = new TSqlLexer(caseInsensitiveStream);
            var       tokenStream = new CommonTokenStream(lexer);

            return(new TSqlParser(tokenStream));
        }
Exemple #3
0
        /// <summary>
        /// Parses the TSQL.
        /// </summary>
        /// <param name="input">The input.</param>
        /// <param name="listener">The listener.</param>
        private static void ParseTSQL(string input, IParseTreeListener listener)
        {
            ICharStream Stream = CharStreams.fromstring(input);

            Stream = new CaseChangingCharStream(Stream);
            ITokenSource Lexer  = new TSqlLexer(Stream, TextWriter.Null, TextWriter.Null);
            ITokenStream Tokens = new CommonTokenStream(Lexer);
            TSqlParser   Parser = new TSqlParser(Tokens, TextWriter.Null, TextWriter.Null)
            {
                BuildParseTree = true
            };
            IParseTree tree = Parser.tsql_file();

            ParseTreeWalker.Default.Walk(listener, tree);
        }
        private TableInfo GetTableInfo(string script)
        {
            var input = new AntlrInputStream(script);
            var caseChangingStream = new CaseChangingCharStream(input, true);
            var lexer    = new TSqlLexer(caseChangingStream);
            var tokens   = new CommonTokenStream(lexer);
            var parser   = new TSqlParser(tokens);
            var tree     = parser.tsql_file();
            var walker   = new ParseTreeWalker();
            var listener = new SqlListener();

            walker.Walk(listener, tree);

            return(listener.TableInfo);
        }