import { Token } from '../Lexer' ; import { Parser , ParserOutput } from './ParserInterface' ; export function err < TKind , TResult > ( p , errorMessage ) { return { parse ( token ) { const branches = p . parse ( token ) ; if ( branches . successful ) { return branches ; } return { successful : false , error : { kind : 'Error' , pos : branches . error . pos , message : errorMessage } } ; } } ; } export function errd < TKind , TResult > ( p , errorMessage , defaultValue ) { return { parse ( token ) { const branches = p . parse ( token ) ; if ( branches . successful ) { return branches ; } return { successful : true , candidates : [ { firstToken : token , nextToken : token , result : defaultValue } ] , error : { kind : 'Error' , pos : branches . error . pos , message : errorMessage } } ; } } ; }