index.js
function reduceFunctionCall(string, functionRE, callback) {
  var call = string
  return getFunctionCalls(string, functionRE).reduce(function(string, obj) {
    return string.replace(obj.functionIdentifier + "(" + obj.matches.body + ")", evalFunctionCall(obj.matches.body, obj.functionIdentifier, callback, call, functionRE))
  }, string)
}
function reduceFunctionCall(string, functionRE, callback) {
  var call = string
  return getFunctionCalls(string, functionRE).reduce(function(string, obj) {
    return string.replace(obj.functionIdentifier + "(" + obj.matches.body + ")", evalFunctionCall(obj.matches.body, obj.functionIdentifier, callback, call, functionRE))
  }, string)
}
function reduceFunctionCall ( string , functionRE , callback ) { var call = string return getFunctionCalls ( string , functionRE ) . reduce ( function ( string , obj ) { return string . replace ( obj . functionIdentifier + "(" + obj . matches . body + ")" , evalFunctionCall ( obj . matches . body , obj . functionIdentifier , callback , call , functionRE ) ) } , string ) }
Walkthrough all expressions, evaluate them and insert them into the declaration

@param {Array} expressions
@param {Object} declaration
Walkthrough all expressions evaluate them and insert them into the declaration