code: function read_via_readfn(readfn, lexer, text) {
    var form;
  
    // is there a name specified for a "local dialect"?
    if(readfn.dialect) {
      // use_dialect will load the dialect and push it on the dialect stack
      var localdialect = use_dialect(readfn.dialect, lexer, {local: true});
  
      // (now when the read function is called, any reading *it* does
      // will have the lextab and readtab of the local dialect available)
    }
  
    // call the read function...
    form = readfn(lexer, text);
  
    // if we got a form back and there is a local dialect...
    if(readfn.dialect) {
      if(form && !isretry(form)) {
        // save the local dialect's name on the form so that:
        // a. the local dialect can be popped when the end of
        //    the *containing* list is reached.
        // b. code generation can activate the same dialect
        //    when generating the form's code (without them
        //    having to assign the same dialect in the gentab
        //    that they've already assigned here in the readtab).
        form.dialect = readfn.dialect; // note this is the *name*
      }
      else {
        // didn't work out - so the local dialect doesn't apply:
        unuse_dialect(readfn.dialect, lexer);
      }
    }
  
    return form;
  }
docs: invoke a "read function" (found in the readtab) to read the
  form and return it.
  
  If a local dialect is assigned, activate the local dialect
  while reading the form, and assign the local dialect to the
  returned form for use by code generation.