import TokenType from './types'; export type RuleWrapper = {key: string; data: Rule}; export type Rule = { type: TokenType; args?: number; precedence?: number; }; export type Token = Rule & { value: number | string | (number | string)[]; }; const config: {rules: RuleWrapper[]} = { rules: [ { key: 'round|floor|ceil|asin|acos|atan|sin|cos|tan|cot|log|sqrt|min|max|pow|exp|abs|acc|diff|defined|deg|set', data: { type: TokenType.NAMED_FUNCTION, args: 1, precedence: 5 } }, { key: 'PI|pi', data: { type: TokenType.CONSTANT } }, { key: '\\*\\*', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\<\\=', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\>\\=', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\=\\=\\=', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\!\\=\\=', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\!', data: { type: TokenType.NAMED_FUNCTION, args: 1, precedence: 4 } }, { key: '\\>', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\<', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\|\\|', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '\\&\\&', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '[\\*\\/\\%]', data: { type: TokenType.OPERATOR, args: 2, precedence: 2 } }, { key: '[\\+\\,]', data: { type: TokenType.OPERATOR, args: 2, precedence: 1 } }, { key: '\\-(?![0-9.,])', data: { type: TokenType.OPERATOR, args: 2, precedence: 1 } }, {key: '[(\\[]', data: {type: TokenType.LEFT_PARENTHESIS}}, { key: '\\?', data: {type: TokenType.OPERATOR, args: 2, precedence: -1} }, { key: '\\:', data: {type: TokenType.OPERATOR, args: 2, precedence: 0} }, {key: '[)\\]]', data: {type: TokenType.RIGHT_PARENTHESIS}}, {key: '[0-9.,-]+', data: {type: TokenType.NUMBER}}, {key: '[a-zA-Z]+', data: {type: TokenType.VARIABLE}} ] }; export default config;