math-expression-compiler 0.0.0-stage → 4.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,405 @@
1
+ import { Result } from "neverthrow";
2
+ export type MathExpressionResult = null | number;
3
+ export type MathExpressionEvaluator = (values: readonly number[], locals: MathExpressionResult[]) => MathExpressionResult;
4
+ export interface MathExpressionCompiled {
5
+ evaluate: MathExpressionEvaluator;
6
+ isConstant: boolean;
7
+ }
8
+ export declare enum MathExpressionLogicalOperator {
9
+ And = "and",
10
+ Nullish = "nullish",
11
+ Or = "or"
12
+ }
13
+ export declare enum MathExpressionNodeType {
14
+ Assignment = "assignment",
15
+ Binary = "binary",
16
+ Call = "call",
17
+ Comparison = "comparison",
18
+ Conditional = "conditional",
19
+ Group = "group",
20
+ List = "list",
21
+ Logical = "logical",
22
+ Name = "name",
23
+ Number = "number",
24
+ Percentage = "percentage",
25
+ Unary = "unary"
26
+ }
27
+ export type MathExpressionNode = {
28
+ arguments: MathExpressionNode[];
29
+ name: string;
30
+ type: MathExpressionNodeType.Call;
31
+ } | {
32
+ condition: MathExpressionNode;
33
+ type: MathExpressionNodeType.Conditional;
34
+ whenFalse: MathExpressionNode;
35
+ whenTrue: MathExpressionNode;
36
+ } | {
37
+ elements: MathExpressionNode[];
38
+ type: MathExpressionNodeType.List;
39
+ } | {
40
+ left: MathExpressionNode;
41
+ name: string;
42
+ right: MathExpressionNode;
43
+ type: MathExpressionNodeType.Binary;
44
+ } | {
45
+ left: MathExpressionNode;
46
+ operator: MathExpressionLogicalOperator;
47
+ right: MathExpressionNode;
48
+ type: MathExpressionNodeType.Logical;
49
+ } | {
50
+ name: string;
51
+ operand: MathExpressionNode;
52
+ type: MathExpressionNodeType.Unary;
53
+ } | {
54
+ name: string;
55
+ type: MathExpressionNodeType.Assignment;
56
+ value: MathExpressionNode;
57
+ } | {
58
+ name: string;
59
+ type: MathExpressionNodeType.Name;
60
+ } | {
61
+ names: string[];
62
+ operands: MathExpressionNode[];
63
+ type: MathExpressionNodeType.Comparison;
64
+ } | {
65
+ operand: MathExpressionNode;
66
+ type: MathExpressionNodeType.Group;
67
+ } | {
68
+ operand: MathExpressionNode;
69
+ type: MathExpressionNodeType.Percentage;
70
+ } | {
71
+ type: MathExpressionNodeType.Number;
72
+ value: number;
73
+ };
74
+ export interface MathExpressionCompileContext {
75
+ assignedSlots: ReadonlyMap<string, number>;
76
+ compile: (node: MathExpressionNode) => MathExpressionCompiled;
77
+ variableIndices: ReadonlyMap<string, number>;
78
+ }
79
+ export type MathExpressionValue = number | number[];
80
+ export interface MathExpressionCompiledArgument {
81
+ evaluate: (values: readonly number[], locals: MathExpressionResult[]) => MathExpressionValue | null;
82
+ isConstant: boolean;
83
+ }
84
+ export interface MathExpressionOuterBinding {
85
+ constant?: number;
86
+ variableIndex?: number;
87
+ }
88
+ export type MathExpressionBinaryCompute = (left: number, right: number) => null | number;
89
+ export declare enum MathExpressionFunctionName {
90
+ CTranspose = "ctranspose",
91
+ Factorial = "factorial",
92
+ UnaryMinus = "unaryMinus",
93
+ UnaryPlus = "unaryPlus"
94
+ }
95
+ export type MathExpressionNumberCompute = (values: readonly number[]) => null | number;
96
+ export declare enum MathExpressionParameterType {
97
+ Any = "any",
98
+ List = "list",
99
+ Number = "number"
100
+ }
101
+ export type MathExpressionUnaryCompute = (value: number) => null | number;
102
+ export interface MathExpressionSignature {
103
+ compute: (values: readonly MathExpressionValue[]) => null | number;
104
+ computeBinary?: MathExpressionBinaryCompute;
105
+ computeUnary?: MathExpressionUnaryCompute;
106
+ maxArity: number;
107
+ minArity: number;
108
+ parameters: MathExpressionParameterType[];
109
+ }
110
+ export type MathExpressionScalarCompute = Pick<MathExpressionSignature, "computeBinary" | "computeUnary">;
111
+ export interface MathExpressionBinaryFunctionOperator {
112
+ name: string;
113
+ power: number;
114
+ type: MathExpressionNodeType.Binary;
115
+ }
116
+ export type MathExpressionBinaryOperator = MathExpressionBinaryFunctionOperator | {
117
+ name: string;
118
+ power: number;
119
+ type: MathExpressionNodeType.Comparison;
120
+ } | {
121
+ operator: MathExpressionLogicalOperator;
122
+ power: number;
123
+ type: MathExpressionNodeType.Logical;
124
+ };
125
+ export declare enum MathExpressionGrammarRule {
126
+ Assignment = "Assignment",
127
+ Binary = "Binary",
128
+ Conditional = "Conditional",
129
+ DivisionBeforeProduct = "DivisionBeforeProduct",
130
+ ImplicitProduct = "ImplicitProduct",
131
+ LeftHand = "LeftHand",
132
+ Nullish = "Nullish",
133
+ Percentage = "Percentage",
134
+ Power = "Power",
135
+ Symbol = "Symbol",
136
+ Unary = "Unary"
137
+ }
138
+ export declare enum MathExpressionTokenType {
139
+ Delimiter = "delimiter",
140
+ Null = "null",
141
+ Number = "number",
142
+ Symbol = "symbol",
143
+ Unknown = "unknown"
144
+ }
145
+ export declare class MathExpressionError extends Error {
146
+ constructor(message: string);
147
+ }
148
+ export interface MathExpressionParserState {
149
+ depth: number;
150
+ error: MathExpressionError | null;
151
+ index: number;
152
+ nestingLevel: number;
153
+ source: string;
154
+ token: string;
155
+ tokenType: MathExpressionTokenType;
156
+ }
157
+ export type MathExpressionParse = (state: MathExpressionParserState, rule: MathExpressionGrammarRule) => MathExpressionNode;
158
+ export type MathExpressionRuleParser = (state: MathExpressionParserState, parse: MathExpressionParse) => MathExpressionNode;
159
+ export declare const MathExpressionBitwiseAbsorptionMap: Readonly<Record<string, {
160
+ absorbs: number;
161
+ result: number;
162
+ }>>;
163
+ export declare const MathExpressionNodeCompileMap: { [T in MathExpressionNodeType]: (node: Extract<MathExpressionNode, {
164
+ type: T;
165
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled; };
166
+ export declare const checkIsPercentageExpression: (node: MathExpressionNode) => boolean;
167
+ export declare const collectMathExpressionAssignedNames: (node: MathExpressionNode, names: Set<string>) => void;
168
+ export declare const compileArgument: (node: MathExpressionNode, context: MathExpressionCompileContext) => MathExpressionCompiledArgument;
169
+ export declare const compileList: (elements: MathExpressionNode[], context: MathExpressionCompileContext) => MathExpressionCompiledArgument;
170
+ export declare const compileMathExpression: (node: MathExpressionNode, variableNames: readonly string[]) => ((values: readonly number[]) => number);
171
+ export declare const compileMathExpressionNode: (node: MathExpressionNode, context: MathExpressionCompileContext) => MathExpressionCompiled;
172
+ export declare const NO_VALUES: readonly number[];
173
+ export declare const NO_LOCALS: MathExpressionResult[];
174
+ export declare const ADDITIVE_NAMES: readonly string[];
175
+ export declare const getMathExpressionConstant: (name: string) => number | undefined;
176
+ export declare const getMathExpressionOuterValue: (outer: MathExpressionOuterBinding, values: readonly number[]) => MathExpressionResult;
177
+ export declare const getMathExpressionScalarCompute: <Key extends keyof MathExpressionScalarCompute>(name: string, key: Key) => NonNullable<MathExpressionScalarCompute[Key]>;
178
+ export declare const compileAssignment: (node: Extract<MathExpressionNode, {
179
+ type: MathExpressionNodeType.Assignment;
180
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
181
+ export declare const compileBinary: (node: Extract<MathExpressionNode, {
182
+ type: MathExpressionNodeType.Binary;
183
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
184
+ export declare const compileCall: (node: Extract<MathExpressionNode, {
185
+ type: MathExpressionNodeType.Call;
186
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
187
+ export declare const compileComparison: (node: Extract<MathExpressionNode, {
188
+ type: MathExpressionNodeType.Comparison;
189
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
190
+ export declare const compileConditional: (node: Extract<MathExpressionNode, {
191
+ type: MathExpressionNodeType.Conditional;
192
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
193
+ export declare const compileGroup: (node: Extract<MathExpressionNode, {
194
+ type: MathExpressionNodeType.Group;
195
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
196
+ export declare const compileListNode: () => MathExpressionCompiled;
197
+ export declare const compileLogical: (node: Extract<MathExpressionNode, {
198
+ type: MathExpressionNodeType.Logical;
199
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
200
+ export declare const compileName: (node: Extract<MathExpressionNode, {
201
+ type: MathExpressionNodeType.Name;
202
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
203
+ export declare const compileNumber: (node: Extract<MathExpressionNode, {
204
+ type: MathExpressionNodeType.Number;
205
+ }>) => MathExpressionCompiled;
206
+ export declare const compilePercentage: (node: Extract<MathExpressionNode, {
207
+ type: MathExpressionNodeType.Percentage;
208
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
209
+ export declare const compileUnary: (node: Extract<MathExpressionNode, {
210
+ type: MathExpressionNodeType.Unary;
211
+ }>, context: MathExpressionCompileContext) => MathExpressionCompiled;
212
+ export declare const MathExpressionFunctionMap: Record<string, MathExpressionSignature[]>;
213
+ export declare const checkIsLarger: (left: number, right: number) => boolean;
214
+ export declare const checkIsMillerRabinPassing: (candidate: bigint, base: bigint, oddPart: bigint, twos: number) => boolean;
215
+ export declare const checkIsNearlyEqual: (left: number, right: number) => boolean;
216
+ export declare const checkIsPrime: (value: number) => boolean;
217
+ export declare const checkIsSmaller: (left: number, right: number) => boolean;
218
+ export declare const compareNumbers: (left: number, right: number) => number;
219
+ export declare const computeBellNumber: (index: number) => null | number;
220
+ export declare const computeBernoulliNumber: (index: number) => number;
221
+ export declare const computeBitwiseAnd: (left: number, right: number) => number;
222
+ export declare const computeBitwiseOr: (left: number, right: number) => number;
223
+ export declare const computeCatalan: (index: number) => null | number;
224
+ export declare const computeCombinations: (available: number, chosen: number) => number;
225
+ export declare const computeComparison: (left: number, right: number) => number;
226
+ export declare const computeCompositions: (total: number, parts: number) => null | number;
227
+ export declare const computeCorrelation: (left: readonly number[], right: readonly number[]) => null | number;
228
+ export declare const computeDeterminant: (values: readonly number[]) => null | number;
229
+ export declare const computeDistance: (point: number[], other: number[]) => null | number;
230
+ export declare const computeDotProduct: (left: readonly number[], right: readonly number[]) => null | number;
231
+ export declare const computeErf: (value: number) => number;
232
+ export declare const computeErfInverse: (value: number) => number;
233
+ export declare const computeExtreme: (values: readonly number[], initial: number, checkIsPreferred: (value: number, extreme: number) => boolean) => number;
234
+ export declare const computeFactorial: (value: number) => null | number;
235
+ export declare const computeGamma: (value: number) => number;
236
+ export declare const computeGreatestCommonDivisor: (left: number, right: number) => number;
237
+ export declare const computeHypotenuse: (values: readonly number[]) => number;
238
+ export declare const computeInitialGuess: (value: number) => number;
239
+ export declare const computeIntegerGreatestCommonDivisor: (values: readonly number[]) => null | number;
240
+ export declare const computeInverseCoth: (value: number) => number;
241
+ export declare const computeKullbackLeibler: (distribution: readonly number[], reference: readonly number[]) => null | number;
242
+ export declare const computeLeastCommonMultiple: (left: number, right: number) => null | number;
243
+ export declare const computeListComparison: (left: number[], right: number[]) => number;
244
+ export declare const computeLogGamma: (value: number) => number;
245
+ export declare const computeLogGammaOfPositive: (value: number) => {
246
+ logGamma: number;
247
+ product: number;
248
+ };
249
+ export declare const computeLogarithm: (value: number, base?: number) => number;
250
+ export declare const computeMean: (values: readonly number[]) => number;
251
+ export declare const computeMedian: (values: readonly number[]) => number;
252
+ export declare const computeMedianAbsoluteDeviation: (values: readonly number[]) => number;
253
+ export declare const computeModularInverse: (value: number, modulus: number) => null | number;
254
+ export declare const computeModularPower: (base: bigint, exponent: bigint, modulus: bigint) => bigint;
255
+ export declare const computeModulo: (dividend: number, divisor: number) => number;
256
+ export declare const computeMultinomial: (parts: readonly number[]) => null | number;
257
+ export declare const computeNorm: (values: readonly number[]) => null | number;
258
+ export declare const computeNthRoot: (value: number, root: number) => null | number;
259
+ export declare const computePartitionSelect: (values: number[], index: number) => null | number;
260
+ export declare const computePermutations: (available: number, chosen: number) => null | number;
261
+ export declare const computePointToLine2D: (point: number[], line: number[]) => number;
262
+ export declare const computePointToLine3D: (point: number[], line: number[]) => number;
263
+ export declare const computePolynomial: (leading: number, coefficients: readonly number[], variable: number) => number;
264
+ export declare const computeProduct: (values: readonly MathExpressionValue[]) => null | number;
265
+ export declare const computeProductOfRange: (first: number, last: number) => number;
266
+ export declare const computeQuantile: (values: number[], probability: number, isSorted: boolean) => null | number;
267
+ export declare const computeStirlingColumn: (count: number, parts: number) => number;
268
+ export declare const computeStirlingDiagonal: (count: number, index: number) => number;
269
+ export declare const computeStirlingLogGamma: (value: number) => number;
270
+ export declare const computeStirlingSecondKind: (count: number, parts: number) => null | number;
271
+ export declare const computeSum: (values: readonly number[]) => number;
272
+ export declare const computeSummedZeta: (value: number) => number;
273
+ export declare const computeTruthyCount: (values: readonly number[]) => number;
274
+ export declare const computeVariance: (values: readonly number[]) => number;
275
+ export declare const computeVectorNorm: (values: readonly number[], power: number) => null | number;
276
+ export declare const computeZeta: (value: number) => number;
277
+ export declare const MATH_EXPRESSION_RELATIVE_TOLERANCE = 1e-12;
278
+ export declare const MATH_EXPRESSION_ABSOLUTE_TOLERANCE = 1e-15;
279
+ export declare const SQRT_PI: number;
280
+ export declare const BERNOULLI_CLOSED_FORM_INDEX = 54;
281
+ export declare const MAXIMUM_DIGITS = 15;
282
+ export declare const MAXIMUM_STIRLING_WORK = 4e6;
283
+ export declare const MILLER_RABIN_BASES: readonly bigint[];
284
+ export declare const REFINEMENT_STEPS = 4;
285
+ export declare const LOW_TAIL_COEFFICIENTS: readonly number[];
286
+ export declare const HIGH_TAIL_COEFFICIENTS: readonly number[];
287
+ export declare const OVERFLOW_ARGUMENT = 171.35;
288
+ export declare const LAST_FACTORIAL_ARGUMENT = 171;
289
+ export declare const STIRLING_THRESHOLD = 15;
290
+ export declare const STIRLING_TERMS: readonly number[];
291
+ export declare const EULER_MACLAURIN_COEFFICIENTS: readonly number[];
292
+ export declare const SUMMATION_LIMIT = 10;
293
+ export declare const multiplyPair: (left: MathExpressionValue, right: MathExpressionValue) => MathExpressionValue | null;
294
+ export declare const roundToDigits: (rounder: (value: number) => number, value: number, digits: number) => null | number;
295
+ export declare const scaleList: (list: number[], scalar: number) => number[];
296
+ export declare const shiftDecimalPlaces: (value: number, places: number) => number;
297
+ export declare const createBinarySignatures: (compute: MathExpressionBinaryCompute) => MathExpressionSignature[];
298
+ export declare const createBitwiseFold: (absorbing: number, compute: (left: number, right: number) => number) => MathExpressionNumberCompute;
299
+ export declare const createBitwisePair: (absorbing: number, compute: (left: number, right: number) => number) => MathExpressionBinaryCompute;
300
+ export declare const createDigitSignatures: (rounder: (value: number) => number) => MathExpressionSignature[];
301
+ export declare const createExtremeSignatures: (checkIsPreferred: (value: number, extreme: number) => boolean) => MathExpressionSignature[];
302
+ export declare const createIdentitySignatures: () => MathExpressionSignature[];
303
+ export declare const createIntegerBinarySignatures: (compute: (left: number, right: number) => null | number) => MathExpressionSignature[];
304
+ export declare const createIntegerUnarySignatures: (compute: (value: number) => null | number) => MathExpressionSignature[];
305
+ export declare const createListFirstCompute: (compute: (list: number[], numbers: number[]) => null | number) => MathExpressionSignature["compute"];
306
+ export declare const createListPairCompute: (compute: (left: number[], right: number[]) => null | number) => MathExpressionSignature["compute"];
307
+ export declare const createListPairSignature: (compute: (left: number[], right: number[]) => null | number) => MathExpressionSignature;
308
+ export declare const createListSignature: (compute: MathExpressionNumberCompute) => MathExpressionSignature;
309
+ export declare const createNonEmptyCompute: (compute: (values: readonly number[]) => number) => MathExpressionNumberCompute;
310
+ export declare const createNumberSignature: (minArity: number, maxArity: number, compute: MathExpressionNumberCompute, scalarCompute?: MathExpressionScalarCompute) => MathExpressionSignature;
311
+ export declare const createNumericCompute: (compute: MathExpressionNumberCompute) => MathExpressionSignature["compute"];
312
+ export declare const createOrderedListSignatures: (compute: (left: number[], right: number[]) => null | number) => MathExpressionSignature[];
313
+ export declare const createRangedSignatures: (minArity: number, maxArity: number, compute: MathExpressionNumberCompute, scalarCompute?: MathExpressionScalarCompute) => MathExpressionSignature[];
314
+ export declare const createSignature: (parameters: MathExpressionParameterType[], minArity: number, maxArity: number, compute: MathExpressionSignature["compute"], scalarCompute?: MathExpressionScalarCompute) => MathExpressionSignature;
315
+ export declare const createSingletonListSignature: (compute: MathExpressionUnaryCompute) => MathExpressionSignature;
316
+ export declare const createSpreadSignatures: (minArity: number, compute: MathExpressionNumberCompute) => MathExpressionSignature[];
317
+ export declare const createUnarySignatures: (compute: MathExpressionUnaryCompute) => MathExpressionSignature[];
318
+ export declare const createVariadicSignatures: (minArity: number, compute: MathExpressionNumberCompute, computeBinary?: MathExpressionBinaryCompute) => MathExpressionSignature[];
319
+ export declare const getMathExpressionNames: (node: MathExpressionNode) => string[];
320
+ export declare const walkNode: (node: MathExpressionNode, bound: Set<string>, free: Set<string>) => void;
321
+ export declare const MathExpressionBinaryOperatorMap: {
322
+ readonly "*": MathExpressionBinaryFunctionOperator;
323
+ readonly "/": MathExpressionBinaryFunctionOperator;
324
+ readonly [token: string]: MathExpressionBinaryOperator;
325
+ };
326
+ export declare const MathExpressionOperatorMap: {
327
+ [MathExpressionGrammarRule.Nullish]: Readonly<Record<string, MathExpressionLogicalOperator>>;
328
+ [MathExpressionGrammarRule.Power]: Readonly<Record<string, string>>;
329
+ [MathExpressionGrammarRule.Unary]: Readonly<Record<string, string>>;
330
+ };
331
+ export declare const MathExpressionRuleParserMap: Record<MathExpressionGrammarRule, MathExpressionRuleParser>;
332
+ export declare const checkCanMathExpressionNest: (state: MathExpressionParserState) => boolean;
333
+ export declare const checkIsNameToken: (state: MathExpressionParserState) => boolean;
334
+ export declare const checkIsOperatorOperand: (node: MathExpressionNode) => boolean;
335
+ export declare const checkIsSignedNumber: (node: MathExpressionNode) => boolean;
336
+ export declare const checkIsToken: (state: MathExpressionParserState, token: string) => boolean;
337
+ export declare const checkIsUnaryStart: (state: MathExpressionParserState) => boolean;
338
+ export declare const computeNumberLiteral: (token: string) => null | number;
339
+ export declare const MAX_MATH_EXPRESSION_DEPTH = 64;
340
+ export declare const PLACEHOLDER: MathExpressionNode;
341
+ export declare const createBinaryNode: (left: MathExpressionNode, name: string, right: MathExpressionNode) => MathExpressionNode;
342
+ export declare const createBinaryOperation: (left: MathExpressionNode, operator: MathExpressionBinaryOperator, right: MathExpressionNode) => MathExpressionNode;
343
+ export declare const createLogicalNode: (left: MathExpressionNode, operator: MathExpressionLogicalOperator, right: MathExpressionNode) => MathExpressionNode;
344
+ export declare const failMathExpression: (state: MathExpressionParserState, message: string) => void;
345
+ export declare const failMathExpressionAt: (state: MathExpressionParserState, message: string, column: number) => void;
346
+ export declare const getArgumentCountText: (count: number) => string;
347
+ export declare const getMathExpressionArityMessage: (name: string, minArity: number, maxArity: number) => string;
348
+ export declare const getMathExpressionColumn: (state: MathExpressionParserState) => number;
349
+ export declare const getMathExpressionSignatureError: (name: string, signatures: readonly MathExpressionSignature[], parameterTypes: MathExpressionParameterType[]) => string;
350
+ export declare const getMathExpressionToken: (state: MathExpressionParserState) => void;
351
+ export declare const parseArgument: (state: MathExpressionParserState, parse: MathExpressionParse) => MathExpressionNode;
352
+ export declare const parseBinaryOperators: (state: MathExpressionParserState, parse: MathExpressionParse, minimumPower: number) => MathExpressionNode;
353
+ export declare const parseCall: (state: MathExpressionParserState, name: string, column: number, parse: MathExpressionParse) => MathExpressionNode;
354
+ export declare const parseList: (state: MathExpressionParserState, parse: MathExpressionParse) => MathExpressionNode;
355
+ export declare const parseMathExpression: (formula: string) => Result<MathExpressionNode, MathExpressionError>;
356
+ export declare const parseMathExpressionRule: (state: MathExpressionParserState, rule: MathExpressionGrammarRule) => MathExpressionNode;
357
+ export declare const parseSequence: (state: MathExpressionParserState, closing: string, parseItem: (state: MathExpressionParserState) => MathExpressionNode) => MathExpressionNode[];
358
+ export declare const parseAssignment: MathExpressionRuleParser;
359
+ export declare const parseBinary: MathExpressionRuleParser;
360
+ export declare const parseConditional: MathExpressionRuleParser;
361
+ export declare const parseDivisionBeforeProduct: MathExpressionRuleParser;
362
+ export declare const parseImplicitProduct: MathExpressionRuleParser;
363
+ export declare const parseLeftHand: MathExpressionRuleParser;
364
+ export declare const parseNullish: MathExpressionRuleParser;
365
+ export declare const parsePercentage: MathExpressionRuleParser;
366
+ export declare const parsePower: MathExpressionRuleParser;
367
+ export declare const parseSymbol: MathExpressionRuleParser;
368
+ export declare const parseUnary: MathExpressionRuleParser;
369
+ export declare const MathExpressionRadixMap: Readonly<Record<string, {
370
+ digit: RegExp;
371
+ radix: number;
372
+ }>>;
373
+ export declare const checkIsDecimalMark: (character: string, nextCharacter: string) => boolean;
374
+ export declare const checkIsDigitCharacter: (character: string) => boolean;
375
+ export declare const checkIsWordCharacter: (character: string) => boolean;
376
+ export declare const checkIsWordStartCharacter: (character: string) => boolean;
377
+ export declare const DELIMITERS_OF_THREE: ReadonlySet<string>;
378
+ export declare const DELIMITERS_OF_TWO: ReadonlySet<string>;
379
+ export declare const DELIMITERS_OF_ONE: ReadonlySet<string>;
380
+ export declare const FIRST_CHARACTERS_OF_THREE: ReadonlySet<string>;
381
+ export declare const FIRST_CHARACTERS_OF_TWO: ReadonlySet<string>;
382
+ export declare const NAMED_DELIMITERS: ReadonlySet<string>;
383
+ export declare const DECIMAL_MARK_OPERATOR_FOLLOWERS: ReadonlySet<string>;
384
+ export declare const WORD_START_REGEX: RegExp;
385
+ export declare const WORD_CHARACTER_REGEX: RegExp;
386
+ export declare const failExponent: (state: MathExpressionParserState, text: string) => void;
387
+ export declare const getMathExpressionCharacter: (state: MathExpressionParserState, offset: number) => string;
388
+ export declare const readMathExpressionDelimiter: (state: MathExpressionParserState) => number;
389
+ export declare const readMathExpressionNumber: (state: MathExpressionParserState) => void;
390
+ export declare const readMathExpressionWord: (state: MathExpressionParserState) => void;
391
+ export declare const readRadixNumber: (state: MathExpressionParserState, prefix: string, baseDigits: RegExp) => void;
392
+ export declare const skipMathExpressionSpaces: (state: MathExpressionParserState) => void;
393
+ export declare const takeExponent: (state: MathExpressionParserState, text: string) => string;
394
+ export declare const takeMathExpressionMatching: (state: MathExpressionParserState, checkCharacter: (character: string) => boolean) => string;
395
+ export declare const MathExpressionConstantMap: Record<string, number>;
396
+ export declare const checkIsMatching: (signature: MathExpressionSignature, parameterTypes: MathExpressionParameterType[]) => boolean;
397
+ export declare const checkIsMatchingKind: (parameterType: MathExpressionParameterType | undefined, argumentType: MathExpressionParameterType) => boolean;
398
+ export declare const checkIsTruthy: (value: number) => boolean;
399
+ export declare const getMathExpressionChildren: (node: MathExpressionNode) => MathExpressionNode[];
400
+ export declare const getMathExpressionParameterType: (node: MathExpressionNode) => MathExpressionParameterType;
401
+ export declare const getMathExpressionSignatures: (name: string) => MathExpressionSignature[] | undefined;
402
+ export declare const getOwnValue: <T>(record: Readonly<Record<string, T>>, key: string) => T | undefined;
403
+ export declare const getParameterType: (signature: MathExpressionSignature, index: number) => MathExpressionParameterType | undefined;
404
+ export declare const matchMathExpressionSignature: (signatures: readonly MathExpressionSignature[], parameterTypes: MathExpressionParameterType[]) => MathExpressionSignature | undefined;
405
+ export declare const toNumber: (flag: boolean) => number;