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); }
/// <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); }