@cortex-js/compute-engine 0.32.0 → 0.32.1

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.
Files changed (153) hide show
  1. package/dist/compute-engine.esm.js +42905 -0
  2. package/dist/compute-engine.min.esm.js +125 -0
  3. package/dist/compute-engine.min.umd.js +127 -0
  4. package/dist/compute-engine.umd.js +42930 -0
  5. package/dist/math-json.esm.js +130 -0
  6. package/dist/math-json.min.esm.js +130 -0
  7. package/dist/math-json.min.umd.js +4 -0
  8. package/dist/math-json.umd.js +155 -0
  9. package/dist/types/common/ansi-codes.d.ts +41 -0
  10. package/dist/types/common/configuration-change.d.ts +28 -0
  11. package/dist/types/common/fuzzy-string-match.d.ts +2 -0
  12. package/dist/types/common/grapheme-splitter.d.ts +15 -0
  13. package/dist/types/common/interruptible.d.ts +20 -0
  14. package/dist/types/common/one-of.d.ts +10 -0
  15. package/dist/types/common/signals.d.ts +96 -0
  16. package/dist/types/common/type/ast-nodes.d.ts +146 -0
  17. package/dist/types/common/type/boxed-type.d.ts +30 -0
  18. package/dist/types/common/type/lexer.d.ts +51 -0
  19. package/dist/types/common/type/parse.d.ts +211 -0
  20. package/dist/types/common/type/parser.d.ts +45 -0
  21. package/dist/types/common/type/primitive.d.ts +10 -0
  22. package/dist/types/common/type/serialize.d.ts +2 -0
  23. package/dist/types/common/type/subtype.d.ts +6 -0
  24. package/dist/types/common/type/type-builder.d.ts +32 -0
  25. package/dist/types/common/type/types.d.ts +300 -0
  26. package/dist/types/common/type/utils.d.ts +36 -0
  27. package/dist/types/common/utils.d.ts +23 -0
  28. package/dist/types/compute-engine/assume.d.ts +26 -0
  29. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +165 -0
  30. package/dist/types/compute-engine/boxed-expression/apply.d.ts +5 -0
  31. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +16 -0
  32. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +27 -0
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +38 -0
  34. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +11 -0
  35. package/dist/types/compute-engine/boxed-expression/box.d.ts +47 -0
  36. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +44 -0
  37. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +136 -0
  38. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +103 -0
  39. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +53 -0
  40. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +107 -0
  41. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +27 -0
  42. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +170 -0
  43. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +83 -0
  44. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +46 -0
  45. package/dist/types/compute-engine/boxed-expression/cache.d.ts +7 -0
  46. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +5 -0
  47. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +2 -0
  48. package/dist/types/compute-engine/boxed-expression/compare.d.ts +13 -0
  49. package/dist/types/compute-engine/boxed-expression/expand.d.ts +20 -0
  50. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +12 -0
  51. package/dist/types/compute-engine/boxed-expression/factor.d.ts +10 -0
  52. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +25 -0
  53. package/dist/types/compute-engine/boxed-expression/hold.d.ts +10 -0
  54. package/dist/types/compute-engine/boxed-expression/match.d.ts +41 -0
  55. package/dist/types/compute-engine/boxed-expression/negate.d.ts +11 -0
  56. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +34 -0
  57. package/dist/types/compute-engine/boxed-expression/order.d.ts +71 -0
  58. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +105 -0
  59. package/dist/types/compute-engine/boxed-expression/product.d.ts +66 -0
  60. package/dist/types/compute-engine/boxed-expression/rules.d.ts +129 -0
  61. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +3 -0
  62. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +46 -0
  63. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +6 -0
  64. package/dist/types/compute-engine/boxed-expression/solve.d.ts +20 -0
  65. package/dist/types/compute-engine/boxed-expression/terms.d.ts +10 -0
  66. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +9 -0
  67. package/dist/types/compute-engine/boxed-expression/utils.d.ts +64 -0
  68. package/dist/types/compute-engine/boxed-expression/validate.d.ts +58 -0
  69. package/dist/types/compute-engine/collection-utils.d.ts +35 -0
  70. package/dist/types/compute-engine/compilation/base-compiler.d.ts +31 -0
  71. package/dist/types/compute-engine/compilation/javascript-target.d.ts +68 -0
  72. package/dist/types/compute-engine/compilation/types.d.ts +83 -0
  73. package/dist/types/compute-engine/cost-function.d.ts +13 -0
  74. package/dist/types/compute-engine/function-utils.d.ts +120 -0
  75. package/dist/types/compute-engine/global-types.d.ts +2930 -0
  76. package/dist/types/compute-engine/index.d.ts +660 -0
  77. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +2 -0
  78. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +2 -0
  79. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +2 -0
  80. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +2 -0
  81. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +27 -0
  82. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +2 -0
  83. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +2 -0
  84. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +2 -0
  85. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +2 -0
  86. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +2 -0
  87. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +2 -0
  88. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +3 -0
  89. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +2 -0
  90. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +88 -0
  91. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +21 -0
  92. package/dist/types/compute-engine/latex-syntax/parse.d.ts +316 -0
  93. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +29 -0
  94. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +10 -0
  95. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +37 -0
  96. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +18 -0
  97. package/dist/types/compute-engine/latex-syntax/types.d.ts +896 -0
  98. package/dist/types/compute-engine/latex-syntax/utils.d.ts +5 -0
  99. package/dist/types/compute-engine/library/arithmetic.d.ts +4 -0
  100. package/dist/types/compute-engine/library/calculus.d.ts +2 -0
  101. package/dist/types/compute-engine/library/collections.d.ts +27 -0
  102. package/dist/types/compute-engine/library/combinatorics.d.ts +2 -0
  103. package/dist/types/compute-engine/library/complex.d.ts +2 -0
  104. package/dist/types/compute-engine/library/control-structures.d.ts +2 -0
  105. package/dist/types/compute-engine/library/core.d.ts +2 -0
  106. package/dist/types/compute-engine/library/invisible-operator.d.ts +4 -0
  107. package/dist/types/compute-engine/library/library.d.ts +17 -0
  108. package/dist/types/compute-engine/library/linear-algebra.d.ts +2 -0
  109. package/dist/types/compute-engine/library/logic-analysis.d.ts +64 -0
  110. package/dist/types/compute-engine/library/logic-utils.d.ts +58 -0
  111. package/dist/types/compute-engine/library/logic.d.ts +7 -0
  112. package/dist/types/compute-engine/library/number-theory.d.ts +2 -0
  113. package/dist/types/compute-engine/library/polynomials.d.ts +2 -0
  114. package/dist/types/compute-engine/library/random-expression.d.ts +2 -0
  115. package/dist/types/compute-engine/library/relational-operator.d.ts +2 -0
  116. package/dist/types/compute-engine/library/sets.d.ts +2 -0
  117. package/dist/types/compute-engine/library/statistics.d.ts +2 -0
  118. package/dist/types/compute-engine/library/trigonometry.d.ts +2 -0
  119. package/dist/types/compute-engine/library/utils.d.ts +77 -0
  120. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +57 -0
  121. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +75 -0
  122. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +56 -0
  123. package/dist/types/compute-engine/numeric-value/types.d.ts +116 -0
  124. package/dist/types/compute-engine/numerics/bigint.d.ts +2 -0
  125. package/dist/types/compute-engine/numerics/expression.d.ts +4 -0
  126. package/dist/types/compute-engine/numerics/interval.d.ts +12 -0
  127. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +4 -0
  128. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +18 -0
  129. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +9 -0
  130. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +3 -0
  131. package/dist/types/compute-engine/numerics/numeric.d.ts +60 -0
  132. package/dist/types/compute-engine/numerics/primes.d.ts +7 -0
  133. package/dist/types/compute-engine/numerics/rationals.d.ts +43 -0
  134. package/dist/types/compute-engine/numerics/richardson.d.ts +80 -0
  135. package/dist/types/compute-engine/numerics/special-functions.d.ts +28 -0
  136. package/dist/types/compute-engine/numerics/statistics.d.ts +24 -0
  137. package/dist/types/compute-engine/numerics/strings.d.ts +2 -0
  138. package/dist/types/compute-engine/numerics/types.d.ts +30 -0
  139. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +3 -0
  140. package/dist/types/compute-engine/symbolic/derivative.d.ts +18 -0
  141. package/dist/types/compute-engine/symbolic/distribute.d.ts +5 -0
  142. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +6 -0
  143. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +27 -0
  144. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +6 -0
  145. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +128 -0
  146. package/dist/types/compute-engine/tensor/tensors.d.ts +93 -0
  147. package/dist/types/compute-engine/types.d.ts +8 -0
  148. package/dist/types/compute-engine.d.ts +3 -0
  149. package/dist/types/math-json/symbols.d.ts +11 -0
  150. package/dist/types/math-json/types.d.ts +122 -0
  151. package/dist/types/math-json/utils.d.ts +87 -0
  152. package/dist/types/math-json.d.ts +3 -0
  153. package/package.json +1 -1
@@ -0,0 +1,146 @@
1
+ /* 0.32.1 */
2
+ kind: string;
3
+ position: number;
4
+ line: number;
5
+ column: number;
6
+ }
7
+ export interface NamedElementNode extends ASTNode {
8
+ kind: 'named_element';
9
+ name?: string;
10
+ type: TypeNode;
11
+ }
12
+ export interface ArgumentNode extends ASTNode {
13
+ kind: 'argument';
14
+ element: NamedElementNode;
15
+ modifier?: 'optional' | 'variadic_zero' | 'variadic_one';
16
+ }
17
+ export interface FunctionSignatureNode extends ASTNode {
18
+ kind: 'function_signature';
19
+ arguments: ArgumentNode[];
20
+ returnType: TypeNode;
21
+ }
22
+ export interface UnionTypeNode extends ASTNode {
23
+ kind: 'union';
24
+ types: TypeNode[];
25
+ }
26
+ export interface IntersectionTypeNode extends ASTNode {
27
+ kind: 'intersection';
28
+ types: TypeNode[];
29
+ }
30
+ export interface NegationTypeNode extends ASTNode {
31
+ kind: 'negation';
32
+ type: TypeNode;
33
+ }
34
+ export interface GroupTypeNode extends ASTNode {
35
+ kind: 'group';
36
+ type: TypeNode;
37
+ }
38
+ export interface ListTypeNode extends ASTNode {
39
+ kind: 'list';
40
+ elementType: TypeNode;
41
+ dimensions?: DimensionNode[];
42
+ }
43
+ export interface VectorTypeNode extends ASTNode {
44
+ kind: 'vector';
45
+ elementType: TypeNode;
46
+ size?: number;
47
+ }
48
+ export interface MatrixTypeNode extends ASTNode {
49
+ kind: 'matrix';
50
+ elementType: TypeNode;
51
+ dimensions?: DimensionNode[];
52
+ }
53
+ export interface TensorTypeNode extends ASTNode {
54
+ kind: 'tensor';
55
+ elementType: TypeNode;
56
+ }
57
+ export interface TupleTypeNode extends ASTNode {
58
+ kind: 'tuple';
59
+ elements: NamedElementNode[];
60
+ }
61
+ export interface RecordTypeNode extends ASTNode {
62
+ kind: 'record';
63
+ entries: RecordEntryNode[];
64
+ }
65
+ export interface RecordEntryNode extends ASTNode {
66
+ kind: 'record_entry';
67
+ key: string;
68
+ valueType: TypeNode;
69
+ }
70
+ export interface DictionaryTypeNode extends ASTNode {
71
+ kind: 'dictionary';
72
+ valueType: TypeNode;
73
+ }
74
+ export interface SetTypeNode extends ASTNode {
75
+ kind: 'set';
76
+ elementType: TypeNode;
77
+ }
78
+ export interface CollectionTypeNode extends ASTNode {
79
+ kind: 'collection';
80
+ elementType: TypeNode;
81
+ indexed?: boolean;
82
+ }
83
+ export interface ExpressionTypeNode extends ASTNode {
84
+ kind: 'expression';
85
+ operator: string;
86
+ }
87
+ export interface SymbolTypeNode extends ASTNode {
88
+ kind: 'symbol';
89
+ name: string;
90
+ }
91
+ export interface NumericTypeNode extends ASTNode {
92
+ kind: 'numeric';
93
+ baseType: string;
94
+ lowerBound?: ValueNode;
95
+ upperBound?: ValueNode;
96
+ }
97
+ export interface PrimitiveTypeNode extends ASTNode {
98
+ kind: 'primitive';
99
+ name: string;
100
+ }
101
+ export interface TypeReferenceNode extends ASTNode {
102
+ kind: 'type_reference';
103
+ name: string;
104
+ isForward?: boolean;
105
+ }
106
+ export interface ValueNode extends ASTNode {
107
+ kind: 'value';
108
+ value: any;
109
+ valueType: 'string' | 'number' | 'boolean' | 'infinity' | 'nan';
110
+ }
111
+ export interface DimensionNode extends ASTNode {
112
+ kind: 'dimension';
113
+ size: number | null;
114
+ }
115
+ export interface IdentifierNode extends ASTNode {
116
+ kind: 'identifier';
117
+ name: string;
118
+ }
119
+ export interface VerbatimStringNode extends ASTNode {
120
+ kind: 'verbatim_string';
121
+ value: string;
122
+ }
123
+ export type TypeNode = FunctionSignatureNode | UnionTypeNode | IntersectionTypeNode | NegationTypeNode | GroupTypeNode | ListTypeNode | VectorTypeNode | MatrixTypeNode | TensorTypeNode | TupleTypeNode | RecordTypeNode | DictionaryTypeNode | SetTypeNode | CollectionTypeNode | ExpressionTypeNode | SymbolTypeNode | NumericTypeNode | PrimitiveTypeNode | TypeReferenceNode | ValueNode;
124
+ export interface ASTVisitor<T> {
125
+ visitFunctionSignature(node: FunctionSignatureNode): T;
126
+ visitUnionType(node: UnionTypeNode): T;
127
+ visitIntersectionType(node: IntersectionTypeNode): T;
128
+ visitNegationType(node: NegationTypeNode): T;
129
+ visitGroupType(node: GroupTypeNode): T;
130
+ visitListType(node: ListTypeNode): T;
131
+ visitVectorType(node: VectorTypeNode): T;
132
+ visitMatrixType(node: MatrixTypeNode): T;
133
+ visitTensorType(node: TensorTypeNode): T;
134
+ visitTupleType(node: TupleTypeNode): T;
135
+ visitRecordType(node: RecordTypeNode): T;
136
+ visitDictionaryType(node: DictionaryTypeNode): T;
137
+ visitSetType(node: SetTypeNode): T;
138
+ visitCollectionType(node: CollectionTypeNode): T;
139
+ visitExpressionType(node: ExpressionTypeNode): T;
140
+ visitSymbolType(node: SymbolTypeNode): T;
141
+ visitNumericType(node: NumericTypeNode): T;
142
+ visitPrimitiveType(node: PrimitiveTypeNode): T;
143
+ visitTypeReference(node: TypeReferenceNode): T;
144
+ visitValue(node: ValueNode): T;
145
+ }
146
+ export declare function visitNode<T>(node: TypeNode, visitor: ASTVisitor<T>): T;
@@ -0,0 +1,30 @@
1
+ /* 0.32.1 */
2
+ /** @category Type */
3
+ export declare class BoxedType {
4
+ static unknown: BoxedType;
5
+ static number: BoxedType;
6
+ static non_finite_number: BoxedType;
7
+ static finite_number: BoxedType;
8
+ static finite_integer: BoxedType;
9
+ static finite_real: BoxedType;
10
+ static string: BoxedType;
11
+ static dictionary: BoxedType;
12
+ static setNumber: BoxedType;
13
+ static setComplex: BoxedType;
14
+ static setImaginary: BoxedType;
15
+ static setReal: BoxedType;
16
+ static setRational: BoxedType;
17
+ static setFiniteInteger: BoxedType;
18
+ static setInteger: BoxedType;
19
+ type: Type;
20
+ static widen(...types: ReadonlyArray<BoxedType | Type>): BoxedType;
21
+ static narrow(...types: ReadonlyArray<BoxedType | Type>): BoxedType;
22
+ constructor(type: Type | TypeString, typeResolver?: TypeResolver);
23
+ matches(other: Type | BoxedType): boolean;
24
+ is(other: Type): boolean;
25
+ get isUnknown(): boolean;
26
+ toString(): string;
27
+ toJSON(): string;
28
+ [Symbol.toPrimitive](hint: string): string | null;
29
+ valueOf(): string;
30
+ }
@@ -0,0 +1,51 @@
1
+ /* 0.32.1 */
2
+ export interface Token {
3
+ type: TokenType;
4
+ value: string;
5
+ position: number;
6
+ line: number;
7
+ column: number;
8
+ }
9
+ export interface LexerError {
10
+ message: string;
11
+ position: number;
12
+ line: number;
13
+ column: number;
14
+ }
15
+ export declare class Lexer {
16
+ input: string;
17
+ private pos;
18
+ private line;
19
+ private column;
20
+ private tokens;
21
+ constructor(input: string);
22
+ saveState(): {
23
+ pos: number;
24
+ line: number;
25
+ column: number;
26
+ tokens: Token[];
27
+ };
28
+ restoreState(state: {
29
+ pos: number;
30
+ line: number;
31
+ column: number;
32
+ tokens: Token[];
33
+ }): void;
34
+ error(message: string): never;
35
+ private peek;
36
+ private advance;
37
+ private match;
38
+ private isEOF;
39
+ private skipWhitespace;
40
+ private readIdentifier;
41
+ private readVerbatimString;
42
+ private readStringLiteral;
43
+ private readNumber;
44
+ private createToken;
45
+ private nextToken;
46
+ tokenize(): Token[];
47
+ peekToken(): Token;
48
+ consumeToken(): Token;
49
+ matchToken(type: TokenType): boolean;
50
+ expectToken(type: TokenType): Token;
51
+ }
@@ -0,0 +1,211 @@
1
+ /* 0.32.1 */
2
+ /**
3
+ * BNF grammar for the type parser:
4
+ *
5
+ <type> ::= <union_type>
6
+ | <function_signature>
7
+
8
+ <union_type> ::= <intersection_type> ( " | " <intersection_type> )*
9
+
10
+ <intersection_type> ::= <primary_type_with_negation> ( " & " <primary_type_with_negation> )*
11
+
12
+ <primary_type_with_negation> ::= ( "!" )? <primary_type>
13
+
14
+ <primary_type> ::= <group>
15
+ | <list_type>
16
+ | <tuple_type>
17
+ | <record_type>
18
+ | <dictionary_type>
19
+ | <set_type>
20
+ | <collection_type>
21
+ | <expression_type>
22
+ | <symbol_type>
23
+ | <numeric_type>
24
+ | <primitive_type>
25
+ | <value>
26
+ | <type_reference>
27
+
28
+ <group> ::= "(" <type> ")"
29
+
30
+ (* --- Function Signatures --- *)
31
+
32
+ <function_signature> ::= <arguments> " -> " <type>
33
+
34
+ <arguments> ::= "()"
35
+ | "(" <argument_list>? ")"
36
+
37
+ (* Note: The parser enforces a semantic rule: required arguments must come before optional and variadic arguments. *)
38
+ <argument_list> ::= <argument_specifier> ( "," <argument_specifier> )*
39
+
40
+ <argument_specifier> ::= <named_element> ( "?" | "*" | "+" )?
41
+
42
+ <named_element> ::= ( <name> ":" )? <type>
43
+
44
+ <name> ::= <identifier> | <verbatim_string>
45
+
46
+
47
+ (* --- Collection-like Types --- *)
48
+
49
+ <list_type> ::= "list" ( "<" <type> ( "^" <dimensions> )? ">" )?
50
+ | "vector" ( "<" ( <type> ("^" <dimension_specifier>)? | <dimensions> ) ">" )?
51
+ | "matrix" ( "<" ( <type> ("^" <dimensions>)? | <dimensions> ) ">" )?
52
+ | "tensor" ( "<" <type> ">" )?
53
+
54
+ <dimensions> ::= <dimension_specifier> ( "x" <dimension_specifier> )*
55
+ | "(" <dimension_specifier> ( "x" <dimension_specifier> )* ")"
56
+
57
+ <dimension_specifier> ::= <positive_integer_literal> | "?"
58
+
59
+ <tuple_type> ::= "tuple<" ( <named_element> ( "," <named_element> )* )? ">"
60
+
61
+ <record_type> ::= "record"
62
+ | "record<" <record_element> ( "," <record_element> )* ">"
63
+
64
+ <record_element> ::= <key> ":" <type>
65
+
66
+ <key> ::= <identifier> | <verbatim_string>
67
+
68
+ <dictionary_type> ::= "dictionary"
69
+ | "dictionary<" <type> ">"
70
+
71
+ <set_type> ::= "set"
72
+ | "set<" <type> ">"
73
+
74
+ <collection_type> ::= ( "collection" | "indexed_collection" ) ( "<" <type> ">" )?
75
+
76
+
77
+ (* --- Other Constructed Types --- *)
78
+
79
+ <expression_type> ::= "expression<" <identifier> ">"
80
+
81
+ <symbol_type> ::= "symbol<" <identifier> ">"
82
+
83
+ <numeric_type> ::= <numeric_primitive> "<" <bound> ".." <bound> ">"
84
+
85
+ <bound> ::= <number_literal> | "-oo" | "oo" | ""
86
+
87
+
88
+ (* --- Atomic and Primitive Types --- *)
89
+
90
+ <type_reference> ::= ( "type" )? <identifier>
91
+
92
+ <value> ::= <string_literal>
93
+ | <number_literal>
94
+ | "true" | "false"
95
+ | "nan" | "infinity" | "+infinity" | "oo" | "∞" | "+oo" | "+∞"
96
+ | "-infinity" | "-oo" | "-∞"
97
+
98
+ <primitive_type> ::= <numeric_primitive>
99
+ | "any" | "unknown" | "nothing" | "never" | "error"
100
+ | "expression" | "symbol" | "function" | "value"
101
+ | "scalar" | "boolean" | "string"
102
+ | "collection" | "indexed_collection" | "list" | "tuple"
103
+ | "set" | "record" | "dictionary"
104
+
105
+ <numeric_primitive> ::= "number" | "finite_number" | "complex" | "finite_complex"
106
+ | "imaginary" | "real" | "finite_real" | "rational"
107
+ | "finite_rational" | "integer" | "finite_integer"
108
+ | "non_finite_number"
109
+
110
+
111
+ (* --- Terminals (Lexical Tokens) --- *)
112
+
113
+ <identifier> ::= [a-zA-Z_][a-zA-Z0-9_]*
114
+
115
+ <verbatim_string> ::= "`" ( [^`] | "\`" | "\\" )* "`"
116
+
117
+ <positive_integer_literal> ::= [1-9][0-9]*
118
+
119
+ <number_literal> ::= (* As parsed by the valueParser, including integers, decimals, and scientific notation *)
120
+
121
+ <string_literal> ::= '"' ( [^"] | '\"' )* '"'
122
+ *
123
+ */
124
+ declare class TypeParser {
125
+ buffer: string;
126
+ pos: number;
127
+ _valueParser: (parser: TypeParser) => any;
128
+ _typeResolver: TypeResolver;
129
+ constructor(buffer: string, options?: {
130
+ valueParser?: (parser: TypeParser) => any;
131
+ typeResolver?: TypeResolver;
132
+ });
133
+ error(...messages: (string | undefined)[]): never;
134
+ peek(): string;
135
+ consume(): string;
136
+ /** Check if the upcoming tokens match s, return false if not, consume otherwise */
137
+ match(s: string): boolean;
138
+ /** If the next token don't match `>`, error */
139
+ expectClosingBracket(): void;
140
+ /** If a white space is allowed, call before `consume()` or `match()` */
141
+ skipWhitespace(): void;
142
+ isEOF(): boolean;
143
+ parseValue(): Type | null;
144
+ parseTypeReference(): TypeReference | null;
145
+ parsePrimitiveType(): Type | null;
146
+ /**
147
+ * Arguments are `name: type` or `type` separated by commas.
148
+ * Arguments can be optional, i.e. `name: type?` or `type?`.
149
+ * Variadic arguments are `name: type+`, `type+`, `name: type*` or `type*`.
150
+ */
151
+ parseArguments(): [
152
+ required: NamedElement[],
153
+ optional: NamedElement[],
154
+ variadic: NamedElement | undefined,
155
+ variadicMin: 0 | 1 | undefined
156
+ ];
157
+ parseFunctionSignature(): Type | null;
158
+ parsePositiveIntegerLiteral(): number | null;
159
+ parseOptionalDimension(): number | null;
160
+ parseDimensions(): number[] | undefined;
161
+ parseList(): Type | null;
162
+ /**
163
+ * Parse the name of a named element, i.e. an identifier followed by a colon.
164
+ * Does special error handling for optional qualifiers.
165
+ * */
166
+ parseName(): string | null;
167
+ parseVerbatimString(): string | null;
168
+ /**
169
+ * A general purpose identifier, used for expresion<>, symbol<>, type references, record keys, etc.
170
+ *
171
+ * Not used for arguments (they have special error handling with `parseName()`).
172
+ */
173
+ parseIdentifier(): string | null;
174
+ /** Parse:
175
+ * - "<identifier>: <type>"
176
+ * - "<type>"
177
+ *
178
+ * Does not parse variadic arguments, i.e. `type+` or `name: type+`.
179
+ */
180
+ parseNamedElement(): NamedElement | null;
181
+ parseTupleElements(): NamedElement[];
182
+ parseTuple(): Type | null;
183
+ /** Parse a non-optional group, i.e. "(" <type> ")" */
184
+ parseGroup(): Type | null;
185
+ parseSet(): Type | null;
186
+ parseRecordKeyValue(): [string, Type][];
187
+ parseRecord(): Type | null;
188
+ parseDictionary(): Type | null;
189
+ parseCollection(): Type | null;
190
+ parseExpression(): Type | null;
191
+ parseSymbol(): Type | null;
192
+ /** Parse a constructed numeric type with a range */
193
+ parseNumericType(): Type | null;
194
+ parseStringType(): Type | null;
195
+ parsePrimary(): Type;
196
+ parseUnexpectedToken(): string | undefined;
197
+ parseMaybePrimary(): Type | null;
198
+ parseNegationType(): Type | null;
199
+ parseIntersectionType(): Type | null;
200
+ parseUnionType(): Type | null;
201
+ parseType(): Readonly<Type> | null;
202
+ /** Parse a type, but return null if there's a problem instead
203
+ * of throwing.
204
+ */
205
+ parseTypeMaybe(): Readonly<Type> | null;
206
+ parse(): Readonly<Type>;
207
+ }
208
+ export declare function parseType(s: undefined, typeResolver?: TypeResolver): undefined;
209
+ export declare function parseType(s: TypeString | Type, typeResolver?: TypeResolver): Type;
210
+ export declare function parseType(s: TypeString | Type | undefined, typeResolver?: TypeResolver): Type | undefined;
211
+ export { TypeParser };
@@ -0,0 +1,45 @@
1
+ /* 0.32.1 */
2
+ import { TypeNode } from './ast-nodes';
3
+ import { TypeResolver } from './types';
4
+ export declare class Parser {
5
+ private lexer;
6
+ private typeResolver;
7
+ private current;
8
+ constructor(input: string, options?: {
9
+ typeResolver?: TypeResolver;
10
+ });
11
+ error(message: string, suggestion?: string): never;
12
+ errorAtToken(token: Token, message: string, suggestion?: string): never;
13
+ private advance;
14
+ private match;
15
+ private expect;
16
+ private createNode;
17
+ parseType(): TypeNode;
18
+ private checkForNakedFunctionSignature;
19
+ private parseUnionType;
20
+ private parseIntersectionType;
21
+ private parsePrimaryType;
22
+ private parseFunctionSignature;
23
+ private parseArgument;
24
+ private parseNamedElement;
25
+ private parseListType;
26
+ private parseListTypeImpl;
27
+ private parseVectorType;
28
+ private parseMatrixType;
29
+ private parseTensorType;
30
+ private parseDimensions;
31
+ private parseDimension;
32
+ private parseDimensionWithX;
33
+ private parseTupleType;
34
+ private parseRecordType;
35
+ private parseRecordEntry;
36
+ private parseDictionaryType;
37
+ private parseSetType;
38
+ private parseCollectionType;
39
+ private parseExpressionType;
40
+ private parseSymbolType;
41
+ private parseNumericType;
42
+ private parsePrimitiveType;
43
+ private parseValue;
44
+ private parseTypeReference;
45
+ }
@@ -0,0 +1,10 @@
1
+ /* 0.32.1 */
2
+ /** All the types representing numeric values */
3
+ export declare const NUMERIC_TYPES: NumericPrimitiveType[];
4
+ export declare const INDEXED_COLLECTION_TYPES: PrimitiveType[];
5
+ export declare const COLLECTION_TYPES: PrimitiveType[];
6
+ export declare const SCALAR_TYPES: PrimitiveType[];
7
+ export declare const VALUE_TYPES: PrimitiveType[];
8
+ export declare const EXPRESSION_TYPES: PrimitiveType[];
9
+ export declare const PRIMITIVE_TYPES: PrimitiveType[];
10
+ export declare function isValidPrimitiveType(s: any): s is PrimitiveType;
@@ -0,0 +1,2 @@
1
+ /* 0.32.1 */
2
+ export declare function typeToString(type: Type, precedence?: number): string;
@@ -0,0 +1,6 @@
1
+ /* 0.32.1 */
2
+ /** Return true if lhs is a subtype of rhs */
3
+ export declare function isPrimitiveSubtype(lhs: PrimitiveType, rhs: PrimitiveType): boolean;
4
+ /** Return true if lhs is a subtype of rhs */
5
+ export declare function isSubtype(lhs: Type | TypeString, rhs: Type | TypeString): boolean;
6
+ export declare function isCompatible(lhs: PrimitiveType, rhs: PrimitiveType, compatibility: TypeCompatibility): boolean;
@@ -0,0 +1,32 @@
1
+ /* 0.32.1 */
2
+ import { Type, TypeResolver } from './types';
3
+ export declare class TypeBuilder implements ASTVisitor<Type> {
4
+ private typeResolver;
5
+ constructor(typeResolver?: TypeResolver);
6
+ buildType(node: TypeNode): Type;
7
+ visitFunctionSignature(node: FunctionSignatureNode): Type;
8
+ visitUnionType(node: UnionTypeNode): Type;
9
+ visitIntersectionType(node: IntersectionTypeNode): Type;
10
+ visitNegationType(node: NegationTypeNode): Type;
11
+ visitGroupType(node: GroupTypeNode): Type;
12
+ visitListType(node: ListTypeNode): Type;
13
+ visitVectorType(node: VectorTypeNode): Type;
14
+ visitMatrixType(node: MatrixTypeNode): Type;
15
+ visitTensorType(node: TensorTypeNode): Type;
16
+ visitTupleType(node: TupleTypeNode): Type;
17
+ visitRecordType(node: RecordTypeNode): Type;
18
+ visitDictionaryType(node: DictionaryTypeNode): Type;
19
+ visitSetType(node: SetTypeNode): Type;
20
+ visitCollectionType(node: CollectionTypeNode): Type;
21
+ visitExpressionType(node: ExpressionTypeNode): Type;
22
+ visitSymbolType(node: SymbolTypeNode): Type;
23
+ visitNumericType(node: NumericTypeNode): Type;
24
+ visitPrimitiveType(node: PrimitiveTypeNode): Type;
25
+ visitTypeReference(node: TypeReferenceNode): Type;
26
+ visitValue(node: ValueNode): Type;
27
+ private buildNamedElement;
28
+ private buildDimension;
29
+ private buildValue;
30
+ private isAnyType;
31
+ }
32
+ export declare function buildTypeFromAST(node: TypeNode, typeResolver?: TypeResolver): Type;