public void TestNewScanner() { var grammar = new ExpressionEvaluatorGrammar(); var language = new LanguageData(grammar); var parser = new Parser(language); var ctx = new ParsingContext(parser); PrefixBasedScanner scanner = new PrefixBasedScanner(language); var src = @" # this is comment ""0123"".Substring(1) + ""abcd"".Length + ""456""[1] # expected '12345' "; var srcSegm = new TextSegment(src); var segments = scanner.Scan(ctx, srcSegm).ToList(); foreach (var segm in segments) { Debug.WriteLine(" Segment: " + segm.GetType().Name + ", " + segm.ToString()); } }
public abstract IEnumerable<SourceSegment> Scan(ParsingContext context, TextSegment segment);
public override IEnumerable<SourceSegment> Scan(ParsingContext context, TextSegment segment) { return null; }
public virtual IEnumerable<SourceSegment> Scan(ParsingContext context, TextSegment segment){ var token = TryMatch(context, segment); if (token != null) { yield return token; } }
}//method #endregion private List<Terminal> FindTermsByPrefix(TextSegment segment) { return null; }
public IEnumerable<SourceSegment> Scan(ParsingContext context, TextSegment segment) { return null; }//method