(FILECREATED " 5-Aug-84 22:46:28" {PHYLUM}<HUTTENLOCHER>LISP>HASHER.;12 7177   

      changes to:  (FNS STR-INVERT-LEXICON SYL-INVERT-LEXICON SYLINVERTLEXENTRY 
			SYLPHONEINVERTLEXENTRY UNS-INVERT-LEXICON INVERT-LEXICON INVERTLEXENTRY 
			STRINVERTLEXENTRY UNSINVERTLEXENTRY)

      previous date: " 5-Aug-84 22:05:28" {PHYLUM}<HUTTENLOCHER>LISP>HASHER.;11)


(PRETTYCOMPRINT HASHERCOMS)

(RPAQQ HASHERCOMS [(FNS INVERT-LEXICON INVERTLEXENTRY MAKEPHONEHASHTABLE STR-INVERT-LEXICON 
			STRINVERTLEXENTRY SYL-INVERT-LEXICON SYLINVERTLEXENTRY SYLLABIFYLEXENTRY 
			SYLPHONEINVERTLEXENTRY UNS-INVERT-LEXICON UNSINVERTLEXENTRY)
	(GLOBALVARS PHONEHASHTABLE PHONELIST)
	(P [SETQ PHONELIST
		 (QUOTE ((V- (@ a c E e I i O o U u W x Y L M N X R %| ↑))
			 (S- (b d g p t k))
			 (N- (m n g))
			 (SF- (s z S Z C J))
			 (WF- (D T f v h))
			 (G- (l r w y]
	   (SETQ PHONEHASHTABLE (MAKEPHONEHASHTABLE])
(DEFINEQ

(INVERT-LEXICON
  [LAMBDA (LEXARRAY HASHTBL)                                 (* edited: " 5-Aug-84 22:04")
    (PROG ([BITTBL (MAKEBITTABLE (QUOTE (- < *]
	   ENTRY KEY)
          (CLRSTRHASH HASHTBL)
          (for I from 1 to (ARRAYSIZE LEXARRAY)
	     do (SETQ ENTRY (ELT LEXARRAY I))
		(SETQ KEY (INVERTLEXENTRY (fetch (LEXENTRY PRON) of ENTRY)
					  BITTBL))
		(MODSTRHASH KEY (FUNCTION [LAMBDA (OLDVAL NEWVAL)
				(CONS NEWVAL OLDVAL])
			    HASHTBL
			    (LIST ENTRY])

(INVERTLEXENTRY
  [LAMBDA (PRON BITTBL)                                      (* edited: " 5-Aug-84 22:45")
    (PROG (CLASS KEY SYLKEY)
          (RETURN (for SYL in (SYLLABIFYLEXENTRY PRON BITTBL)
		     do [push SYLKEY (COND
				((OR (MEMBER 1 SYL)
				     (MEMBER 2 SYL))
				  (QUOTE STR-))
				(T (QUOTE UNS-]
			[for PHONE in SYL
			   do (SETQ CLASS (GETHASH PHONE PHONEHASHTABLE))
			      (COND
				(CLASS (push KEY CLASS]
		     finally (RETURN (CONCATLIST (NCONC (DREVERSE KEY)
							(DREVERSE SYLKEY])

(MAKEPHONEHASHTABLE
  [LAMBDA NIL                                                (* dph: " 3-Aug-84 17:11")
    (PROG ((HASHTABLE (HARRAY 100))
	   CLASS)
          (for ENTRY in PHONELIST
	     do (SETQ CLASS (CAR ENTRY))
		(for PHONE in (CADR ENTRY) do (PUTHASH PHONE CLASS HASHTABLE)))
          (RETURN HASHTABLE])

(STR-INVERT-LEXICON
  [LAMBDA (LEXARRAY HASHTBL)                                 (* edited: " 5-Aug-84 22:23")
    (PROG ([BITTBL (MAKEBITTABLE (QUOTE (- < *]
	   ENTRY KEY)
          (CLRSTRHASH HASHTBL)
          (for I from 1 to (ARRAYSIZE LEXARRAY)
	     do (SETQ ENTRY (ELT LEXARRAY I))
		(SETQ KEY (STRINVERTLEXENTRY (fetch (LEXENTRY PRON) of ENTRY)
					     BITTBL))
		(MODSTRHASH KEY (FUNCTION [LAMBDA (OLDVAL NEWVAL)
				(CONS NEWVAL OLDVAL])
			    HASHTBL
			    (LIST ENTRY])

(STRINVERTLEXENTRY
  [LAMBDA (ENTRY BITTBL)                                     (* edited: " 5-Aug-84 16:16")
    (PROG (CLASS KEY SYLKEY)
          (RETURN (for SYL in (SYLLABIFYLEXENTRY ENTRY BITTBL)
		     do [push SYLKEY (COND
				((OR (MEMBER 1 SYL)
				     (MEMBER 2 SYL))
				  (QUOTE STR-))
				(T (QUOTE UNS-]
			[COND
			  ((EQUAL (CAR SYLKEY)
				  (QUOTE STR-))
			    (for PHONE in SYL
			       do (SETQ CLASS (GETHASH PHONE PHONEHASHTABLE))
				  (COND
				    (CLASS (push KEY CLASS]
		     finally (RETURN (CONCATLIST (NCONC (DREVERSE KEY)
							(DREVERSE SYLKEY])

(SYL-INVERT-LEXICON
  [LAMBDA (LEXARRAY HASHTBL BROADP)                          (* edited: " 5-Aug-84 22:34")
    (PROG ([BITTBL (MAKEBITTABLE (QUOTE (- < *]
	   ENTRY)
          (CLRSTRHASH HASHTBL)
          (for I from 1 to (ARRAYSIZE LEXARRAY)
	     do (SETQ ENTRY (ELT LEXARRAY I))
		(COND
		  (BROADP (SYLINVERTLEXENTRY ENTRY BITTBL HASHTBL))
		  (T (SYLPHONEINVERTLEXENTRY ENTRY BITTBL HASHTBL])

(SYLINVERTLEXENTRY
  [LAMBDA (ENTRY BITTBL HASHTBL)                             (* edited: " 5-Aug-84 22:35")
    (PROG (CLASS KEY SYLKEY)
          (for SYL in (SYLLABIFYLEXENTRY (fetch (LEXENTRY PRON) of ENTRY)
					 BITTBL)
	     do (SETQ KEY NIL)
		(for PHONE in SYL
		   do (SETQ CLASS (GETSTRHASH PHONE PHONEHASHTABLE))
		      (COND
			(CLASS (push KEY CLASS)))
		   finally (SETQ KEY (CONCATLIST (DREVERSE KEY)))
			   (MODSTRHASH KEY (FUNCTION [LAMBDA (OLDVAL NEWVAL)
					   (CONS NEWVAL OLDVAL])
				       HASHTBL
				       (LIST ENTRY])

(SYLLABIFYLEXENTRY
  [LAMBDA (PRON BITTBL)                                      (* dph: " 3-Aug-84 18:59")
    (PROG ((OLD-SEPR 0))
          (RETURN (for (NEW-SEPR ← (STRPOSL BITTBL PRON 1))
		       SYLLLIST while NEW-SEPR by (STRPOSL BITTBL PRON (ADD1 NEW-SEPR))
		     do [push SYLLLIST (UNPACK (SUBSTRING PRON (ADD1 OLD-SEPR)
							  (SUB1 NEW-SEPR]
			(SETQ OLD-SEPR NEW-SEPR)
		     finally (RETURN (REVERSE (push SYLLLIST (UNPACK (SUBSTRING PRON (ADD1 OLD-SEPR])

(SYLPHONEINVERTLEXENTRY
  [LAMBDA (ENTRY BITTBL HASHTBL)                             (* edited: " 5-Aug-84 22:35")
    (PROG (KEY SYLKEY)
          (for SYL in (SYLLABIFYLEXENTRY (fetch (LEXENTRY PRON) of ENTRY)
					 BITTBL)
	     do (SETQ KEY NIL)
		(for PHONE in SYL do (COND
				       ((GETSTRHASH PHONE PHONEHASHTABLE)
					 (push KEY PHONE)))
		   finally (SETQ KEY (CONCATLIST (DREVERSE KEY)))
			   (MODSTRHASH KEY (FUNCTION [LAMBDA (OLDVAL NEWVAL)
					   (CONS NEWVAL OLDVAL])
				       HASHTBL
				       (LIST ENTRY])

(UNS-INVERT-LEXICON
  [LAMBDA (LEXARRAY HASHTBL)                                 (* edited: " 5-Aug-84 22:25")
    (PROG ([BITTBL (MAKEBITTABLE (QUOTE (- < *]
	   ENTRY KEY)
          (CLRSTRHASH HASHTBL)
          (for I from 1 to (ARRAYSIZE LEXARRAY)
	     do (SETQ ENTRY (ELT LEXARRAY I))
		(SETQ KEY (INVERTLEXENTRY (fetch (LEXENTRY PRON) of ENTRY)
					  BITTBL))
		(MODSTRHASH KEY (FUNCTION [LAMBDA (OLDVAL NEWVAL)
				(CONS NEWVAL OLDVAL])
			    HASHTBL
			    (LIST ENTRY])

(UNSINVERTLEXENTRY
  [LAMBDA (ENTRY BITTBL)                                     (* edited: " 5-Aug-84 16:17")
    (PROG (CLASS KEY SYLKEY)
          (RETURN (for SYL in (SYLLABIFYLEXENTRY ENTRY BITTBL)
		     do [push SYLKEY (COND
				((OR (MEMBER 1 SYL)
				     (MEMBER 2 SYL))
				  (QUOTE STR-))
				(T (QUOTE UNS-]
			[COND
			  ((EQUAL (CAR SYLKEY)
				  (QUOTE UNS-))
			    (for PHONE in SYL
			       do (SETQ CLASS (GETHASH PHONE PHONEHASHTABLE))
				  (COND
				    (CLASS (push KEY CLASS]
		     finally (RETURN (CONCATLIST (NCONC (DREVERSE KEY)
							(DREVERSE SYLKEY])
)
(DECLARE: DOEVAL@COMPILE DONTCOPY

(ADDTOVAR GLOBALVARS PHONEHASHTABLE PHONELIST)
)
[SETQ PHONELIST
      (QUOTE ((V- (@ a c E e I i O o U u W x Y L M N X R %| ↑))
	      (S- (b d g p t k))
	      (N- (m n g))
	      (SF- (s z S Z C J))
	      (WF- (D T f v h))
	      (G- (l r w y]
(SETQ PHONEHASHTABLE (MAKEPHONEHASHTABLE))
(PUTPROPS HASHER COPYRIGHT (NONE))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (904 6794 (INVERT-LEXICON 914 . 1428) (INVERTLEXENTRY 1430 . 1993) (MAKEPHONEHASHTABLE 
1995 . 2345) (STR-INVERT-LEXICON 2347 . 2871) (STRINVERTLEXENTRY 2873 . 3504) (SYL-INVERT-LEXICON 3506
 . 3941) (SYLINVERTLEXENTRY 3943 . 4545) (SYLLABIFYLEXENTRY 4547 . 5054) (SYLPHONEINVERTLEXENTRY 5056
 . 5639) (UNS-INVERT-LEXICON 5641 . 6159) (UNSINVERTLEXENTRY 6161 . 6792)))))
STOP