结构体

struct Position

public struct Position <: ToBytes {
    public let column: Int32
    public let fileID: UInt32
    public let line: Int32
    public init()
    public init(fileID: UInt32, line: Int32, column: Int32)
}

功能:表示位置信息的数据结构,包含文件ID,行号和列号。

父类型:

let column

public let column: Int32

功能:获取列号信息。

类型:Int32

let fileID

public let fileID: UInt32

功能:获取文件 ID 信息。

类型:UInt32

let line

public let line: Int32

功能:获取行号信息。

类型:Int32

init()

public init()

功能:构造一个默认的 Position 实例,其中 fileIDlinecolumn 成员变量均为 0

init(UInt32, Int32, Int32)

public init(fileID: UInt32, line: Int32, column: Int32)

功能:构造一个 Position 实例。

参数:

  • fileID: UInt32 - 文件ID。
  • line: Int32 - 行号。
  • column: Int32 - 列号。

func dump()

public func dump(): Unit

功能:将 Position 的信息打印出来。

func isEmpty()

public func isEmpty(): Bool

功能:判断行号和列号是否同时为 0

返回值:

  • Bool - 当行号和列号为 0 时返回 true。

func toBytes()

public func toBytes(): Array<UInt8>

功能:Position 类型的序列化。

返回值:

operator func !=(Position)

public operator func !=(r: Position): Bool

功能:比较两个 Position 实例是否不等。

参数:

  • r: Position - 与当前位置比较的另一个位置实例。

返回值:

  • Bool - 当两个 Position 实例不完全相等时返回 true。

operator func ==(Position)

public operator func ==(r: Position): Bool

功能:比较两个 Position 实例是否相等。

参数:

  • r: Position - 与当前位置比较的另一个位置实例。

返回值:

  • Bool - 当两个 Position 实例完全相等时返回 true。

struct Token

public struct Token <: ToBytes {
    public let kind: TokenKind
    public let pos: Position
    public let value: String
    public var delimiterNum: UInt16 = 1
    public init()
    public init(kind: TokenKind)
    public init(kind: TokenKind, value: String)
}

功能:词法单元类型。

词法单元是构成仓颉源码的最小单元,一组合法的词法单元列表经过语法解析后可生成一个语法树节点。

父类型:

let kind

public let kind: TokenKind

功能:词法单元的类型。词法单元类型有关键字、标识符、运算符、常量值等,具体见 TokenKind 章节。

类型:TokenKind

let pos

public let pos: Position

功能:词法单元在源码中的位置信息。

类型:Position

let value

public let value: String

功能:词法单元的字面量值。

类型:String

var delimiterNum

public var delimiterNum: UInt16 = 1

功能:多行字符串的 '#' 符号个数。

类型:UInt16

init()

public init()

功能:构造一个默认的 Token 对象,其中 TokenKind 类型为 ILLEGALvalue 为空字符串,Position 成员变量均为 0。

init(TokenKind)

public init(kind: TokenKind)

功能:根据词法单元类型,构造一个默认的 Token 对象。

参数:

  • kind: TokenKind - 构建词法单元的类型。

init(TokenKind, String)

public init(kind: TokenKind, value: String)

功能:根据词法单元类型 kind 和词法单元值 value,构造一个 Token 对象。

参数:

  • kind: TokenKind - 要构建词法单元的类型。
  • value: String - 要构建词法单元的 value 值。

异常:

func addPosition(UInt32, Int32, Int32)

public func addPosition(fileID: UInt32, line: Int32, colum: Int32): Token

功能:补充词法单元的位置信息。

参数:

返回值:

  • Token - 补充完位置信息后的 Token 对象。

func dump()

public func dump(): Unit

功能:将 Token 的信息打印出来。

func toBytes()

public func toBytes(): Array<UInt8>

功能:Token 类型的序列化。

返回值:

operator func !=(Token)

public operator func !=(r: Token): Bool

功能:判断两个 Token 对象是否不相等。

参数:

  • r: Token - 待比较的另一个 Token 对象。

返回值:

  • Bool - 两个词法单元的种类 ID、值、位置不相同时,返回 true。

operator func +(Token)

public operator func +(r: Token): Tokens

功能:使用当前 Token 添加一个 Token 以获取新的 Tokens

参数:

  • r: Token - 待添加的另一个 Token 对象。

返回值:

operator func +(Tokens)

public operator func +(r: Tokens): Tokens

功能:使用当前 Token 添加一个 Tokens 以获取新的 Tokens

参数:

  • r: Tokens - 待添加的另一组 Token 对象集合。

返回值:

operator func ==(Token)

public operator func ==(r: Token): Bool

功能:判断两个 Token 对象是否相等。

参数:

  • r: Token - 待比较的另一个 Token 对象。

返回值:

  • Bool - 两个词法单元的种类 ID、值、位置相同时,返回 true。