You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1004 B
TypeScript
52 lines
1004 B
TypeScript
2 years ago
|
export interface MathExpression {
|
||
|
type: 'MathExpression';
|
||
|
right: CalcNode;
|
||
|
left: CalcNode;
|
||
|
operator: '*' | '+' | '-' | '/';
|
||
|
}
|
||
|
|
||
|
export interface ParenthesizedExpression {
|
||
|
type: 'ParenthesizedExpression';
|
||
|
content: CalcNode;
|
||
|
}
|
||
|
|
||
|
export interface DimensionExpression {
|
||
|
type:
|
||
|
| 'LengthValue'
|
||
|
| 'AngleValue'
|
||
|
| 'TimeValue'
|
||
|
| 'FrequencyValue'
|
||
|
| 'PercentageValue'
|
||
|
| 'ResolutionValue'
|
||
|
| 'EmValue'
|
||
|
| 'ExValue'
|
||
|
| 'ChValue'
|
||
|
| 'RemValue'
|
||
|
| 'VhValue'
|
||
|
| 'VwValue'
|
||
|
| 'VminValue'
|
||
|
| 'VmaxValue';
|
||
|
value: number;
|
||
|
unit: string;
|
||
|
}
|
||
|
|
||
|
export interface NumberExpression {
|
||
|
type: 'Number';
|
||
|
value: number;
|
||
|
}
|
||
|
|
||
|
export interface FunctionExpression {
|
||
|
type: 'Function';
|
||
|
value: string;
|
||
|
}
|
||
|
|
||
|
export type ValueExpression = DimensionExpression | NumberExpression;
|
||
|
|
||
|
export type CalcNode = MathExpression | ValueExpression | FunctionExpression | ParenthesizedExpression;
|
||
|
|
||
|
export interface Parser {
|
||
|
parse: (arg: string) => CalcNode;
|
||
|
}
|
||
|
|
||
|
export const parser: Parser;
|