public void ReadFile() { Lexer lexer = new Lexer(); Parser parser = new Parser(); var lines = GetFileTextLinesAsync().ToList(); List<Block> block = new List<Block>(); for (int i = 0; i < lines.Count; i++) { var tokenList = lexer.ReadLine(lines[i], i); foreach (var item in tokenList) { do { parser.Push(item); } while (parser.IsLoopingForReduce); if (parser.IsAccepted) { block.Add(parser.Block); parser.Reset(); if (block[block.Count - 1].BlockType == BlockTypes.SETTINGS) /// ACC will not push current item, /// it will cause error { parser.Push(item); } } } } Block = block.ToArray(); }
private IEnumerable<Block> ReadLines(IList<string> lines) { List<Block> block = new List<Block>(); Lexer lexer = new Lexer(); Parser parser = new Parser(); for (int i = 0; i < lines.Count; i++) { var tokenList = lexer.ReadLine(lines[i], i); foreach (var item in tokenList) { do { parser.Push(item); } while (parser.IsLoopingForReduce); if (parser.IsAccepted) { block.Add(parser.Block); parser.Reset(); if (block[block.Count-1].BlockType == BlockTypes.SETTINGS) /// ACC will not push current item, /// it will cause error { parser.Push(item); } } } } return block; }