Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

接口

interface ToBytes

public interface ToBytes {
    func toBytes(): Array<UInt8>
}

功能:提供对应类型的序列化功能。

func toBytes()

func toBytes(): Array<UInt8>

功能:提供对应类型的序列化功能。

返回值:

示例:

import std.ast.*

public class A <: ToBytes {
    let a: Int32 = 10
    let b: Int64 = 20
    public func toBytes(): Array<UInt8> {
        var b1: Array<UInt8> = [UInt8(this.a)]
        var b2: Array<UInt8> = [UInt8(this.b)]
        return b1.concat(b2)
    }
}

main() {
    let a = A()
    
    // 输出 toBytes() 的结果
    println("a.toBytes(): ${a.toBytes()}")
}

运行结果:

a.toBytes(): [10, 20]

interface ToTokens

public interface ToTokens {
    func toTokens(): Tokens
}

功能:实现对应类型的实例到 Tokens 类型转换的接口,作为支持 quote 插值操作必须实现的接口。

func toTokens()

func toTokens(): Tokens

功能:实现对应类型的实例到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

public class A <: ToTokens {
    let a: Int32 = 10
    let b: Int64 = 20
    public func toTokens(): Tokens {
        a.toTokens() + b.toTokens()
    }
}

main() {
    let a = A()
    
    // 输出 toTokens() 的结果
    println("a.toTokens().dump():")
    a.toTokens().dump()
}

运行结果:

a.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 10, fileID: 26, line: 50, column: 26
description: integer_literal, token_id: 139, token_literal_value: 20, fileID: 26, line: 40, column: 26

extend<T> Array<T> <: ToTokens

extend<T> Array<T> <: ToTokens

功能:实现 Array<T> 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Array<T> 类型到 Tokens 类型的转换,仅支持数值类型、Rune 类型、Bool 类型、String 类型。

返回值:

示例:

import std.ast.*

main() {
    let arr: Array<Int64> = [1, 2]
    
    // 输出 toTokens() 的结果
    println("arr.toTokens(): ${arr.toTokens()}")
}

运行结果:

arr.toTokens(): [1, 2]

extend<T> ArrayList<T> <: ToTokens

extend<T> ArrayList<T> <: ToTokens

功能:实现 ArrayList<T> 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 ArrayList 类型到 Tokens 类型的转换,目前支持的类型有 DeclNodeConstructorArgumentFuncParamMatchCaseModifierAnnotationImportListPatternTypeNode 等。

返回值:

示例:

import std.ast.*
import std.collection.ArrayList

main() {
    let expr0 = BinaryExpr(quote(1 + 1))
    let arr = ArrayList<Node>([expr0])
    
    // 输出 toTokens() 的结果
    println("arr.toTokens().dump():")
    arr.toTokens().dump()
}

运行结果:

arr.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 1, fileID: 1, line: 5, column: 34
description: add, token_id: 12, token_literal_value: +, fileID: 1, line: 5, column: 36
description: integer_literal, token_id: 139, token_literal_value: 1, fileID: 1, line: 5, column: 38

extend Bool <: ToTokens

extend Bool <: ToTokens

功能:实现 Bool 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Bool 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let boolean = false
    
    // 输出 toTokens() 的结果
    println("boolean.toTokens().dump():")
    boolean.toTokens().dump()
}

运行结果:

boolean.toTokens().dump():
description: bool_literal, token_id: 151, token_literal_value: false, fileID: 26, line: 141, column: 26

extend Float16 <: ToTokens

extend Float16 <: ToTokens

功能:实现 Float16 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Float16 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let float16: Float16 = 1.0625
    
    // 输出 toTokens() 的结果
    println("float16.toTokens().dump():")
    float16.toTokens().dump()
}

运行结果:

float16.toTokens().dump():
description: float_literal, token_id: 141, token_literal_value: 1.062500, fileID: 26, line: 134, column: 26

extend Float32 <: ToTokens

extend Float32 <: ToTokens

功能:实现 Float32 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Float32 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let float32: Float32 = 3.14
    
    // 输出 toTokens() 的结果
    println("float32.toTokens().dump():")
    float32.toTokens().dump()
}

运行结果:

float32.toTokens().dump():
description: float_literal, token_id: 141, token_literal_value: 3.140000, fileID: 26, line: 124, column: 26

extend Float64 <: ToTokens

extend Float64 <: ToTokens

功能:实现 Float64 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Float64 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let float64: Float64 = 3.1415926
    
    // 输出 toTokens() 的结果
    println("float64.toTokens().dump():")
    float64.toTokens().dump()
}

运行结果:

float64.toTokens().dump():
description: float_literal, token_id: 141, token_literal_value: 3.1415926, fileID: 26, line: 114, column: 26

extend Int16 <: ToTokens

extend Int16 <: ToTokens

功能:实现 Int16 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Int16 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let int16: Int16 = 42
    
    // 输出 toTokens() 的结果
    println("int16.toTokens().dump():")
    int16.toTokens().dump()
}

运行结果:

int16.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 42, fileID: 26, line: 60, column: 26

extend Int32 <: ToTokens

extend Int32 <: ToTokens

功能:实现 Int32 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Int32 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let int32: Int32 = 42
    
    // 输出 toTokens() 的结果
    println("int32.toTokens().dump():")
    int32.toTokens().dump()
}

运行结果:

int32.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 42, fileID: 26, line: 50, column: 26

extend Int64 <: ToTokens

extend Int64 <: ToTokens

功能:实现 Int64 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Int64 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let int64: Int64 = 2147483648
    
    // 输出 toTokens() 的结果
    println("int64.toTokens().dump():")
    int64.toTokens().dump()
}

运行结果:

int64.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 2147483648, fileID: 26, line: 40, column: 26

extend Int8 <: ToTokens

extend Int8 <: ToTokens

功能:实现 Int8 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Int8 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let int8: Int8 = 127
    
    // 输出 toTokens() 的结果
    println("int8.toTokens().dump():")
    int8.toTokens().dump()
}

运行结果:

int8.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 127, fileID: 26, line: 70, column: 26

extend Rune <: ToTokens

extend Rune <: ToTokens

功能:实现 Rune 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Rune 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let rune: Rune = 'X'
    
    // 输出 toTokens() 的结果
    println("rune.toTokens().dump():")
    rune.toTokens().dump()
}

运行结果:

rune.toTokens().dump():
description: char_literal, token_id: 146, token_literal_value: X, fileID: 26, line: 148, column: 26

extend String <: ToTokens

extend String <: ToTokens

功能:实现 String 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 String 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let string: String = "hello world"
    
    // 输出 toTokens() 的结果
    println("string.toTokens().dump():")
    string.toTokens().dump()
}

运行结果:

string.toTokens().dump():
description: double_quoted_string_literal, token_id: 147, token_literal_value: hello world, fileID: 26, line: 204, column: 16

extend Token <: ToTokens

extend Token <: ToTokens

功能:实现 Token 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Token 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let token: Token = Token(TokenKind.AT, "@")
    
    // 输出 toTokens() 的结果
    println("token.toTokens().dump():")
    token.toTokens().dump()
}

运行结果:

token.toTokens().dump():
description: at, token_id: 51, token_literal_value: @, fileID: 1, line: 4, column: 24

extend Tokens <: ToTokens

extend Tokens <: ToTokens

功能:实现 Tokens 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 Tokens 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let tokens: Tokens = quote(1 + 1)
    
    // 输出 toTokens() 的结果
    println("tokens.toTokens().dump():")
    tokens.toTokens().dump()
}

运行结果:

tokens.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 1, fileID: 1, line: 4, column: 32
description: add, token_id: 12, token_literal_value: +, fileID: 1, line: 4, column: 34
description: integer_literal, token_id: 139, token_literal_value: 1, fileID: 1, line: 4, column: 36

extend UInt16 <: ToTokens

extend UInt16 <: ToTokens

功能:实现 UInt16 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 UInt16 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let uint16: UInt16 = 65535
    
    // 输出 toTokens() 的结果
    println("uint16.toTokens().dump():")
    uint16.toTokens().dump()
}

运行结果:

uint16.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 65535, fileID: 26, line: 91, column: 26

extend UInt32 <: ToTokens

extend UInt32 <: ToTokens

功能:实现 UInt32 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 UInt32 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let uint32: UInt32 = 4294967295
    
    // 输出 toTokens() 的结果
    println("uint32.toTokens().dump():")
    uint32.toTokens().dump()
}

运行结果:

uint32.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 4294967295, fileID: 26, line: 84, column: 26

extend UInt64 <: ToTokens

extend UInt64 <: ToTokens

功能:实现 UInt64 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 UInt64 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let uint64: UInt64 = 4294967295
    
    // 输出 toTokens() 的结果
    println("uint64.toTokens().dump():")
    uint64.toTokens().dump()
}

运行结果:

uint64.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 4294967295, fileID: 26, line: 77, column: 26

extend UInt8 <: ToTokens

extend UInt8 <: ToTokens

功能:实现 UInt8 类型到 Tokens 类型的转换。

父类型:

func toTokens()

public func toTokens(): Tokens

功能:实现 UInt8 类型到 Tokens 类型的转换。

返回值:

示例:

import std.ast.*

main() {
    let uint8: UInt8 = 255
    
    // 输出 toTokens() 的结果
    println("uint8.toTokens().dump():")
    uint8.toTokens().dump()
}

运行结果:

uint8.toTokens().dump():
description: integer_literal, token_id: 139, token_literal_value: 255, fileID: 26, line: 98, column: 26