@sdeverywhere/parse 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +8 -0
- package/dist/index.cjs +1490 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +445 -0
- package/dist/index.d.ts +445 -0
- package/dist/index.js +1445 -0
- package/dist/index.js.map +1 -0
- package/package.json +53 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/** The original name of a dimension, as it appears in the model. */
|
|
2
|
+
type DimName = string;
|
|
3
|
+
/** The canonical identifier of a dimension, as it appears in generated code. */
|
|
4
|
+
type DimId = string;
|
|
5
|
+
/** The original name of a subscript/index, as it appears in the model. */
|
|
6
|
+
type SubName = string;
|
|
7
|
+
/** The canonical identifier of a subscript/index, as it appears in generated code. */
|
|
8
|
+
type SubId = string;
|
|
9
|
+
/**
|
|
10
|
+
* The original name of a dimension or subscript/index, as it appears in the model.
|
|
11
|
+
*
|
|
12
|
+
* This type is used in cases where either a dimension or an individual subscript/index
|
|
13
|
+
* can appear, and more analysis is needed to resolve the reference.
|
|
14
|
+
*/
|
|
15
|
+
type DimOrSubName = string;
|
|
16
|
+
/**
|
|
17
|
+
* The canonical identifier of a dimension or subscript/index, as it appears in
|
|
18
|
+
* generated code.
|
|
19
|
+
*
|
|
20
|
+
* This type is used in cases where either a dimension or an individual subscript/index
|
|
21
|
+
* can appear, and more analysis is needed to resolve the reference.
|
|
22
|
+
*/
|
|
23
|
+
type DimOrSubId = string;
|
|
24
|
+
/**
|
|
25
|
+
* A reference to a dimension or an individual subscript/index, as used in a dimension
|
|
26
|
+
* definition or in a variable reference inside an equation definition.
|
|
27
|
+
*
|
|
28
|
+
* This type can be used in cases where either a dimension or an individual subscript/index
|
|
29
|
+
* can appear, and more analysis is needed to resolve the reference.
|
|
30
|
+
*/
|
|
31
|
+
interface SubscriptRef {
|
|
32
|
+
/**
|
|
33
|
+
* The original name of the dimension or subscript/index, as it appears in the model.
|
|
34
|
+
*/
|
|
35
|
+
subName: DimOrSubName;
|
|
36
|
+
/**
|
|
37
|
+
* The canonical identifier of the dimension or subscript/index, as it appears in
|
|
38
|
+
* generated code.
|
|
39
|
+
*/
|
|
40
|
+
subId: DimOrSubId;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A subscript mapping, as used in a dimension definition.
|
|
44
|
+
*/
|
|
45
|
+
interface SubscriptMapping {
|
|
46
|
+
/**
|
|
47
|
+
* The original name of the "target" dimension for the mapping, as it appears in
|
|
48
|
+
* the model.
|
|
49
|
+
*/
|
|
50
|
+
toDimName: DimName;
|
|
51
|
+
/**
|
|
52
|
+
* The canonical identifier of the "target" dimension for the mapping, as it appears
|
|
53
|
+
* in generated code.
|
|
54
|
+
*/
|
|
55
|
+
toDimId: DimId;
|
|
56
|
+
/**
|
|
57
|
+
* The mapped subscripts.
|
|
58
|
+
*/
|
|
59
|
+
subscriptRefs: SubscriptRef[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* A definition of a dimension (aka "subscript range" in Vensim).
|
|
63
|
+
*/
|
|
64
|
+
interface DimensionDef {
|
|
65
|
+
/**
|
|
66
|
+
* The original name of the dimension being defined, as it appears in the model.
|
|
67
|
+
*/
|
|
68
|
+
dimName: DimName;
|
|
69
|
+
/**
|
|
70
|
+
* The canonical identifier of the dimension being defined, as it appears in generated code.
|
|
71
|
+
*/
|
|
72
|
+
dimId: DimId;
|
|
73
|
+
/**
|
|
74
|
+
* The original name of the family associated with the dimension being defined, as it
|
|
75
|
+
* appears in the model.
|
|
76
|
+
*
|
|
77
|
+
* For a typical dimension, the family name is the same as the dimension name, but in the
|
|
78
|
+
* case of an alias (e.g., in Vensim, `DimA <-> DimB`), this will be the name used on the
|
|
79
|
+
* right side (e.g., `DimB`).
|
|
80
|
+
*/
|
|
81
|
+
familyName: DimName;
|
|
82
|
+
/**
|
|
83
|
+
* The canonical identifier of the family associated with the dimension being defined, as
|
|
84
|
+
* it appears in generated code.
|
|
85
|
+
*
|
|
86
|
+
* For a typical dimension, the family name is the same as the dimension name, but in the
|
|
87
|
+
* case of an alias (e.g., in Vensim, `DimA <-> DimB`), this will be the ID used on the
|
|
88
|
+
* right side (e.g., `_dimb`).
|
|
89
|
+
*/
|
|
90
|
+
familyId: DimId;
|
|
91
|
+
/**
|
|
92
|
+
* The array of subscripts/indices that make up this dimension.
|
|
93
|
+
*/
|
|
94
|
+
subscriptRefs: SubscriptRef[];
|
|
95
|
+
/**
|
|
96
|
+
* The array of subscript mappings, if defined for this dimension.
|
|
97
|
+
*/
|
|
98
|
+
subscriptMappings: SubscriptMapping[];
|
|
99
|
+
/**
|
|
100
|
+
* The optional comment text that accompanies the dimension definition in the model.
|
|
101
|
+
*/
|
|
102
|
+
comment?: string;
|
|
103
|
+
/**
|
|
104
|
+
* The optional group name, if this dimension definition is contained within a group.
|
|
105
|
+
*/
|
|
106
|
+
group?: string;
|
|
107
|
+
}
|
|
108
|
+
/** A number literal that appears in an expression. */
|
|
109
|
+
interface NumberLiteral {
|
|
110
|
+
kind: 'number';
|
|
111
|
+
/** The numeric value. */
|
|
112
|
+
value: number;
|
|
113
|
+
/** The original string representation from the model. */
|
|
114
|
+
text: string;
|
|
115
|
+
}
|
|
116
|
+
/** A string literal that appears in an expression. */
|
|
117
|
+
interface StringLiteral {
|
|
118
|
+
kind: 'string';
|
|
119
|
+
/** The string value without quotes. */
|
|
120
|
+
text: string;
|
|
121
|
+
}
|
|
122
|
+
/** A keyword (e.g., ":NA:") that appears in an expression. */
|
|
123
|
+
interface Keyword {
|
|
124
|
+
kind: 'keyword';
|
|
125
|
+
/** The original string representation from the model. */
|
|
126
|
+
text: string;
|
|
127
|
+
}
|
|
128
|
+
/** The original name of a variable, as it appears in the model. */
|
|
129
|
+
type VariableName = string;
|
|
130
|
+
/** The canonical identifier of a variable, as it appears in generated code. */
|
|
131
|
+
type VariableId = string;
|
|
132
|
+
/**
|
|
133
|
+
* A reference to a variable that appears in an expression.
|
|
134
|
+
*/
|
|
135
|
+
interface VariableRef {
|
|
136
|
+
kind: 'variable-ref';
|
|
137
|
+
/**
|
|
138
|
+
* The original name of the variable, as it appears in the model.
|
|
139
|
+
*/
|
|
140
|
+
varName: VariableName;
|
|
141
|
+
/**
|
|
142
|
+
* The canonical identifier of the variable, as it appears in generated code.
|
|
143
|
+
*/
|
|
144
|
+
varId: VariableId;
|
|
145
|
+
/**
|
|
146
|
+
* The optional array of subscript/dimension references, if the referenced variable
|
|
147
|
+
* is subscripted.
|
|
148
|
+
*/
|
|
149
|
+
subscriptRefs?: SubscriptRef[];
|
|
150
|
+
}
|
|
151
|
+
/** An operator used in a unary expression. */
|
|
152
|
+
type UnaryOp = '+' | '-' | ':NOT:';
|
|
153
|
+
/** A unary expression. */
|
|
154
|
+
interface UnaryOpExpr {
|
|
155
|
+
kind: 'unary-op';
|
|
156
|
+
/** The operator. */
|
|
157
|
+
op: UnaryOp;
|
|
158
|
+
/** The child expression that the operator applies to. */
|
|
159
|
+
expr: Expr;
|
|
160
|
+
}
|
|
161
|
+
/** An operator used in a binary expression. */
|
|
162
|
+
type BinaryOp = '+' | '-' | '*' | '/' | '^' | '=' | '<>' | '<' | '>' | '<=' | '>=' | ':AND:' | ':OR:';
|
|
163
|
+
/** A binary expression. */
|
|
164
|
+
interface BinaryOpExpr {
|
|
165
|
+
kind: 'binary-op';
|
|
166
|
+
/** The left-hand side child expression. */
|
|
167
|
+
lhs: Expr;
|
|
168
|
+
/** The operator. */
|
|
169
|
+
op: BinaryOp;
|
|
170
|
+
/** The right-hand side child expression. */
|
|
171
|
+
rhs: Expr;
|
|
172
|
+
}
|
|
173
|
+
/** An expression that was contained within parentheses in the original model. */
|
|
174
|
+
interface ParensExpr {
|
|
175
|
+
kind: 'parens';
|
|
176
|
+
/** The child expression that was defined within parentheses. */
|
|
177
|
+
expr: Expr;
|
|
178
|
+
}
|
|
179
|
+
/** A single (x,y) point in a lookup definition. */
|
|
180
|
+
type LookupPoint = [number, number];
|
|
181
|
+
/** The range for a lookup definition. */
|
|
182
|
+
interface LookupRange {
|
|
183
|
+
min: LookupPoint;
|
|
184
|
+
max: LookupPoint;
|
|
185
|
+
}
|
|
186
|
+
/** A lookup definition. */
|
|
187
|
+
interface LookupDef {
|
|
188
|
+
kind: 'lookup-def';
|
|
189
|
+
/** The optional range that declares the minimum and maximum points for this lookup. */
|
|
190
|
+
range?: LookupRange;
|
|
191
|
+
/** The array of points that define this lookup. */
|
|
192
|
+
points: LookupPoint[];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* A lookup call, as used in an expression. This is similar to a `FunctionCall`, except
|
|
196
|
+
* that instead of a function name, there is a reference to a lookup variable, and the
|
|
197
|
+
* single argument determines the x coordinate for the lookup.
|
|
198
|
+
*/
|
|
199
|
+
interface LookupCall {
|
|
200
|
+
kind: 'lookup-call';
|
|
201
|
+
/** The reference to a lookup variable. */
|
|
202
|
+
varRef: VariableRef;
|
|
203
|
+
/** The single argument that determines the x coordinate for the lookup. */
|
|
204
|
+
arg: Expr;
|
|
205
|
+
}
|
|
206
|
+
/** The original name of a function, as it appears in the model. */
|
|
207
|
+
type FunctionName = string;
|
|
208
|
+
/** The canonical identifier of a function, as it appears in generated code. */
|
|
209
|
+
type FunctionId = string;
|
|
210
|
+
/** A function call, as used in an expression. */
|
|
211
|
+
interface FunctionCall {
|
|
212
|
+
kind: 'function-call';
|
|
213
|
+
/**
|
|
214
|
+
* The original name of the function, as it appears in the model.
|
|
215
|
+
*/
|
|
216
|
+
fnName: FunctionName;
|
|
217
|
+
/**
|
|
218
|
+
* The canonical identifier of the function, as it appears in generated code.
|
|
219
|
+
*/
|
|
220
|
+
fnId: FunctionId;
|
|
221
|
+
/**
|
|
222
|
+
* The array of argument expressions that are passed to the function.
|
|
223
|
+
*/
|
|
224
|
+
args: Expr[];
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* A union type that includes all possible expression types. Each expression type includes
|
|
228
|
+
* a unique `kind` property that can be used to identify the type of the expression.
|
|
229
|
+
*/
|
|
230
|
+
type Expr = NumberLiteral | StringLiteral | Keyword | VariableRef | UnaryOpExpr | BinaryOpExpr | ParensExpr | LookupDef | LookupCall | FunctionCall;
|
|
231
|
+
/**
|
|
232
|
+
* A variable definition that appears on the LHS of an equation definition. Note that
|
|
233
|
+
* this is mostly the same as `VariableRef` that is used in an expression; the difference
|
|
234
|
+
* is that a `VariableDef` may contain an "except" clause whereas a `VariableRef` will not.
|
|
235
|
+
*/
|
|
236
|
+
interface VariableDef {
|
|
237
|
+
kind: 'variable-def';
|
|
238
|
+
/**
|
|
239
|
+
* The original name of the variable, as it appears in the model.
|
|
240
|
+
*/
|
|
241
|
+
varName: VariableName;
|
|
242
|
+
/**
|
|
243
|
+
* The canonical identifier of the variable, as it appears in generated code.
|
|
244
|
+
*/
|
|
245
|
+
varId: VariableId;
|
|
246
|
+
/**
|
|
247
|
+
* The optional array of subscript/dimension references, if the variable is subscripted.
|
|
248
|
+
*/
|
|
249
|
+
subscriptRefs?: SubscriptRef[];
|
|
250
|
+
/**
|
|
251
|
+
* The optional array of "exceptions". For example, in Vensim it is possible to express
|
|
252
|
+
* that an equation to applies to all subscripts in a dimension except for one (or a subset),
|
|
253
|
+
* e.g., `x[DimA] :EXCEPT: [A1] = 5`.
|
|
254
|
+
*/
|
|
255
|
+
exceptSubscriptRefSets?: SubscriptRef[][];
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* The left-hand side of an equation definition.
|
|
259
|
+
*/
|
|
260
|
+
interface EquationLhs {
|
|
261
|
+
/** The variable definition that appears on the LHS. */
|
|
262
|
+
varDef: VariableDef;
|
|
263
|
+
}
|
|
264
|
+
/** The right-hand side of a typical equation that is defined with an expression. */
|
|
265
|
+
interface EquationRhsExpr {
|
|
266
|
+
kind: 'expr';
|
|
267
|
+
/** The expression that appears on the right-hand side of the equation. */
|
|
268
|
+
expr: Expr;
|
|
269
|
+
}
|
|
270
|
+
/** The right-hand side of a constant list definition. */
|
|
271
|
+
interface EquationRhsConstList {
|
|
272
|
+
kind: 'const-list';
|
|
273
|
+
/** The array of constant values. */
|
|
274
|
+
constants: NumberLiteral[];
|
|
275
|
+
/**
|
|
276
|
+
* @hidden The original string representation from the model. This is only needed for
|
|
277
|
+
* compatibility with the legacy parser, which includes the original string representation
|
|
278
|
+
* including semicolons, which is used for the `modelFormula`. Ideally we could remove this
|
|
279
|
+
* field if we fix antlr4-vensim to preserve the groupings as described above.
|
|
280
|
+
*/
|
|
281
|
+
text: string;
|
|
282
|
+
}
|
|
283
|
+
/** The right-hand side of a "lookup variable" definition. */
|
|
284
|
+
interface EquationRhsLookup {
|
|
285
|
+
kind: 'lookup';
|
|
286
|
+
/** The lookup definition that appears on the right-hand side of the variable definition. */
|
|
287
|
+
lookupDef: LookupDef;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* The right-hand side of a "data variable" definition. In Vensim, a data variable does
|
|
291
|
+
* not contain any information in the model file, and the data is read from an external
|
|
292
|
+
* file, so this type is merely used to indicate the equation kind (to differentiate it
|
|
293
|
+
* from other kinds of equations).
|
|
294
|
+
*/
|
|
295
|
+
interface EquationRhsData {
|
|
296
|
+
kind: 'data';
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* A union type that includes all possible equation right-hand side types. Each type includes
|
|
300
|
+
* a unique `kind` property that can be used to identify the type of the equation.
|
|
301
|
+
*/
|
|
302
|
+
type EquationRhs = EquationRhsExpr | EquationRhsConstList | EquationRhsLookup | EquationRhsData;
|
|
303
|
+
/** An equation definition. */
|
|
304
|
+
interface Equation {
|
|
305
|
+
/** The left-hand side of the equation. */
|
|
306
|
+
lhs: EquationLhs;
|
|
307
|
+
/** The right-hand side of the equation. */
|
|
308
|
+
rhs: EquationRhs;
|
|
309
|
+
/**
|
|
310
|
+
* The optional units text that accompanies the equation definition in the model.
|
|
311
|
+
*/
|
|
312
|
+
units?: string;
|
|
313
|
+
/**
|
|
314
|
+
* The optional comment text that accompanies the equation definition in the model.
|
|
315
|
+
*/
|
|
316
|
+
comment?: string;
|
|
317
|
+
/**
|
|
318
|
+
* The optional group name, if this equation definition is contained within a group.
|
|
319
|
+
*/
|
|
320
|
+
group?: string;
|
|
321
|
+
}
|
|
322
|
+
/** A complete model definition, including all defined dimensions and equations. */
|
|
323
|
+
interface Model {
|
|
324
|
+
/** The array of all dimension definitions in the model. */
|
|
325
|
+
dimensions: DimensionDef[];
|
|
326
|
+
/** The array of all variable/equation definitions in the model. */
|
|
327
|
+
equations: Equation[];
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* @hidden This is not yet part of the public API.
|
|
332
|
+
*/
|
|
333
|
+
declare function debugPrintExpr(expr: Expr, indent?: number): void;
|
|
334
|
+
/**
|
|
335
|
+
* @hidden This is not yet part of the public API.
|
|
336
|
+
*/
|
|
337
|
+
type FormatVariableRefFunc = (varRef: VariableRef) => string;
|
|
338
|
+
/**
|
|
339
|
+
* @hidden This is not yet part of the public API.
|
|
340
|
+
*/
|
|
341
|
+
interface PrettyOpts {
|
|
342
|
+
/**
|
|
343
|
+
* Whether to use a compact representation without additional spaces. (The compact form mimics
|
|
344
|
+
* the behavior of the legacy parser.
|
|
345
|
+
*/
|
|
346
|
+
compact?: boolean;
|
|
347
|
+
html?: boolean;
|
|
348
|
+
formatVariableRef?: FormatVariableRefFunc;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* @hidden This is not yet part of the public API.
|
|
352
|
+
*/
|
|
353
|
+
declare function toPrettyString(expr: Expr, opts?: PrettyOpts): string;
|
|
354
|
+
/**
|
|
355
|
+
* @hidden This is not yet part of the public API.
|
|
356
|
+
*/
|
|
357
|
+
declare function prettyPrintExpr(expr: Expr, indent?: number): void;
|
|
358
|
+
/**
|
|
359
|
+
* @hidden This is not yet part of the public API.
|
|
360
|
+
*/
|
|
361
|
+
declare function printExprStats(exprs: Expr[]): void;
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* @hidden This is not yet part of the public API.
|
|
365
|
+
*/
|
|
366
|
+
interface ReduceExprOptions {
|
|
367
|
+
/** A callback that returns the possibly reduced expression for the referenced variable. */
|
|
368
|
+
resolveVarRef?: (varRef: VariableRef) => Expr | undefined;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* @hidden This is not yet part of the public API.
|
|
372
|
+
*/
|
|
373
|
+
declare function reduceExpr(expr: Expr, opts?: ReduceExprOptions): Expr;
|
|
374
|
+
/**
|
|
375
|
+
* A variant of `reduceExpr` that does not aggressively reduce the expression, but only
|
|
376
|
+
* tries to eliminate the unused branch if a conditional (`IF THEN ELSE`) has a condition
|
|
377
|
+
* that resolves to a constant.
|
|
378
|
+
*
|
|
379
|
+
* @hidden This is not yet part of the public API.
|
|
380
|
+
*
|
|
381
|
+
* @param expr The expression to reduce.
|
|
382
|
+
* @param opts The reduce options.
|
|
383
|
+
* @returns A possibly reduced expression.
|
|
384
|
+
*/
|
|
385
|
+
declare function reduceConditionals(expr: Expr, opts?: ReduceExprOptions): Expr;
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Context interface that provides access to file system resources (such as external
|
|
389
|
+
* data files) that are needed when parsing a Vensim model.
|
|
390
|
+
*/
|
|
391
|
+
interface VensimParseContext {
|
|
392
|
+
/**
|
|
393
|
+
* Called when a `GET DIRECT SUBSCRIPTS` function call is encountered when parsing a
|
|
394
|
+
* Vensim subscript range definition. The arguments are the same as those passed
|
|
395
|
+
* to `GET DIRECT SUBSCRIPTS` in the model, except that the enclosing quotes have
|
|
396
|
+
* already been removed.
|
|
397
|
+
*
|
|
398
|
+
* @param fileName The CSV or XLS[X] file path, or an indirect tag (e.g., '?data').
|
|
399
|
+
* @param tabOrDelimiter The tab name (for XLS[X] files) or the delimiter (for CSV files).
|
|
400
|
+
* @param firstCell The location of the first subscript element.
|
|
401
|
+
* @param lastCell The location of the last subscript element.
|
|
402
|
+
* @param prefix A string that is prepended to every subscript element.
|
|
403
|
+
* @returns An array of subscript names read from the external data file.
|
|
404
|
+
*/
|
|
405
|
+
getDirectSubscripts(fileName: string, tabOrDelimiter: string, firstCell: string, lastCell: string, prefix: string): SubName[];
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Parse the given Vensim subscript range definition and return a `DimensionDef` AST node.
|
|
410
|
+
*
|
|
411
|
+
* @param input A string containing the Vensim subscript range definition.
|
|
412
|
+
* @param context An object that provides access to file system resources (such as
|
|
413
|
+
* external data files) that are referenced during the parse phase.
|
|
414
|
+
* @returns A `DimensionDef` AST node.
|
|
415
|
+
*/
|
|
416
|
+
declare function parseVensimSubscriptRange(input: string, context?: VensimParseContext): DimensionDef;
|
|
417
|
+
|
|
418
|
+
/**
|
|
419
|
+
* Parse the given Vensim expression definition and return an `Expr` AST node.
|
|
420
|
+
*
|
|
421
|
+
* @param input A string containing the Vensim expression.
|
|
422
|
+
* @returns An `Expr` AST node.
|
|
423
|
+
*/
|
|
424
|
+
declare function parseVensimExpr(input: string): Expr;
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Parse the given Vensim equation definition and return an `Equation` AST node.
|
|
428
|
+
*
|
|
429
|
+
* @param input A string containing the Vensim equation definition.
|
|
430
|
+
* @returns An `Equation` AST node.
|
|
431
|
+
*/
|
|
432
|
+
declare function parseVensimEquation(input: string): Equation;
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Parse the given Vensim model definition and return a `Model` AST node.
|
|
436
|
+
*
|
|
437
|
+
* @param input A string containing the Vensim model.
|
|
438
|
+
* @param context An object that provides access to file system resources (such as
|
|
439
|
+
* external data files) that are referenced during the parse phase.
|
|
440
|
+
* @param sort Whether to sort definitions alphabetically during the preprocessing phase.
|
|
441
|
+
* @returns A `Model` AST node.
|
|
442
|
+
*/
|
|
443
|
+
declare function parseVensimModel(input: string, context?: VensimParseContext, sort?: boolean): Model;
|
|
444
|
+
|
|
445
|
+
export { BinaryOp, BinaryOpExpr, DimId, DimName, DimOrSubId, DimOrSubName, DimensionDef, Equation, EquationLhs, EquationRhs, EquationRhsConstList, EquationRhsData, EquationRhsExpr, EquationRhsLookup, Expr, FormatVariableRefFunc, FunctionCall, FunctionId, FunctionName, Keyword, LookupCall, LookupDef, LookupPoint, LookupRange, Model, NumberLiteral, ParensExpr, PrettyOpts, ReduceExprOptions, StringLiteral, SubId, SubName, SubscriptMapping, SubscriptRef, UnaryOp, UnaryOpExpr, VariableDef, VariableId, VariableName, VariableRef, VensimParseContext, debugPrintExpr, parseVensimEquation, parseVensimExpr, parseVensimModel, parseVensimSubscriptRange, prettyPrintExpr, printExprStats, reduceConditionals, reduceExpr, toPrettyString };
|