import postfix from '@tannin/postfix'; import evaluate from '@tannin/evaluate'; /** * Given a C expression, returns a function which can be called to evaluate its * result. * * @example * * ```js * import compile from '@tannin/compile'; * * const evaluate = compile( 'n > 1' ); * * evaluate( { n: 2 } ); * // ⇒ true * ``` * * @param {string} expression C expression. * * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator. */ export default function compile( expression ) { var terms = postfix( expression ); return function( variables ) { return evaluate( terms, variables ); }; }