public ParserResult Parse(ProgressiveList <Token> tokens) { var result = new ParserResult(); var values = new ParserValues(); BeginValues(values); begin: foreach (var p in parsers) { var parser = (MainParser)p.Value; int state = tokens.GetState(); if (parser.Match(tokens)) { parser.Work(tokens, result); result.Include(parser.GetResult()); goto begin; } else { tokens.RestoreState(state); } values.Clear(); } EndValues(); return(result); }
public int GetState() => tokens.GetState();