/*
* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
* This source file is part of the Cangjie project, licensed under Apache-2.0
* with Runtime Library Exception.
*
* See https://cangjie-lang.cn/pages/LICENSE for license information.
*/
// The Cangjie API is in Beta. For details on its capabilities and limitations, please refer to the README file.
package std.ast
public abstract class Visitor {
private var breakTraverseFlag = false
protected func needBreakTraverse(): Bool {
if (breakTraverseFlag) {
breakTraverseFlag = false
return true
}
return false
}
public func breakTraverse(): Unit {
breakTraverseFlag = true
}
protected open func visit(_: Node): Unit {}
protected open func visit(_: Expr): Unit {}
protected open func visit(_: IsExpr): Unit {}
protected open func visit(_: AsExpr): Unit {}
protected open func visit(_: LitConstExpr): Unit {}
protected open func visit(_: UnaryExpr): Unit {}
protected open func visit(_: BinaryExpr): Unit {}
protected open func visit(_: ParenExpr): Unit {}
protected open func visit(_: CallExpr): Unit {}
protected open func visit(_: RefExpr): Unit {}
protected open func visit(_: ReturnExpr): Unit {}
protected open func visit(_: AssignExpr): Unit {}
protected open func visit(_: MemberAccess): Unit {}
protected open func visit(_: IfExpr): Unit {}
protected open func visit(_: LetPatternExpr): Unit {}
protected open func visit(_: MatchExpr): Unit {}
protected open func visit(_: WhileExpr): Unit {}
protected open func visit(_: LambdaExpr): Unit {}
protected open func visit(_: SpawnExpr): Unit {}
protected open func visit(_: SynchronizedExpr): Unit {}
protected open func visit(_: TrailingClosureExpr): Unit {}
protected open func visit(_: TypeConvExpr): Unit {}
protected open func visit(_: ForInExpr): Unit {}
protected open func visit(_: PrimitiveTypeExpr): Unit {}
protected open func visit(_: ArrayLiteral): Unit {}
protected open func visit(_: TupleLiteral): Unit {}
protected open func visit(_: SubscriptExpr): Unit {}
protected open func visit(_: RangeExpr): Unit {}
protected open func visit(_: Block): Unit {}
protected open func visit(_: DoWhileExpr): Unit {}
protected open func visit(_: JumpExpr): Unit {}
protected open func visit(_: IncOrDecExpr): Unit {}
protected open func visit(_: TryExpr): Unit {}
protected open func visit(_: ThrowExpr): Unit {}
protected open func visit(_: OptionalExpr): Unit {}
protected open func visit(_: QuoteExpr): Unit {}
protected open func visit(_: MacroExpandExpr): Unit {}
protected open func visit(_: WildcardExpr): Unit {}
protected open func visit(_: VArrayExpr): Unit {}
protected open func visit(_: Decl): Unit {}
protected open func visit(_: ClassDecl): Unit {}
protected open func visit(_: FuncDecl): Unit {}
protected open func visit(_: MainDecl): Unit {}
protected open func visit(_: MacroDecl): Unit {}
protected open func visit(_: StructDecl): Unit {}
protected open func visit(_: InterfaceDecl): Unit {}
protected open func visit(_: PropDecl): Unit {}
protected open func visit(_: VarDecl): Unit {}
protected open func visit(_: PrimaryCtorDecl): Unit {}
protected open func visit(_: EnumDecl): Unit {}
protected open func visit(_: FuncParam): Unit {}
protected open func visit(_: TypeAliasDecl): Unit {}
protected open func visit(_: ExtendDecl): Unit {}
protected open func visit(_: MacroExpandDecl): Unit {}
protected open func visit(_: TypeNode): Unit {}
protected open func visit(_: RefType): Unit {}
protected open func visit(_: PrimitiveType): Unit {}
protected open func visit(_: FuncType): Unit {}
protected open func visit(_: ThisType): Unit {}
protected open func visit(_: ParenType): Unit {}
protected open func visit(_: QualifiedType): Unit {}
protected open func visit(_: PrefixType): Unit {}
protected open func visit(_: TupleType): Unit {}
protected open func visit(_: VArrayType): Unit {}
protected open func visit(_: Pattern): Unit {}
protected open func visit(_: ConstPattern): Unit {}
protected open func visit(_: WildcardPattern): Unit {}
protected open func visit(_: VarPattern): Unit {}
protected open func visit(_: VarOrEnumPattern): Unit {}
protected open func visit(_: ExceptTypePattern): Unit {}
protected open func visit(_: TypePattern): Unit {}
protected open func visit(_: EnumPattern): Unit {}
protected open func visit(_: TuplePattern): Unit {}
protected open func visit(_: GenericParam): Unit {}
protected open func visit(_: GenericConstraint): Unit {}
protected open func visit(_: MatchCase): Unit {}
protected open func visit(_: Program): Unit {}
protected open func visit(_: PackageHeader): Unit {}
protected open func visit(_: ImportList): Unit {}
protected open func visit(_: ImportContent): Unit {}
protected open func visit(_: Constructor): Unit {}
protected open func visit(_: Argument): Unit {}
protected open func visit(_: Annotation): Unit {}
protected open func visit(_: Modifier): Unit {}
protected open func visit(_: Body): Unit {}
protected open func visit(_: PerformExpr): Unit {}
protected open func visit(_: ResumeExpr): Unit {}
protected open func visit(_: CommandTypePattern): Unit {}
protected open func visit(_: FeatureId): Unit {}
protected open func visit(_: FeaturesDirective): Unit {}
protected open func visit(_: FeaturesSet): Unit {}
protected open func visit(_: QuoteToken): Unit {}
protected open func visit(_: MacroExpandParam): Unit {}
}