智能客服
你问我答,随时在线为你解决问题
- public class Annotation <: Node {
- public init()
- public init(input: Tokens)
- }
功能:表示编译器内置的注解节点。
一个 Annotation 节点:@CallingConv[xxx], @Attribute[xxx], @When[condition]等。
类型:RefExpr
- public mut prop arguments: ArrayList<Argument>
功能:获取或设置 Annotation 中的参数序列,如 @CallingConv[xxx] 中的 xxx。
- public mut prop attributes: Tokens
功能:获取或设置 Attribute 中设置的属性值,仅用于 @Attribute,如 @Attribute[xxx] 中的 xxx。
类型:Tokens
- public mut prop condition: Expr
功能:获取或设置条件编译中的条件表达式,用于 @When,如 @When[xxx] 中的 xxx。
类型:Expr
- public mut prop identifier: Token
功能:获取或设置 Annotation 节点的标识符,如 @CallingConv[xxx] 中的 CallingConv。
类型:Token
- public init(input: Token)
功能:根据输入的词法单元,构造一个 Annotation 对象。
参数:
异常:
- public class Argument <: Node {
- public init()
- }
功能:表示函数调用的实参节点。
例如 foo(arg:value) 中的 arg:value。
- public mut prop identifier: Token
功能:获取或设置 Argument 节点中的标识符,如 arg:value 中的 arg,可能为空。
类型:Token
- public class ArrayLiteral <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 Array 字面量节点。
ArrayLiteral 节点:使用格式 [element1, element2, ... , elementN] 表示, 每个 element 是一个表达式。
- public init(input: Tokens)
功能:构造一个 ArrayLiteral 对象。
参数:
异常:
- public class AsExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个类型检查表达式。
一个 AsExpr 表达式:e as T,类型为 Option<T>。其中 e 可以是任何类型的表达式,T 可以是任何类型。
- public init(input: Tokens)
功能:构造一个 AsExpr 对象。
参数:
异常:
- public class AssignExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示赋值表达式节点。
用于将左操作数的值修改为右操作数的值。一个 AssignExpr 节点:a = b。
- public init(input: Tokens)
功能:构造一个 AssignExpr 对象。
参数:
异常:
- public class BinaryExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个二元操作表达式节点。
一个 BinaryExpr 节点:a + b, a - b 等。
- public init(input: Tokens)
功能:构造一个 BinaryExpr 对象。
参数:
异常:
- public class Block <: Expr {
- public init()
- }
功能:表示块节点。
Block 由一对匹配的大括号及其中可选的表达式声明序列组成的结构,简称 “块”。
- public class Body <: Node {
- public init()
- }
功能:表示 Class 类型、 Struct 类型、 Interface 类型以及扩展中由 {} 和内部的一组声明节点组成的结构。
- public class CallExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示函数调用节点节点。
一个 CallExpr 节点包括一个表达式后面紧跟参数列表,例如 foo(100)。
- public init(input: Tokens)
功能:构造一个 CallExpr 对象。
参数:
异常:
- public class ClassDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:类定义节点。
类的定义使用 class 关键字,定义依次为:可缺省的修饰符、class 关键字、class 名、可选的类型参数、是否指定父类或父接口、可选的泛型约束、类体的定义。
- public init(inputs: Tokens)
功能:构造一个 ClassDecl 对象。
参数:
异常:
- public class ConstPattern <: Pattern {
- public init()
- public init(input: Tokens)
- }
功能:表示常量模式节点。
常量模式可以是整数字面量、字符字节字面量、浮点数字面量、字符字面量、布尔字面量、字符串字面量等字面量,如 case 1 => 0 中的 1。
- public mut prop litConstExpr: LitConstExpr
功能:获取或设置 ConstPattern 节点中的字面量表达式。
类型:LitConstExpr
- public init(input: Tokens)
功能:构造一个 ConstPattern 对象。
参数:
异常:
- public class Constructor <: Node {
- public init()
- }
功能:表示 enum 类型中的 Constructor 节点。
一个 Constructor 节点:enum TimeUnit { Year | Month(Float32, Float32)} 中的 Year 和 Month(Float32, Float32)。
Constructor 可以没有参数,也可以有一组不同类型的参数。
- public mut prop typeArguments: ArrayList<TypeNode>
功能:获取或设置 Constructor 节点可选的参数类型节点的集合。
- public open class Decl <: Node
功能:所有声明节点的父类,继承自 Node 节点,提供了所有声明节点的通用接口。
类定义、接口定义、函数定义、变量定义、枚举定义、结构体定义、扩展定义、类型别名定义、宏定义等都属于 Decl 节点。
- public mut prop annotations: ArrayList<Annotation>
功能:获取或设置作用于 Decl 节点的注解列表。
类型:ArrayList<Annotation>
- public mut prop genericConstraint: ArrayList<GenericConstraint>
功能:获取或设置定义节点的泛型约束,可能为空,如 func foo<T>() where T <: Comparable<T> {} 中的 where T <: Comparable<T>。
- public mut prop genericParam: GenericParam
功能:获取或设置形参列表,类型形参列表由 <> 括起,多个类型形参之间用逗号分隔。
类型:GenericParam
异常:
- public open mut prop identifier: Token
功能:获取或设置定义节点的标识符,如 class foo {} 中的 foo。
类型:Token
- public mut prop modifiers: ArrayList<Modifier>
功能:获取或设置修饰节点的修饰符列表。
- public func getAttrs(): Tokens
功能:获取当前节点的属性(一般通过内置的 Attribute 来设置某个声明设置属性值)。
返回值:
- public func hasAttr(attr: String): Bool
功能:判断当前节点是否具有某个属性(一般通过内置的 Attribute 来设置某个声明的属性值)。
参数:
返回值:
- public class DoWhileExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 do-while 表达式。
- public mut prop keywordD: Token
功能:获取或设置 DoWhileExpr 节点中 do 关键字,其中 keywordD 中的 D 为关键字 do 的首字母大写,代表关键字 do 。
类型:Token
- public mut prop keywordW: Token
功能:获取或设置 DoWhileExpr 节点中 while 关键字,其中 keywordW 中的 W 为关键字 while 的首字母大写,代表关键字 while 。
类型:Token
- public init(input: Tokens)
功能:构造一个 DoWhileExpr 对象。
参数:
异常:
- public class EnumDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个 Enum 定义节点。
Enum 的定义使用 enum 关键字,定义依次为:可缺省的修饰符、enum 关键字、enum 名、可选的类型参数、是否指定父接口、可选的泛型约束、enum 体的定义。
- public mut prop constructors: ArrayList<Constructor>
功能:获取或设置 EnumDecl 节点内 constructor 的成员。
类型:ArrayList<Constructor>
- public init(inputs: Tokens)
功能:构造一个 EnumDecl 对象。
参数:
异常:
- public class EnumPattern <: Pattern {
- public init()
- public init(input: Tokens)
- }
功能:表示 enum 模式节点。
用于匹配 enum 的 constructor, 如 case Year(n) => 1 中的 Year(n)。
- public init(input: Tokens)
功能:构造一个 EnumPattern 对象。
参数:
异常:
- public class ExceptTypePattern <: Pattern {
- public init()
- public init(input: Tokens)
- }
功能:表示一个用于异常模式状态下的节点。
例如 e: Exception1 | Exception2。
- public init(input: Tokens)
功能:构造一个 ExceptTypePattern 对象。
参数:
异常:
- public open class Expr <: Node
功能:所有表达式节点的父类,继承自 Node 节点。
表达式节点的 toTokens 方法会根据操作符优先级添加括号,例如已有一个 BinaryExpr 节点 a b, 用户将左表达式内容 a 修改为 a + 1,修改后 toTokens 方法会为左表达式添加括号,toTokens 输出为 (a + 1) b。
- public class ExtendDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个扩展定义节点。
扩展的定义使用 extend 关键字,扩展定义依次为:extend 关键字、扩展类型、是否指定父接口、可选的泛型约束、扩展体的定义。
- public override mut prop identifier: Token
功能:ExtendDecl 节点继承 Decl 节点,但是不支持 identifier 属性,使用时会抛出异常。
类型:Token
异常:
- public init(inputs: Tokens)
功能:构造一个 ExtendDecl 对象。
参数:
异常:
- public class ForInExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 for-in 表达式。
ForInExpr 类型中,关键字 for 之后是 Pattern, 此后是一个 in 关键字和表达式节点,最后是一个执行循环体 Block。
- public mut prop patternGuard: Expr
功能:获取或设置 ForInExpr 中的 patternGuard 条件表达式。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 ForInExpr 对象。
参数:
异常:
- public class FuncDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个函数定义节点。
由可选的函数修饰符,关键字 func ,函数名,可选的类型形参列表,函数参数,可缺省的函数返回类型来定义一个函数,函数定义时必须有函数体,函数体是一个块。
- public mut prop declType: TypeNode
功能:获取或设置 FuncDecl 节点的函数返回类型。
类型:TypeNode
异常:
- public init(inputs: Tokens)
功能:构造一个 FuncDecl 对象。
参数:
异常:
- public func isConst(): Bool
功能:判断是否是一个 Const 类型的节点。
返回值:
- public open class FuncParam <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示函数参数节点,包括非命名参数和命名参数。
一个 FuncParam 节点: func foo(a: Int64, b: Float64) {...} 中的 a: Int64 和 b: Float64。
- public mut prop expr: Expr
功能:获取或设置具有默认值的函数参数的变量初始化节点。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 FuncParam 对象。
参数:
异常:
- public func isMemberParam(): Bool
功能:当前的函数参数是否是主构造函数中的参数。
返回值:
- public class FuncType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示函数类型节点。
由函数的参数类型和返回类型组成,参数类型与返回类型之间用 -> 分隔,如:(Int32) -> Unit。
- public mut prop keyword: Token
功能:获取或设置 FuncType 节点的中的关键字 CFunc 的词法单元,若不是一个 CFunc 类型,则获取一个空的词法单元。
类型:Token
- public init(input: Tokens)
功能:构造一个 FuncType 对象。
参数:
异常:
- public class GenericConstraint <: Node {
- public init()
- }
功能:表示一个泛型约束节点。
一个 GenericConstraint 节点:interface Enumerable<U> where U <: Bounded {} 中的 where where U <: Bounded。
通过 where 之后的 <: 运算符来声明,由一个下界与一个上界来组成。其中 <: 左边称为约束的下界,下界只能为类型变元。<: 右边称为约束上界,约束上界可以为类型。
- public mut prop keyword: Token
功能:获取或设置 GenericConstraint 节点中关键字 where 词法单元,可能为空。
类型:Token
- public mut prop typeArgument: TypeNode
功能:获取或设置 GenericConstraint 节点中的约束下界。
类型:TypeNode
- public mut prop upperBounds: ArrayList<TypeNode>
功能:获取或设置 GenericConstraint 节点约束上界的 TypeNode 类型节点的集合。
- public class GenericParam <: Node {
- public init()
- public init(parameters: Tokens)
- }
功能:表示一个类型形参节点。
一个 GenericParam 节点:<T1, T2, T3>。
类型形参用 <> 括起并用 , 分隔多个类型形参名称。
- public mut prop parameters: Tokens
功能:获取或设置 GenericParam 节点中的类型形参的 Tokens 类型,可能为空,如 <T1, T2, T3> 中的 T1 T2 和 T3。
类型:Tokens
- public init(parameters: Tokens)
功能:构造一个 GenericParam 对象。
参数:
- public class IfExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示条件表达式。
可以根据判定条件是否成立来决定执行哪条代码分支。一个 IfExpr 节点中 if 是关键字,if 之后是一个小括号,小括号内可以是一个表达式或者一个 let 声明的解构匹配,接着是一个 Block,Block 之后是可选的 else 分支。 else 分支以 else 关键字开始,后接新的 if 表达式或一个 Block。
- public mut prop elseExpr: Expr
功能:获取或设置 IfExpr 节点中 else 分支节点。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 IfExpr 对象。
参数:
异常:
- public class ImportList <: Node {
- public init()
- public init(input: Tokens)
- }
功能:表示包导入节点。
一个 ImportList 节点: import module.package.foo as bar。
导入节点以可选的访问性修饰符(public/protected/internal/private)加关键字 import 开头。以 import pkga.pkgb.item 为例,pkga.pkgb 为导入的顶级定义或声明所在的包的名字,item 为导入的顶级定义或声明。
- public mut prop keywordI: Token
功能:获取或设置 ImportList 节点中的 import 关键字的词法单元,I 为关键字首字母。
类型:Token
- public mut prop content: ImportContent
功能:获取或设置 ImportList 节点中的被导入的具体项。如 import a.b.c 中的 a.b.c 部分。
- public init(input: Tokens)
功能:构造一个 ImportList 对象。
参数:
异常:
- public func isImportMulti(): Bool
功能:判断 ImportList 节点是否导入了多个顶级定义或声明。
返回值:
- public class ImportContent <: Node {
- public init()
- }
- public mut prop prefixPaths: Tokens
功能:获取或设置 ImportContent 节点中完整包名的前缀部分的词法单元序列,可能为空。如 import a.b.c 中的 a 和 b。
类型:Tokens
- public mut prop prefixDots: Tokens
功能:获取或设置 ImportContent 节点中完整包名中用于分隔每层子包的词法单元序列,可能为空。如 import a.b.c 中的两个 .。
类型:Tokens
- public mut prop identifier: Token
功能:获取或设置 ImportContent 节点中被导入的项,它可能是包中的顶层定义或声明,也可能是子包的名字。
类型:Token
- public mut prop importAlias: Tokens
功能:获取或设置 ImportContent 节点中导入的定义或声明的别名词法单元序列,只有 importKind 为 ImportKind.Alias 时非空。如:import packageName.xxx as yyy 中的 as yyy。
类型:Tokens
- public mut prop lBrace: Token
功能:获取或设置 ImportContent 节点中的 { 操作符词法单元,只有 importKind 为 ImportKind.Multi 时非空。
类型:Token
- public mut prop items: ArrayList<ImportContent>
功能:获取或设置 ImportContent 节点中被导入的所有项,只有 importKind 为 ImportKind.Multi 时非空。
类型:ArrayList<ImportContent>
- public mut prop commas: Tokens
功能:获取或设置 ImportContent 节点中的 , 操作符词法单元序列,只有 importKind 为 ImportKind.Multi 时非空。
类型:Tokens
- public mut prop rBrace: Token
功能:获取或设置 ImportContent 节点中的 } 操作符词法单元,只有 importKind 为 ImportKind.Multi 时非空。
类型:Token
- public func isImportAlias(): Bool
功能:判断 ImportContent 节点是否对导入项取了别名。
返回值:
- public func isImportAll(): Bool
功能:判断 ImportContent 节点是否为全导入。
返回值:
- public func isImportMulti(): Bool
功能:判断 ImportContent 节点是否导入了多个顶级定义或声明。
返回值:
- public func isImportSingle(): Bool
功能:判断 ImportContent 节点是否为单导入。
返回值:
- public class IncOrDecExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示包含自增操作符(++)或自减操作符(--)的表达式。
- public init(input: Tokens)
功能:构造一个 IncOrDecExpr 对象。
参数:
异常:
- public class InterfaceDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示接口定义节点。
接口的定义使用 interface 关键字,接口定义依次为:可缺省的修饰符、interface 关键字、接口名、可选的类型参数、是否指定父接口、可选的泛型约束、接口体的定义。
- public init(inputs: Tokens)
功能:构造一个 InterfaceDecl 对象。
参数:
异常:
- public class IsExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个类型检查表达式。
- public init(input: Tokens)
功能:构造一个 IsExpr 对象。
参数:
异常:
- public class JumpExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示循环表达式的循环体中的 break 和 continue。
- public init(input: Tokens)
功能:构造一个 JumpExpr 对象。
参数:
异常:
- public class LambdaExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 Lambda 表达式,是一个匿名的函数。
一个 LambdaExpr 节点有两种形式,一种是有形参的,例如 {a: Int64 => e1; e2 },另一种是无形参的,例如 { => e1; e2 }。
- public init(input: Tokens)
功能:构造一个 LambdaExpr 对象。
参数:
异常:
- public class LetPatternExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 let 声明的解构匹配节点。
一个 LetPatternExpr 节点:if (let Some(v) <- x) 中的 let Some(v) <- x。
- public mut prop pattern: Pattern
功能:获取或设置 LetPatternExpr 节点中 let 之后的 pattern。
类型:Pattern
- public init(input: Tokens)
功能:构造一个 LetPatternExpr 对象。
参数:
异常:
- public class LitConstExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个常量表达式节点。
一个 LitConstExpr 表达式:"abc",123 等。
- public init(input: Tokens)
功能:构造一个 LitConstExpr 对象。
参数:
异常:
- public class MacroDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个宏定义节点。
一个 MacroDecl 节点:public macro M(input: Tokens): Tokens {...}。
- public mut prop declType: TypeNode
功能:获取或设置 MacroDecl 节点的函数返回类型。
类型:TypeNode
异常:
- public init(inputs: Tokens)
功能:构造一个 MacroDecl 对象。
参数:
异常:
- public class MacroExpandDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示宏调用节点。
一个 MacroExpandDecl 节点: @M class A {}。
- public init(inputs: Tokens)
功能:构造一个 MacroExpandDecl 对象。
参数:
异常:
- public class MacroExpandExpr <: Expr {
- public init()
- public init(inputs: Tokens)
- }
功能:表示宏调用节点。
一个 MacroExpandExpr 节点: @M (a is Int64)。
- public init(input: Tokens)
功能:构造一个 MacroExpandExpr 对象。
参数:
异常:
- public class MacroExpandParam <: FuncParam {
- public init()
- }
功能:表示宏调用节点。
一个 MacroExpandDecl 节点: func foo (@M a: Int64) 中的 @M a: Int64。
- public class MacroMessage
功能:记录内层宏发送的信息。
- public func getBool(key: String): Bool
功能:获取对应 key 值的 Bool 类型信息。
参数:
返回值:
异常:
- public func getInt64(key: String): Int64
功能:获取对应 key 值的 Int64 类型信息。
参数:
返回值:
异常:
- public func getString(key: String): String
功能:获取对应 key 值的 String 类型信息。
参数:
返回值:
异常:
- public func hasItem(key: String): Bool
功能:检查是否有 key 值对应的相关信息。
参数:
返回值:
- public class MainDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个 main 函数定义节点。
一个 MainDecl 节点:main() {}。
- public mut prop declType: TypeNode
功能:获取或设置 MainDecl 节点的函数返回类型。
类型:TypeNode
异常:
- public init(inputs: Tokens)
功能:构造一个 MainDecl 对象。
参数:
异常:
- public class MatchCase <: Node {
- public init()
- }
功能:表示一个 MatchCase 类型。
一个 MatchCase 节点:case failScore where score > 0 => 0。
- public mut prop expr: Expr
功能:获取或设置 MatchCase 中位于 case 后的表达式节点。
类型:Expr
异常:
- public mut prop patternGuard: Expr
功能:获取或设置 MatchCase 中可选的 pattern guard 表达式节点。
类型:Expr
异常:
- public mut prop patterns: ArrayList<Pattern>
功能:获取或设置 MatchCase 中位于 case 后的 pattern 列表。
- public class MatchExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示模式匹配表达式实现模式匹配。
模式匹配表达式分为带 selector 的 match 表达式和不带 selector 的 match 表达式。
- public mut prop matchCases: ArrayList<MatchCase>
功能:获取或设置 MatchExpr 内的 matchCase, matchCase 以关键字 case 开头,后跟一个或者多个由 Pattern 或 Expr节点,具体见 MatchCase。
- public mut prop selector: Expr
功能:获取或设置关键字 match 之后的 Expr。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 MatchExpr 对象。
参数:
异常:
- public class MemberAccess <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示成员访问表达式。
可以用于访问 class、interface、struct 等类型的成员。一个 MemberAccess 节点的形式为 T.a,T 为成员访问表达式的主体,a 表示成员的名字。
- public mut prop typeArguments: ArrayList<TypeNode>
功能:获取或设置 MemberAccess 节点中的实例化类型。
- public init(input: Tokens)
功能:构造一个 MemberAccess 对象。
参数:
异常:
- public class Modifier <: Node {
- public init()
- public init(keyword: Token)
- }
功能:表示该定义具备某些特性,通常放在定义处的最前端。
一个 Modifier 节点:public func foo() 中的 public。
- sealed abstract class Node <: ToTokens
功能:所有仓颉语法树节点的父类。
该类提供了所有数据类型通用的操作接口。
- public func dump(): Unit
功能:将当前语法树节点转为为树形结构的形态并进行打印。
语法树节点的树形结构将按照以下形式进行输出:
语法树输出的详细格式请参考示例代码中语法树节点打印的内容。
- public func traverse(v: Visitor): Unit
功能:遍历当前语法树节点及其子节点。若提前终止遍历子节点的行为,可重写 visit 函数并调用 breakTraverse 函数提前终止遍历行为,详细见 示例代码中 自定义访问函数遍历 AST 对象示例 的内容。
参数:
- public class OptionalExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个带有问号操作符的表达式节点。
一个 OptionalExpr 节点:a?.b, a?(b), a?[b] 中的 a?。
- public init(input: Tokens)
功能:构造一个 OptionalExpr 对象。
参数:
异常:
- public class PackageHeader <: Node {
- public init()
- public init(input: Tokens)
- }
功能:表示包声明节点。
一个 PackageHeader 节点: package define 或者 macro package define。
包声明以关键字 package 或 macro package 开头,后面紧跟包名,且包声明必须在源文件的首行。
- public mut prop accessible: Token
功能:获取或设置 PackageHeader 节点中的访问性修饰符的词法单元,可能为空的词法单元。
类型:Token
- public mut prop keywordM: Token
功能:获取或设置 PackageHeader 节点中的 macro 关键字的词法单元(M 为关键字首字母,下同),可能为空的词法单元。
类型:Token
- public mut prop prefixPaths: Tokens
功能:获取或设置 PackageHeader 节点中完整包名的前缀部分的词法单元序列,可能为空。如 package a.b.c 中的 a 和 b。
类型:Tokens
- public mut prop prefixDots: Tokens
功能:获取或设置 PackageHeader 节点中完整包名中用于分隔每层子包的词法单元序列,可能为空。如 package a.b.c 中的两个 .。
类型:Tokens
- public mut prop packageIdentifier: Token
功能:获取或设置 PackageHeader 节点中当前包的名字,如果当前包为 root 包,即为完整包名,若当前包为子包,则为最后一个 . 后的名字。
类型:Token
- public init(input: Tokens)
功能:构造一个 PackageHeader 对象。
参数:
异常:
- public class ParenExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个括号表达式节点,是指使用圆括号括起来的表达式。
一个 ParenExpr 节点:(1 + 2)。
- public mut prop parenthesizedExpr: Expr
功能:获取或设置 ParenExpr 节点中由圆括号括起来的子表达式。
类型:Expr
- public init(input: Tokens)
功能:构造一个 ParenExpr 对象。
参数:
异常:
- public class ParenType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示括号类型节点。
例如 var a: (Int64) 中的 (Int64)。
- public mut prop parenthesizedType: TypeNode
功能:获取或设置 ParenType 节点中括起来的类型,如 (Int64) 中的 Int64。
类型:TypeNode
- public init(input: Tokens)
功能:构造一个 ParenType 对象。
参数:
异常:
- public class PrefixType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示带问号的前缀类型节点。
例如 var a : ?A 中的 ?A。
- public mut prop baseType: TypeNode
功能:获取或设置 PrefixType 节点中的类型节点,如 var a: ?A 中的 A。
类型:TypeNode
- public init(input: Tokens)
功能:构造一个 PrefixType 对象。
参数:
异常:
- public class PrimaryCtorDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个主构造函数节点。
主构造函数节点由修饰符,主构造函数名,形参列表和主构造函数体构成。
- public init(inputs: Tokens)
功能:构造一个 PrimaryCtorDecl 对象。
参数:
异常:
- public func isConst(): Bool
功能:判断是否是一个 Const 类型的节点。
返回值:
- public class PrimitiveType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示一个基本类型节点。
例如数值类型,Rune 类型,布尔类型等。
- public init(input: Tokens)
功能:构造一个 PrimitiveType 对象。
参数:
异常:
- public class PrimitiveTypeExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示基本类型表达式节点。
PrimitiveTypeExpr 节点:编译器内置的基本类型作为表达式出现在节点中。如 Int64.toSting() 中的 Int64。
- public init(input: Tokens)
功能:构造一个 PrimitiveTypeExpr 对象。
参数:
异常:
- public class Program <: Node {
- public init()
- public init(input: Tokens)
- }
功能:表示一个仓颉源码文件节点。
一个仓颉源码文件节点主要包括包定义节点,包导入节点和 TopLevel 作用域内的所有声明节点。
任何一个仓颉源码文件都可以被解析为一个 Program 类型。
- public mut prop decls: ArrayList<Decl>
功能:获取或设置仓颉源码文件中 TopLevel 作用域内定义的声明节点列表。
- public mut prop importLists: ArrayList<ImportList>
功能:获取或设置仓颉源码文件中包导入节点 ImportList 的列表。
类型:ArrayList<ImportList>
- public init(input: Tokens)
功能:构造一个 Program 对象。
参数:
异常:
- public class PropDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个属性定义节点。
一个 PropDecl 节点:prop var X: Int64 { get() { 0 } }。
- public mut prop getter: FuncDecl
功能:获取或设置 PropDecl 节点的 getter 函数。
类型:FuncDecl
异常:
-ASTException:当 PropDecl 节点不存在 getter 函数时,抛出异常。
- public mut prop setter: FuncDecl
功能:获取或设置 PropDecl 节点的 setter 函数。
类型:FuncDecl
异常:
-ASTException:当 PropDecl 节点不存在 setter 函数时,抛出异常。
- public init(inputs: Tokens)
功能:构造一个 PropDecl 对象。
参数:
异常:
- public class QualifiedType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示一个用户自定义成员类型。
例如 var a : T.a 中的 T.a, 其中 T 是包名,a 是从 T 包中导入的类型。
- public mut prop baseType: Expr
功能:获取或设置 QualifiedType 节点的成员访问类型主体,如 var a : T.a 中的 T。
类型:Expr
- public mut prop identifier: Token
功能:获取或设置 QualifiedType 节点成员的标识符,如 var a : T.a 中的 a。
类型:Token
- public mut prop typeArguments: ArrayList<TypeNode>
功能:获取或设置 QualifiedType 节点中的实例化类型的列表,如 T.a<Int32> 中的 Int32,列表可能为空。
- public init(input: Tokens)
功能:构造一个 QualifiedType 对象。
参数:
异常:
- public class QuoteExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 quote 表达式节点。
一个 QuoteExpr 节点: quote(var ident = 0)。
- public init(input: Tokens)
功能:构造一个 QuoteExpr 对象。
参数:
异常:
- public class QuoteToken <: Expr
功能:表示 quote 表达式节点内任意合法的 token。
- public class RangeExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示包含区间操作符的表达式。
RangeExpr 节点:存在两种 Range 操作符:.. 和 ..=,分别用于创建左闭右开和左闭右闭的 Range 实例。它们的使用方式分别为 start..end:step 和 start..=end:step。
- public mut prop end: Expr
功能:获取或设置 RangeExpr 中的终止值。
类型:Expr
异常:
- public mut prop start: Expr
功能:获取或设置 RangeExpr 中的起始值。
类型:Expr
异常:
- public mut prop step: Expr
功能:获取或设置 RangeExpr 中序列中前后两个元素之间的差值。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 RangeExpr 对象。
参数:
异常:
- public class RefExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个使用自定义类型节点相关的表达式节点。
- public init(input: Tokens)
功能:构造一个 RefExpr 对象。
参数:
异常:
- public class RefType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示一个用户自定义类型节点。
例如 var a : A = A() 中的 A。
- public mut prop identifier: Token
功能:获取或设置构造 RefType 类型的关键字,如 var a : A = A() 中的 A。
类型:Token
- public mut prop typeArguments: ArrayList<TypeNode>
功能:获取或设置 RefType 节点中的实例化类型的列表,可能为空,如 var a : Array<Int32> 中的 Int32。
- public init(input: Tokens)
功能:构造一个 RefType 对象。
参数:
异常:
- public class ReturnExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 return 表达式节点。
一个 ReturnExpr 节点:return 1。
- public mut prop expr: Expr
功能:获取或设置 ReturnExpr 节点中的表达式节点。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 ReturnExpr 对象。
参数:
异常:
- public class SpawnExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 Spawn 表达式。
一个 SpawnExpr 节点由 spawn 关键字和一个不包含形参的闭包组成,例如:spawn { add(1, 2) }。
- public mut prop threadContext: Expr
功能:获取或设置 SpawnExpr 中的线程上下文环境表达式。
类型:Expr
异常:
- public init(input: Tokens)
功能:构造一个 SpawnExpr 对象。
参数:
异常:
- public class StructDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示一个 Struct 节点。
Struct 的定义使用 struct 关键字,定义依次为:可缺省的修饰符、struct 关键字、struct 名、可选的类型参数、是否指定父接口、可选的泛型约束、struct 体的定义。
- public init(inputs: Tokens)
功能:构造一个 StructDecl 对象。
参数:
异常:
- public class SubscriptExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示索引访问表达式。
SubscriptExpr 节点:用于那些支持索引访问的类型(包括 Array 类型和 Tuple 类型)通过下标来访问其具体位置的元素,如 arr[0]。
- public init(input: Tokens)
功能:构造一个 SubscriptExpr 对象。
参数:
异常:
- public class SynchronizedExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 synchronized 表达式。
一个 SynchronizedExpr 节点由 synchronized 关键字和 StructuredMutex 对以及后面的代码块组成, 例如 synchronized(m) { foo() }。
- public mut prop structuredMutex: Expr
功能:获取或设置 SynchronizedExpr 中的 StructuredMutex 的对象。
类型:Expr
- public init(input: Tokens)
功能:构造一个 SynchronizedExpr 对象。
参数:
异常:
- public class ThisType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示 This 类型节点。
- public init(input: Tokens)
功能:构造一个 ThisType 对象。
参数:
异常:
- public class ThrowExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 throw 表达式节点。
一个 ThrowExpr 节点:throw Exception()。
- public init(input: Tokens)
功能:构造一个 ThrowExpr 对象。
参数:
异常:
- public open class Tokens <: ToString & Iterable<Token> {
- public init()
- public init(tokArray: Array<Token>)
- public init(tokArrayList: ArrayList<Token>)
- }
功能:对 Token 序列进行封装的类型。
- public func append(node: Node): Tokens
功能:将当前的 Tokens 与传入节点所转换得到的 Tokens 进行拼接。
参数:
返回值:
- public func append(tokens: Tokens): Tokens
功能:在当前的 Tokens 后追加传入的 Tokens 进行拼接(该接口性能较其他拼接函数表现更好)。
参数:
返回值:
- public func concat(tokens: Tokens): Tokens
功能:将当前的 Tokens 与传入的 Tokens 进行拼接。
参数:
返回值:
- public open func get(index: Int64): Token
功能:通过索引值获取 Token 元素。
参数:
返回值:
- public func iterator(): TokensIterator
功能:获取 Tokens 对象中的一个迭代器对象。
返回值:
- public operator func +(token: Token): Tokens
功能:使用当前 Token 与另一个 Token 相加以获取新的 Tokens。
参数:
返回值:
- public operator func +(tokens: Tokens): Tokens
功能:使用当前 Token 与 Tokens 相加以获取新的 Tokens 类型。
参数:
返回值:
- public operator func [](index: Int64): Token
功能:操作符重载,通过索引值获取对应 Token。
参数:
返回值:
- public operator func [](range: Range<Int64>): Tokens
功能:操作符重载,通过 range 获取对应 Tokens 切片。
参数:
返回值:
异常:
- public class TokensIterator <: Iterator<Token> {
- public init(tokens: Tokens)
- }
功能:实现 Tokens 的迭代器功能。
- public func iterator(): Iterator<Token>
功能:获取当前迭代器实例。
返回值:
- public func next(): Option<Token>
功能:获取迭代器中的下一个值。
返回值:
- public func peek(): Option<Token>
功能:获取迭代器中的当前值。
返回值:
- public func seeing(kind: TokenKind): Bool
功能:判断当前节点的 Token 类型是否是传入的类型。
参数:
返回值:
- public class TrailingClosureExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示尾随 Lambda 节点。
一个 TrailingClosureExpr 节点将 lambda 表达式放在函数调用的尾部,括号外面,如 f(a){ i => i * i }。
- public mut prop lambdaExpr: LambdaExpr
功能:获取或设置 TrailingClosureExpr 中的尾随 lambda。
类型:LambdaExpr
- public init(input: Tokens)
功能:构造一个 TrailingClosureExpr 对象。
参数:
异常:
- public class TryExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 try 表达式节点。
try 表达式包括三个部分:try 块,catch 块和 finally 块。
- public mut prop catchPatterns: ArrayList<Pattern>
功能:获取或设置 TryExpr 中通过模式匹配的方式匹配待捕获的异常序列。
- public mut prop finallyBlock: Block
功能:获取或设置 TryExpr 中的关键字 Finally 块。
类型:Block
异常:
- public mut prop resourceSpec: ArrayList<VarDecl>
功能:获取或设置 TryExpr 中 Try-with-resources 类型表达式的实例化对象序列。
- public init(input: Tokens)
功能:构造一个 TryExpr 对象。
参数:
异常:
- public class TupleLiteral <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示元组字面量节点。
TupleLiteral 节点:使用格式 (expr1, expr2, ... , exprN) 表示,每个 expr 是一个表达式。
- public init(input: Tokens)
功能:构造一个 TupleLiteral 对象。
参数:
异常:
- public class TuplePattern <: Pattern {
- public init()
- public init(input: Tokens)
- }
功能:表示 Tuple 模式节点。
用于 tuple 值的匹配,如 case ("Bob", age) => 1 中的 ("Bob", age)。
- public init(input: Tokens)
功能:构造一个 TuplePattern 对象。
参数:
异常:
- public class TupleType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示元组类型节点。
例如 var a : (Int64, Int32) 中的 (Int64, Int32)。
- public init(input: Tokens)
功能:构造一个 TupleType 对象。
参数:
异常:
- public class TypeAliasDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示类型别名节点。
一个 TypeAliasDecl 节点: type Point2D = Float64。
该节点中 type 作为关键字,紧跟任意的合法标识符,其后的 type 是任意的 top-level 可见的类型,标识符和 type 之间使用 = 进行连接。
- public init(inputs: Tokens)
功能:构造一个 TypeAliasDecl 对象。
参数:
异常:
- public class TypeConvExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示类型转换表达式。
用于实现若干数值类型间的转换。一个 TypeConvExpr 节点:Int8(32)。
- public init(input: Tokens)
功能:构造一个 TypeConvExpr 对象。
参数:
异常:
- public mut prop typeParameterName: Token
功能:获取或设置类型节点的参数,如:(p1:Int64, p2:Int64) 中的 p1 和 p2,并且可以为空。
类型:Token
- public class TypePattern <: Pattern {
- public init()
- public init(input: Tokens)
- }
功能:表示类型模式节点。
用于判断一个值的运行时类型是否是某个类型的子类型,如 case b: Base => 0 中的 b: Base。
- public mut prop patternType: TypeNode
功能:获取或设置 TypePattern 节点中的待匹配的模式类型节点。
类型:TypeNode
- public init(input: Tokens)
功能:构造一个 TypePattern 对象。
参数:
异常:
- public class UnaryExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示一个一元操作表达式节点。
- public init(input: Tokens)
功能:构造一个 UnaryExpr 对象。
参数:
异常:
- public class VArrayExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 VArray 的实例节点。
一个 VArrayExpr 节点:let arr: VArray<Int64, $5> = VArray<Int64, $5> { i => i} 中的 VArray<Int64, $5> { i => i}。
- public mut prop vArrayType: VArrayType
功能:获取或设置 VArrayExpr 的 VArray 类型节点。
类型:VArrayType
- public init(input: Tokens)
功能:构造一个 VArrayExpr 对象。
参数:
异常:
- public class VArrayType <: TypeNode {
- public init()
- public init(input: Tokens)
- }
功能:表示 VArray 类型节点。
使用泛型 VArray<T, size: Int64> 表示 VArray 类型。
- public mut prop elementTy: TypeNode
功能:获取或设置 VArrayType 节点中的类型变元节点,如 VArray<Int16, $0> 中的 Int16。
类型:TypeNode
- public init(input: Tokens)
功能:构造一个 VArrayType 对象。
参数:
异常:
- public class VarDecl <: Decl {
- public init()
- public init(inputs: Tokens)
- }
功能:表示变量定义节点。
一个 VarDecl 节点: var a: String,var b: Int64 = 1。
变量的定义主要包括如下几个部分:修饰符、关键字、patternsMaybeIrrefutable、变量类型和变量初始值。
- public mut prop declType: TypeNode
功能:获取或设置 VarDecl 节点的变量类型。
类型:TypeNode
异常:
- public mut prop expr: Expr
功能:获取或设置 VarDecl 节点的变量初始化节点。
类型:Expr
异常:
- public init(inputs: Tokens)
功能:构造一个 VarDecl 对象。
参数:
异常:
- public func isConst(): Bool
功能:判断是否是一个 Const 类型的节点。
返回值:
- public class VarOrEnumPattern <: Pattern {
- public init()
- public init(identifier: Token)
- }
功能:表示当模式的标识符为 Enum 构造器时的节点。
例如 case RED 中的 RED 为 Enum 构造器。
- public init(identifier: Token)
功能:构造一个 VarOrEnumPattern 对象。
参数:
异常:
- public class VarPattern <: Pattern {
- public init()
- public init(identifier: Token)
- }
功能:表示绑定模式节点。
使用一个合法的标识符表示,一般适用于声明节点中,如 case n => 0 中的 n。
- public init(identifier: Token)
功能:构造一个 VarPattern 对象。
参数:
异常:
- public open abstract class Visitor
功能:一个抽象类,其内部默认定义了访问不同类型 AST 节点访问(visit)函数。
- public func breakTraverse(): Unit
功能:用于重写 visit 函数中,通过调用该函数来终止继续遍历子节点的行为。
- public class WhileExpr <: Expr {
- public init()
- public init(input: Tokens)
- }
功能:表示 while 表达式。
while 是关键字,while 之后是一个小括号,小括号内可以是一个表达式或者一个 let 声明的解构匹配,接着是一个 Block 节点。
- public init(input: Tokens)
功能:构造一个 WhileExpr 对象。
参数:
异常:
- public class WildcardExpr <: Expr {
- public init()
- public init(keyword: Tokens)
- }
功能:表示通配符表达式节点。
- public init(keyword: Tokens)
功能:构造一个 WildcardExpr 对象。
参数:
异常:
- public class WildcardPattern <: Pattern {
- public init()
- public init(keyword: Tokens)
- }
功能:表示通配符模式节点。
使用下划线 _ 表示,可以匹配任意值。
- public init(keyword: Tokens)
功能:构造一个 WildcardPattern 对象。
参数:
异常: