Example #1
0
        public static IList <IToken> GetTokens(string code)
        {
            var ais   = new AntlrInputStream(code);
            var lexer = new BiTempDefLexer(ais);

            return(lexer.GetAllTokens());
        }
Example #2
0
        public static IParseTree GetRootContext(string code)
        {
            var ais         = new AntlrInputStream(code);
            var lexer       = new BiTempDefLexer(ais);
            var cts         = new CommonTokenStream(lexer);
            var parser      = new BiTempDefParser(cts);
            var rootContext = parser.compileUnit();

            return(rootContext);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        /// <exception cref="ParseErrorException">Thrown at lexing and parsing errors</exception>
        public static IList <def.BiTemporal> GetDefinitions(string input)
        {
            var ais = new AntlrInputStream(input);

            var lexer = new BiTempDefLexer(ais);

            lexer.RemoveErrorListeners();
            lexer.AddErrorListener(new BiTemporalErrorListener <int>());

            var cts = new CommonTokenStream(lexer);

            var parser = new BiTempDefParser(cts);

            parser.RemoveErrorListeners();
            parser.AddErrorListener(new BiTemporalErrorListener <IToken>());

            var root = parser.compileUnit();

            var listener = new BiTemporalListener(input);
            var ptw      = new ParseTreeWalker();

            ptw.Walk(listener, root);

            foreach (var definition in listener.Definitions)
            {
                foreach (var col in definition.Columns)
                {
                    if (col.Options.Content.Count(opt => opt == def.ColumnOption.PRIMARY_KEY) > 0)
                    {
                        definition.PrimaryKey.Add(col);
                    }
                }
            }

            return(listener.Definitions);
        }