123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- // @flow
- function last(...a: Array<number>): number {
- return a[a.length - 1]
- }
- function negation(a: number): number {
- return -a
- }
- function addition(a: number, b: number): number {
- return a + b
- }
- function subtraction(a: number, b: number): number {
- return a - b
- }
- function multiplication(a: number, b: number): number {
- return a * b
- }
- function division(a: number, b: number): number {
- return a / b
- }
- function max(...a: Array<number>): number {
- return Math.max(...a)
- }
- function min(...a: Array<number>): number {
- return Math.min(...a)
- }
- function comma(...a: Array<number | string>): Array<number | string> {
- return Array.of(...a)
- }
- const defaultSymbols = {
- symbols: {
- '*': {
- infix: {
- symbol: '*',
- f: multiplication,
- notation: 'infix',
- precedence: 4,
- rightToLeft: 0,
- argCount: 2,
- },
- symbol: '*',
- regSymbol: '\\*',
- },
- '/': {
- infix: {
- symbol: '/',
- f: division,
- notation: 'infix',
- precedence: 4,
- rightToLeft: 0,
- argCount: 2,
- },
- symbol: '/',
- regSymbol: '/',
- },
- '+': {
- infix: {
- symbol: '+',
- f: addition,
- notation: 'infix',
- precedence: 2,
- rightToLeft: 0,
- argCount: 2,
- },
- prefix: {
- symbol: '+',
- f: last,
- notation: 'prefix',
- precedence: 3,
- rightToLeft: 0,
- argCount: 1,
- },
- symbol: '+',
- regSymbol: '\\+',
- },
- '-': {
- infix: {
- symbol: '-',
- f: subtraction,
- notation: 'infix',
- precedence: 2,
- rightToLeft: 0,
- argCount: 2,
- },
- prefix: {
- symbol: '-',
- f: negation,
- notation: 'prefix',
- precedence: 3,
- rightToLeft: 0,
- argCount: 1,
- },
- symbol: '-',
- regSymbol: '-',
- },
- ',': {
- infix: {
- symbol: ',',
- f: comma,
- notation: 'infix',
- precedence: 1,
- rightToLeft: 0,
- argCount: 2,
- },
- symbol: ',',
- regSymbol: ',',
- },
- '(': {
- prefix: {
- symbol: '(',
- f: last,
- notation: 'prefix',
- precedence: 0,
- rightToLeft: 0,
- argCount: 1,
- },
- symbol: '(',
- regSymbol: '\\(',
- },
- ')': {
- postfix: {
- symbol: ')',
- f: undefined,
- notation: 'postfix',
- precedence: 0,
- rightToLeft: 0,
- argCount: 1,
- },
- symbol: ')',
- regSymbol: '\\)',
- },
- min: {
- func: {
- symbol: 'min',
- f: min,
- notation: 'func',
- precedence: 0,
- rightToLeft: 0,
- argCount: 1,
- },
- symbol: 'min',
- regSymbol: 'min\\b',
- },
- max: {
- func: {
- symbol: 'max',
- f: max,
- notation: 'func',
- precedence: 0,
- rightToLeft: 0,
- argCount: 1,
- },
- symbol: 'max',
- regSymbol: 'max\\b',
- },
- },
- }
- export default defaultSymbols
|