UNPKG

mathjslab

Version:

MathJSLab - An interpreter with language syntax like MATLAB®/Octave, ISBN 978-65-00-82338-7.

90 lines (89 loc) 3.86 kB
import type { BuiltInFunctionInputSignature, NodeBuiltInFunction, NodeInput } from './AST'; /** * Utilities for the declarative built-in function signature table. * * Signatures describe valid input/output arities and parameter validators in a * form that can be shared by built-ins instead of hand-written argument checks. */ declare class FunctionSignature { /** * Normalize a built-in's input signature declaration to an array. * * @param node Built-in function node. * @returns Input overloads, or an empty array when the built-in is unchecked. */ static inputSignatures(node: NodeBuiltInFunction): BuiltInFunctionInputSignature[]; /** * Normalize a built-in's output signature declaration to an array. * * @param node Built-in function node. * @returns Output overloads, or an empty array when no output signature is declared. */ static outputSignatures(node: NodeBuiltInFunction): BuiltInFunctionInputSignature[]; /** * Minimum accepted argument count for one signature. * * @param signature Declarative built-in signature. * @returns Minimum accepted input/output count. */ static arityMinimum(signature: BuiltInFunctionInputSignature): number; /** * Maximum accepted argument count for one signature. * * @param signature Declarative built-in signature. * @returns Maximum accepted input/output count, or `Infinity` for variadic signatures. */ static arityMaximum(signature: BuiltInFunctionInputSignature): number; /** * Return the 1-based variadic position, when a signature is variadic. * * @param signature Declarative built-in signature. * @param preferParameterPosition Prefer explicit parameter metadata over legacy negative arity. * @returns One-based variadic parameter position, if any. */ static variadicPosition(signature: BuiltInFunctionInputSignature, preferParameterPosition?: boolean): number | undefined; /** * Derive the `nargin`/`nargout` display arity for one or more overloads. * * @param signatures Built-in overload declarations. * @returns MATLAB-like arity value, including negative variadic encodings. */ static declaredArity(signatures: BuiltInFunctionInputSignature[]): number | undefined; /** * Check whether a count satisfies one signature's arity interval. * * @param signature Declarative built-in signature. * @param argCount Count to test. * @returns `true` when the count is accepted by the signature. */ static arityMatches(signature: BuiltInFunctionInputSignature, argCount: number): boolean; /** * Return input overloads whose arity matches the supplied arguments. * * @param node Built-in function node. * @param argCount Input count to match. * @returns Matching input overloads. */ static matchingInputSignatures(node: NodeBuiltInFunction, argCount: number): BuiltInFunctionInputSignature[]; /** * Check whether a built-in accepts the supplied number of inputs. * * @param node Built-in function node. * @param argCount Input count to test. * @returns `true` when the built-in has no signature or an arity match exists. */ static inputArityIsValid(node: NodeBuiltInFunction, argCount: number): boolean; /** * Check whether at least one matching overload accepts the argument values. * * @param node Built-in function node. * @param args Evaluated input values. * @returns `true` when parameter validators accept the values. */ static inputParametersAreValid(node: NodeBuiltInFunction, args: NodeInput[]): boolean; } export { FunctionSignature }; declare const _default: { FunctionSignature: typeof FunctionSignature; }; export default _default;