using CanonSharp.Pascal.Scanner; namespace CanonSharp.Pascal.SyntaxTree; public sealed class SubprogramHead : SyntaxNodeBase { public override SyntaxNodeType NodeType => SyntaxNodeType.SubprogramHead; public LexicalToken Identifier { get; } public List Parameters { get; } = []; public SyntaxNodeBase? TypeToken { get; } public SubprogramHead(LexicalToken identifier, IEnumerable parameters) { Identifier = identifier; Parameters.AddRange(parameters); TypeToken = null; } public SubprogramHead(LexicalToken identifier, IEnumerable parameters, SyntaxNodeBase typeToken) : this( identifier, parameters) { TypeToken = typeToken; } }