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);
}