结构体
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 实例,其中 fileID
、line
、column
成员变量均为 0
。
init(UInt32, Int32, Int32)
public init(fileID: UInt32, line: Int32, column: Int32)
功能:构造一个 Position 实例。
参数:
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 - 与当前位置比较的另一个位置实例。
返回值:
operator func ==(Position)
public operator func ==(r: Position): Bool
功能:比较两个 Position 实例是否相等。
参数:
- r: Position - 与当前位置比较的另一个位置实例。
返回值:
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 类型为 ILLEGAL
,value
为空字符串,Position 成员变量均为 0。
init(TokenKind)
public init(kind: TokenKind)
功能:根据词法单元类型,构造一个默认的 Token 对象。
参数:
- kind: TokenKind - 构建词法单元的类型。
init(TokenKind, String)
public init(kind: TokenKind, value: String)
功能:根据词法单元类型 kind
和词法单元值 value
,构造一个 Token 对象。
参数:
异常:
- IllegalArgumentException - 当输入的
kind
与value
不匹配时,抛出异常点。
func addPosition(UInt32, Int32, Int32)
public func addPosition(fileID: UInt32, line: Int32, colum: Int32): 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 对象是否不相等。
参数:
返回值:
- Bool - 两个词法单元的种类
ID
、值、位置不相同时,返回 true。
operator func +(Token)
public operator func +(r: Token): Tokens
功能:使用当前 Token 添加一个 Token 以获取新的 Tokens。
参数:
返回值:
operator func +(Tokens)
public operator func +(r: Tokens): Tokens
功能:使用当前 Token 添加一个 Tokens 以获取新的 Tokens。
参数:
返回值:
operator func ==(Token)
public operator func ==(r: Token): Bool
功能:判断两个 Token 对象是否相等。
参数:
返回值:
- Bool - 两个词法单元的种类
ID
、值、位置相同时,返回 true。