using System.Diagnostics.CodeAnalysis; namespace Canon.Core.Abstractions; /// /// 读取源代码的接口 /// public interface ISourceReader { public char Current { get; } /// /// 源文件名称 /// public string FileName { get; } /// /// 当前读取字符的行号 /// public uint Line { get; } /// /// 当前读取字符的列号 /// public uint Pos { get; } /// /// 回退一个字符 /// /// 回退是否成功 public bool Retract(); /// /// 前进一个字符 /// /// public bool MoveNext(); /// /// 读取下一个字符但是移进 /// /// 读取到的下一个字符 /// 是否能够读取下一个字符 public bool TryPeekChar([NotNullWhen(true)] out char? c); }