public Result AddSourceCode(string sourceCode) { var inputStream = new AntlrInputStream(sourceCode); var lexer = new SdmapLexer(inputStream); var tokenStream = new CommonTokenStream(lexer); var parser = new SdmapParser(tokenStream); var visitor = SqlItemVisitor.Create(_context); return(visitor.Visit(parser.root())); }
public Result Emit(string source, TextWriter writer, CodeEmiterConfig config) { var ais = new AntlrInputStream(source); var lexer = new SdmapLexer(ais); var cts = new CommonTokenStream(lexer); var parser = new SdmapParser(cts); var visitor = new CSharpCodeVisitor(writer, config, new CSharpDefine()); return(visitor.StartVisit(parser.root())); }
protected Result <string> GetEmiterText(string source, Func <SdmapParser, IParseTree> partAccessor, CodeEmiterConfig config = null) { var ais = new AntlrInputStream(source); var lexer = new SdmapLexer(ais); var cts = new CommonTokenStream(lexer); var parser = new SdmapParser(cts); using (var ms = new MemoryStream()) using (var writer = new StreamWriter(ms)) { config = config ?? new CodeEmiterConfig(); var visitor = new CSharpCodeVisitor(writer, config, new CSharpDefine()); return(visitor.Visit(partAccessor(parser)) .OnSuccess(() => writer.Flush()) .OnSuccess(() => ms.ToArray()) .OnSuccess(Encoding.UTF8.GetString)); } }