Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 183x 17x | // @flow import P from 'parsimmon' import crap from './crap' import TupleParser from './collections/tuple' import IdentifierParser from './identifier' import type { LambdaNodeValueType, NodeType, VariableNodeType } from '../types' export default P.alt( P.seq( P.string('$') .then(IdentifierParser.atMost(1)) .skip(crap) .skip(P.string('=>')), crap.then(TupleParser) ).map( ([variable, definition]: [ Array<VariableNodeType>, NodeType ]): LambdaNodeValueType => ({ variable: variable.length ? variable[0].value : 'input', definition }) ), P.string('\\') .then(crap) .then(TupleParser) .map((definition: NodeType): LambdaNodeValueType => ({ variable: 'input', definition })) ) .trim(crap) .node('lambda') .desc('lambda') |