refeat: ILexer接口适配 (#38)

Co-authored-by: Huaps <1183155719@qq.com>
Co-authored-by: duqoo <92306417+duqoo@users.noreply.github.com>
Reviewed-on: PostGuard/Canon#38
This commit is contained in:
2024-04-18 16:34:32 +08:00
parent d631a28703
commit 4b6635796c
19 changed files with 952 additions and 721 deletions

View File

@@ -7,12 +7,7 @@ namespace Canon.Core.Abstractions;
/// </summary>
public interface ISourceReader
{
/// <summary>
/// 尝试读取下一个字符
/// </summary>
/// <param name="c">读取到的字符</param>
/// <returns>是否成功读取</returns>
public bool TryReadChar([NotNullWhen(true)] out char? c);
public char Current { get; }
/// <summary>
/// 源文件名称
@@ -28,4 +23,23 @@ public interface ISourceReader
/// 当前读取字符的列号
/// </summary>
public uint Pos { get; }
/// <summary>
/// 回退一个字符
/// </summary>
/// <returns>回退是否成功</returns>
public bool Retract();
/// <summary>
/// 前进一个字符
/// </summary>
/// <returns></returns>
public bool MoveNext();
/// <summary>
/// 读取下一个字符但是移进
/// </summary>
/// <param name="c">读取到的下一个字符</param>
/// <returns>是否能够读取下一个字符</returns>
public bool TryPeekChar([NotNullWhen(true)] out char? c);
}