mathjslab
Version:
MathJSLab - An interpreter with language syntax like MATLAB®/Octave, ISBN 978-65-00-82338-7.
90 lines (89 loc) • 3.86 kB
TypeScript
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;