docs: function(input, context, filename, callback) {
                  var compress, error, mode, output, parse, ref1, ref2, variables;
                  input = input.replace(/\uFF00/g, '\n');
                  input = input.replace(/^\(([\s\S]*)\n\)$/m, '$1');
                  context = _options.context || context;
                  variables = _options.variables || (_options.variables = {});
                  error = [];
                  ref1 = _options.command, compile = ref1.compile, evaluate = ref1.evaluate, parse = ref1.parse, render = ref1.render, stringify = ref1.stringify;
                  ref2 = _options.flags, mode = ref2.mode, compress = ref2.compress;
                  Expression.callback(function(expression, result, stack, errors) {
                      var key, ref3, value;
                      context['_'] = result;
                      ref3 = stack.local;
                      for (key in ref3) {
                          if (!hasProp.call(ref3, key)) continue;
                          value = ref3[key];
                          variables[key] = value;
                      }
                      if (errors != null) {
                          error = error.concat(errors);
                      }
                  });
                  try {
                      output = (function() {
                          switch (mode) {
                              case 'c':
                                  return compile(input, null, compress);
                              case 'p':
                                  return stringify(input, null, compress);
                              case 'r':
                                  return render(input, null, compress);
                              case 's':
                                  return parse(input);
                              default:
                                  return evaluate(input, context, variables);
                          }
                      })();
                      callback(_prettyErrorMessage(error, filename, input, true), output);
                  } catch (error1) {
                      error = error1;
                      callback(_prettyErrorMessage(error, filename, input, true));
                  }
              }