Skip to content

T_Cyjb_Text_SourceReader

CYJB edited this page Sep 9, 2022 · 8 revisions

SourceReader 类

表示支持字符回退的源文件读取器。

继承层次

System.Object
  Cyjb.Text.SourceReader
Namespace: Cyjb.Text
Assembly: Cyjb.Compilers.Runtime (in Cyjb.Compilers.Runtime.dll) Version: 1.0.0

语法

C#

public sealed class SourceReader : IDisposable

The SourceReader type exposes the following members.

构造函数

 

名称 说明
公共方法 SourceReader 使用指定的字符读取器初始化 SourceReader 类的新实例。
  Back to Top

属性

 

名称 说明
公共属性 BaseReader 获取基础的字符读取器。
公共属性 Index 获取或设置当前的字符索引。
公共属性 IsLineStart 返回当前是否位于行首。
公共属性 Locator 获取行列定位器。
  Back to Top

方法

 

名称 说明
公共方法 Accept 将当前位置之前的数据全部丢弃,并返回被丢弃的数据。之后的 Unget() 操作至多回退到当前位置。
公共方法 AcceptToken(T) 将当前位置之前的数据全部丢弃,并以 Token(T) 的形式返回被丢弃的数据。 之后的 Unget() 操作至多回退到当前位置。
公共方法 Close 关闭 SourceReader 对象和基础字符读取器,并释放与读取器关联的所有系统资源。
公共方法 Dispose 执行与释放或重置非托管资源相关的应用程序定义的任务。
公共方法 Drop 将当前位置之前的数据全部丢弃,之后的 Unget() 操作至多回退到当前位置。
公共方法 Equals Determines whether the specified object is equal to the current object. (继承自 Object。)
公共方法 GetHashCode Serves as the default hash function. (继承自 Object。)
公共方法 GetPosition 返回指定索引的行列位置,需要提前 UseLineLocator(Int32)
公共方法 GetType Gets the Type of the current instance. (继承自 Object。)
公共方法 Peek() 返回下一个可用的字符,但不使用它。
公共方法 Peek(Int32) 返回文本读取器中之后的 idx 索引的字符,但不使用它。Peek(0) 等价于 Peek()
公共方法 Read() 读取文本读取器中的下一个字符并使该字符的位置提升一个字符。
公共方法 Read(Int32) 读取文本读取器中之后的 idx 索引的字符,并使该字符的位置提升。 Read(0) 等价于 Read()
公共方法 ReadedText 返回当前位置之前的数据。
公共方法 ToString Returns a string that represents the current object. (继承自 Object。)
公共方法 Unget() 回退最后被读取的字符,只有之前的数据未被丢弃时才可以进行回退。
公共方法 Unget(Int32) 回退 count 个字符,只有之前的数据未被丢弃时才可以进行回退。 Unget(1) 等价于 Unget()
公共方法 UseLineLocator 开启行列定位功能,允许通过 GetPosition(Int32) 获取指定索引的行列位置。 需要在读取字符之前设置。
  Back to Top

字段

 

名称 说明
公共字段静态成员 InvalidCharacter 用于表示到达流结尾的字符。
  Back to Top

Remarks

SourceReader 类中,包含一个环形字符缓冲区, 关于环形字符缓冲区的详细解释,请参见我的 C# 词法分析器系列博文 《C# 词法分析器(二)输入缓冲和代码定位》

参见

Reference

Cyjb.Text 命名空间

Other Resources

《C# 词法分析器(二)输入缓冲和代码定位》
Clone this wiki locally