(RECORD LEXENTRY (ORTH PRON FREQ))

(DEFINEQ (MAKELEXREAD
   (LAMBDA NIL
     (PROG ((TBL (COPYREADTABLE)))
       (SETSEPR '(13) NIL TBL)
       (RETURN TBL)))))

(DEFINEQ (READLEXENTRY
  (LAMBDA (STREAM BITTBL RDTBL)
     (SKIPSEPRS STREAM)
     (PROG ((ENTRY (RSTRING STREAM RDTBL))
            POS NPOS)
        (RETURN (CREATE LEXENTRY
           ORTH ← (SUBSTRING ENTRY 1 (SUB1 (SETQ POS (STRPOSL BITTBL ENTRY))))
           PRON ← (SUBSTRING ENTRY (ADD1 POS) (IF (SETQ NPOS (STRPOSL BITTBL ENTRY POS)) THEN (SUB1 NPOS) ELSE NPOS))
           FREQ ← (IF NPOS THEN (MKATOM (SUBSTRING ENTRY (ADD1 NPOS)))
                           ELSE 0)))))))

(DEFINEQ (LOAD-LEXICON
  (LAMBDA (INFILE)
    (PROG ((INSTREAM (OPENSTREAM INFILE (QUOTE INPUT)))
           (RDTBL (MAKELEXREAD))
           (BITTBL (MAKEBITTABLE '(32)))
           LEXNAME FROB LEXICON)
          (READ INSTREAM)                                (* Skip the comment *)
          (SETQ LEXNAME (READ INSTREAM))
          (SET LEXNAME (SETQ LEXICON (ARRAY (READ INSTREAM))))
          (FOR I FROM 1 TO (ARRAYSIZE LEXICON)
             DO (SETA LEXICON I (READLEXENTRY INSTREAM BITTBL RDTBL))
                (IF (EQ (IREMAINDER I 1000) 0)
                    THEN (PRINTOUT T I T))
	        FINALLY (CLOSEF INSTREAM))))))

STOP