Exemple #1
0
        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));
                }
        }