using Canon.Core.Enums; using Canon.Core.LexicalParser; namespace Canon.Core.SyntaxNodes; public class ProcedureCall : NonTerminatedSyntaxNode { public override NonTerminatorType Type => NonTerminatorType.ProcedureCall; public IdentifierSemanticToken ProcedureId => (IdentifierSemanticToken)Children[0].Convert().Token; public IEnumerable Arguments => GetArguments(); public static ProcedureCall Create(List children) { return new ProcedureCall { Children = children }; } private IEnumerable GetArguments() { if (Children.Count == 1) { yield break; } foreach (Expression expression in Children[2].Convert().Expressions) { yield return expression; } } }