using Canon.Core.Abstractions; using Canon.Core.Enums; using Canon.Core.LexicalParser; namespace Canon.Core.SyntaxNodes; public class Variable : NonTerminatedSyntaxNode { public override NonTerminatorType Type => NonTerminatorType.Variable; /// /// 变量的名称 /// public IdentifierSemanticToken Identifier => (IdentifierSemanticToken)Children[0].Convert().Token; /// /// 声明数组访问的部分 /// public IdentifierVarPart VarPart => Children[1].Convert(); public override void PreVisit(SyntaxNodeVisitor visitor) { visitor.PreVisit(this); } public override void PostVisit(SyntaxNodeVisitor visitor) { visitor.PostVisit(this); } public static Variable Create(List children) { return new Variable { Children = children }; } }