Ejemplo n.º 1
0
        public PipelineController(string sourcefile)
        {
            var lineReader = new FastLineReader(sourcefile);

            //@"C:\Users\Weirdo\source\repos\4Story\Agnares\4Story_5.0_Source\Client\astout\cssender-02.ast")
            _lineInputChannel = Channel.CreateBounded <BatchLineReadResult>(new BoundedChannelOptions(100)
            {
                AllowSynchronousContinuations = false,
                FullMode     = BoundedChannelFullMode.Wait,
                SingleReader = true,
                SingleWriter = true
            });

            _reader        = new FileToLinesProcessor(lineReader, _lineInputChannel.Writer);
            _minimalParser = new LineBatchToMinimalInfoProcessor(_lineInputChannel.Reader);
        }
Ejemplo n.º 2
0
        public List <AstToken> Parse(AstParserInterceptor interceptor)
        {
            var fastReader    = new FastLineReader(_filePath);
            var readerContext = new AstFileReaderContext(fastReader.ReadLine());

            AstToken currentRoot = null;
            var      rootTokens  = new List <AstToken>();

            foreach (var rawLine in readerContext)
            {
                AstTokenParserUtils.GetEssentialPart(rawLine, out var lineDepth, out var line);
                var token = new AstToken(true)
                {
                    Line = readerContext.CurrentLine
                };;
                AstTokenParserUtils.ParseTokenDescription(token, line);

                if (lineDepth == 0)
                {
                    currentRoot = token;
                    rootTokens.Add(token);
                    continue;
                }

                if (currentRoot == null)
                {
                    currentRoot = new AstToken(true)
                    {
                        unknownName = "Unknown"
                    };
                    rootTokens.Add(currentRoot);
                }

                if (interceptor.OnNodeParsed(readerContext, token, lineDepth))
                {
                    continue;
                }

                currentRoot.AddChild(token, lineDepth - 1);
            }

            return(rootTokens);
        }
Ejemplo n.º 3
0
 public FastAstTokenizer(FastLineReader lineReader)
 {
     _lineReader = lineReader;
 }
Ejemplo n.º 4
0
 public FileToLinesProcessor(FastLineReader lineReader, ChannelWriter <BatchLineReadResult> lineResultWriter) : base(1)
 {
     _lineResultWriter = lineResultWriter;
     _lineReader       = lineReader;
 }