using CanonSharp.Benchmark.Canon.Core.Abstractions;
using CanonSharp.Benchmark.Canon.Core.Enums;
using CanonSharp.Benchmark.Canon.Core.LexicalParser;
namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes;
public class ProgramHead : NonTerminatedSyntaxNode
{
    public override NonTerminatorType Type => NonTerminatorType.ProgramHead;
    /// 
    /// 程序名称
    /// 
    public IdentifierSemanticToken ProgramName
        => (IdentifierSemanticToken)Children[1].Convert().Token;
    public override void PreVisit(SyntaxNodeVisitor visitor)
    {
        visitor.PreVisit(this);
    }
    public override void PostVisit(SyntaxNodeVisitor visitor)
    {
        visitor.PostVisit(this);
    }
    public static ProgramHead Create(List children)
    {
        return new ProgramHead { Children = children };
    }
}