docs: function read_include_file(filename, lexer) {
  
    var includedForms;
    var foundFile = false;
  
    var all_dirs = include_dirs.concat([path.dirname(lexer.filename)]);
    all_dirs = all_dirs.concat([path.dirname(filename)]);
  
    var fullPath;
    all_dirs.forEach(function(prefix) {
      if (foundFile) {
        return;
      }
  
      fullPath = prefix + '/' + filename;
      try {
        trace("looking for include file at " + fullPath);
        filename = fs.realpathSync(fullPath);
        foundFile = true;
      } catch (err) {
        // not found - intentional ignore
      }
    });
  
    if (!foundFile) {
      lexer.error('No such include file: ' + filename);
    }
    trace("the include file was found at " + fullPath);
  
    // assuming we've gotten the lexer we're reading into...
    if(lexer) {
      if(!lexer.included) {
        lexer.included = [];
      }
  
      // prevent reading the same include file multiple times
      // (e.g. prevent circular includes)
      if (lexer.included.indexOf(filename) === -1) {
        lexer.included.push(filename);
        var code = fs.readFileSync(filename, "utf-8");
        if(path.extname(filename) === '.js') {
          // this was a javascript file just return the code as a string
          return code;
        }
        // this was a sugar file - transform the code to lispy forms
        includedForms = read_from_source(code, filename, {wrapOuterForm: true, includeFile: true});
      }
    }
    else {
      // no lexer given - read it anyway:
      var code = fs.readFileSync(filename)
      includedForms = read_from_source(code, filename, {wrapOuterForm: true});
    }
  
    return includedForms;
  }