egg-980703.
[elisp/egg.git] / its / erpin.el
index 83b1d6f..087c9c0 100644 (file)
 (defvar its-erpin-tw-close-braket "\e$(G!W\e(B" "*]") ; "\e$(G!c\e(B"
 
 (eval-when-compile
-  (defsubst its-defoutput* (input display)
-    (its-set-output (its-goto-state input nil t) display))
-
   (defun its-define-erpin-qingsheng (shengmu yunmu &optional y)
     (let ((input (concat (car shengmu) yunmu))
-         (output (concat (cdr shengmu) (if y y yunmu) "\e(0@\e(B"))
-         state)
-      (setq state (its-goto-state input nil t))
-      (its-set-output state output)
-      (its-make-next-state state -1 input              output)
-      (its-make-next-state state ?  (concat input " ") output)
-      (its-make-next-state state ?0 (concat input "0") output)
-      (its-define-otherwise state (its-make-otherwise output
-                                                     its-otherwise-back-one))
-      state))
+         (output (concat (cdr shengmu) (if y y yunmu) "\e(0@\e(B")))
+      (prog1
+         (its-defrule input output)
+       (its-defrule (concat input " ") output)
+       (its-defrule (concat input "0") output))))
 
   (defmacro its-do-erpin-table (list)
     `(progn
        (while ss
         (setq sa (caar ss) sd (cdar ss) 
               state (its-define-erpin-qingsheng (car ss) y y5))
-        (its-make-next-state state ?1 (concat sa y 1) (concat sd y1 "\e(0@\e(B"))
-        (its-make-next-state state ?2 (concat sa y 2) (concat sd y2 "\e(0@\e(B"))
-        (its-make-next-state state ?3 (concat sa y 3) (concat sd y3 "\e(0@\e(B"))
-        (its-make-next-state state ?4 (concat sa y 4) (concat sd y4 "\e(0@\e(B"))
+        (its-make-next-state state ?1 (concat sd y1 "\e(0@\e(B"))
+        (its-make-next-state state ?2 (concat sd y2 "\e(0@\e(B"))
+        (its-make-next-state state ?3 (concat sd y3 "\e(0@\e(B"))
+        (its-make-next-state state ?4 (concat sd y4 "\e(0@\e(B"))
         (setq ss (cdr ss)))))
 
   (defmacro its-define-erpin-table ()
           (un   '("z"  "\e(01\e(Bn"   "\e(02\e(Bn"   "\e(03\e(Bn"   "\e(04\e(Bn"   "un"  ))
           (uo   '("o"  "u\e(0-\e(B"   "u\e(0.\e(B"   "u\e(0/\e(B"   "u\e(00\e(B"   "uo"  )))
 
-       (dolist (SHENG (list B C D F G H J K L M N P Q R S T W X Y Z I U V))
-        (its-defrule (car SHENG) (cdr SHENG)))
-
        (its-do-erpin-table
        (((O B C D F G H   K L M N P     S T W   Y Z I U V) . a)
         ((O B C D   G H   K L M N P     S T W     Z I U V) . ai)
         ((J Q X) . (cons "t" (cdr ing )))
         ((J Q X) . (cons "q" (cdr iu  )))))
 
+       (dolist (SHENG (list B C D F G H J K L M N P Q R S T W X Y Z I U V))
+        (its-defoutput (car SHENG) (cdr SHENG)))
+
        (its-define-erpin-qingsheng     H        "m")
        (its-define-erpin-qingsheng     H        "n"    "ng")
        (its-define-erpin-qingsheng     O        "m")
        (its-defrule    "on4"   "\e(0?@\e(B"))))
 
 (define-its-state-machine its-erpin-cn-map
-  "erpin-cn" "\e$A6~\e(BG" 'Chinese-GB
+  "erpin-cn" "\e$A6~\e(BG" Chinese-GB
   "Map for Erpin input. (Chinese-GB)"
 
   (defconst its-quanjiao-escape "Z")
   (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn)
 
   (its-define-erpin-table)
-  (its-defoutput*      "b "    "\e$A2;\e(B")
-  (its-defoutput*      "c "    "\e$A2E\e(B")
-  (its-defoutput*      "ch "   "\e$A3v\e(B")
-  (its-defoutput*      "d "    "\e$A5D\e(B")
-  (its-defoutput*      "f "    "\e$A74\e(B")
-  (its-defoutput*      "g "    "\e$A8v\e(B")
-  (its-defoutput*      "h "    "\e$A:M\e(B")
-  (its-defoutput*      "i "    "\e$AR;\e(B")
-  (its-defoutput*      "j "    "\e$A>M\e(B")
-  (its-defoutput*      "k "    "\e$A?I\e(B")
-  (its-defoutput*      "l "    "\e$AAK\e(B")
-  (its-defoutput*      "m "    "\e$AC?\e(B")
-  (its-defoutput*      "n "    "\e$ADj\e(B")
-  (its-defoutput*      "p "    "\e$AEz\e(B")
-  (its-defoutput*      "q "    "\e$AH%\e(B")
-  (its-defoutput*      "r "    "\e$AHU\e(B")
-  (its-defoutput*      "s "    "\e$AJG\e(B")
-  (its-defoutput*      "u "    "\e$AIO\e(B")
-  (its-defoutput*      "t "    "\e$AK{\e(B")
-  (its-defoutput*      "w "    "\e$ANR\e(B")
-  (its-defoutput*      "x "    "\e$AOr\e(B")
-  (its-defoutput*      "y "    "\e$ASV\e(B")
-  (its-defoutput*      "z "    "\e$ATZ\e(B")
-  (its-defoutput*      "v "    "\e$AWE\e(B")
+  (its-defrule "b "    "\e$A2;\e(B")
+  (its-defrule "c "    "\e$A2E\e(B")
+  (its-defrule "ch "   "\e$A3v\e(B")
+  (its-defrule "d "    "\e$A5D\e(B")
+  (its-defrule "f "    "\e$A74\e(B")
+  (its-defrule "g "    "\e$A8v\e(B")
+  (its-defrule "h "    "\e$A:M\e(B")
+  (its-defrule "i "    "\e$AR;\e(B")
+  (its-defrule "j "    "\e$A>M\e(B")
+  (its-defrule "k "    "\e$A?I\e(B")
+  (its-defrule "l "    "\e$AAK\e(B")
+  (its-defrule "m "    "\e$AC?\e(B")
+  (its-defrule "n "    "\e$ADj\e(B")
+  (its-defrule "p "    "\e$AEz\e(B")
+  (its-defrule "q "    "\e$AH%\e(B")
+  (its-defrule "r "    "\e$AHU\e(B")
+  (its-defrule "s "    "\e$AJG\e(B")
+  (its-defrule "u "    "\e$AIO\e(B")
+  (its-defrule "t "    "\e$AK{\e(B")
+  (its-defrule "w "    "\e$ANR\e(B")
+  (its-defrule "x "    "\e$AOr\e(B")
+  (its-defrule "y "    "\e$ASV\e(B")
+  (its-defrule "z "    "\e$ATZ\e(B")
+  (its-defrule "v "    "\e$AWE\e(B")
 
   (dolist (ascii '(("0" . "\e$A#0\e(B")  ("1" . "\e$A#1\e(B")  ("2" . "\e$A#2\e(B")  ("3" . "\e$A#3\e(B")
                   ("4" . "\e$A#4\e(B")  ("5" . "\e$A#5\e(B")  ("6" . "\e$A#6\e(B")  ("7" . "\e$A#7\e(B")
   (its-defrule "!"     "\e$A#!\e(B"))
 
 (define-its-state-machine its-erpin-tw-map
-  "erpin-tw" "\e$(GD(\e(BC" 'Chinese-CNS
+  "erpin-tw" "\e$(GD(\e(BC" Chinese-CNS
   "Map for Erpin input."
 
   (defconst its-quanjiao-escape "Z")
   (its-defrule-select-mode-temporally "Q" quanjiao-downcase-cn)
 
   (its-define-erpin-table)
-  (its-defoutput*      "b "    "\e$(GDb\e(B")
-  (its-defoutput*      "c "    "\e$(GD_\e(B")
-  (its-defoutput*      "ch "   "\e$(GEx\e(B")
-  (its-defoutput*      "d "    "\e$(GN{\e(B")
-  (its-defoutput*      "f "    "\e$(GE0\e(B")
-  (its-defoutput*      "g "    "\e$(GT6\e(B")
-  (its-defoutput*      "h "    "\e$(GLO\e(B")
-  (its-defoutput*      "i "    "\e$(GD!\e(B")
-  (its-defoutput*      "j "    "\e$(G^s\e(B")
-  (its-defoutput*      "k "    "\e$(GF+\e(B")
-  (its-defoutput*      "l "    "\e$(GD'\e(B")
-  (its-defoutput*      "m "    "\e$(GJd\e(B")
-  (its-defoutput*      "n "    "\e$(GH!\e(B")
-  (its-defoutput*      "p "    "\e$(GJG\e(B")
-  (its-defoutput*      "q "    "\e$(GF*\e(B")
-  (its-defoutput*      "r "    "\e$(GEJ\e(B")
-  (its-defoutput*      "s "    "\e$(GQR\e(B")
-  (its-defoutput*      "u "    "\e$(GD8\e(B")
-  (its-defoutput*      "t "    "\e$(GEl\e(B")
-  (its-defoutput*      "w "    "\e$(GJ<\e(B")
-  (its-defoutput*      "x "    "\e$(GGW\e(B")
-  (its-defoutput*      "y "    "\e$(GD4\e(B")
-  (its-defoutput*      "z "    "\e$(GGc\e(B")
-  (its-defoutput*      "v "    "\e$(Gaa\e(B")
+  (its-defrule "b "    "\e$(GDb\e(B")
+  (its-defrule "c "    "\e$(GD_\e(B")
+  (its-defrule "ch "   "\e$(GEx\e(B")
+  (its-defrule "d "    "\e$(GN{\e(B")
+  (its-defrule "f "    "\e$(GE0\e(B")
+  (its-defrule "g "    "\e$(GT6\e(B")
+  (its-defrule "h "    "\e$(GLO\e(B")
+  (its-defrule "i "    "\e$(GD!\e(B")
+  (its-defrule "j "    "\e$(G^s\e(B")
+  (its-defrule "k "    "\e$(GF+\e(B")
+  (its-defrule "l "    "\e$(GD'\e(B")
+  (its-defrule "m "    "\e$(GJd\e(B")
+  (its-defrule "n "    "\e$(GH!\e(B")
+  (its-defrule "p "    "\e$(GJG\e(B")
+  (its-defrule "q "    "\e$(GF*\e(B")
+  (its-defrule "r "    "\e$(GEJ\e(B")
+  (its-defrule "s "    "\e$(GQR\e(B")
+  (its-defrule "u "    "\e$(GD8\e(B")
+  (its-defrule "t "    "\e$(GEl\e(B")
+  (its-defrule "w "    "\e$(GJ<\e(B")
+  (its-defrule "x "    "\e$(GGW\e(B")
+  (its-defrule "y "    "\e$(GD4\e(B")
+  (its-defrule "z "    "\e$(GGc\e(B")
+  (its-defrule "v "    "\e$(Gaa\e(B")
 
   (dolist (ascii '(("0" . "\e$(G$!\e(B")  ("1" . "\e$(G$"\e(B")  ("2" . "\e$(G$#\e(B")  ("3" . "\e$(G$$\e(B")
                   ("4" . "\e$(G$%\e(B")  ("5" . "\e$(G$&\e(B")  ("6" . "\e$(G$'\e(B")  ("7" . "\e$(G$(\e(B")
        (its-defrule "="  "\e$A#=\e(B")  (its-defrule "`"  "\e$A#`\e(B")
        (its-defrule "\\" "\e$A#\\e(B")  (its-defrule "|"  "\e$A#|\e(B")
        (its-defrule "_"  "\e$A#_\e(B")  (its-defrule "+"  "\e$A#+\e(B")
-       (its-defrule "{"  "\e$(G!B\e(B")  (its-defrule "}"  "\e$(G!C\e(B")
+       (its-defrule "{"  "\e$A#{\e(B")  (its-defrule "}"  "\e$A#}\e(B")
        (its-defrule "\"" "\e$A#"\e(B")  (its-defrule "'"  "\e$A#'\e(B")
        (its-defrule "<"  "\e$A#<\e(B")  (its-defrule ">"  "\e$A#>\e(B"))
     (progn
        (its-defrule "="  "\e$(G"8\e(B")  (its-defrule "`"  "\e$(G!j\e(B")
        (its-defrule "\\" "\e$(G"b\e(B")  (its-defrule "|"  "\e$(G"^\e(B")
        (its-defrule "_"  "\e$(G"%\e(B")  (its-defrule "+"  "\e$(G"0\e(B")
-       (its-defrule "{"  "\e$A#{\e(B")  (its-defrule "}"  "\e$(G!a\e(B")
+       (its-defrule "{"  "\e$(G!B\e(B")  (its-defrule "}"  "\e$(G!C\e(B")
        (its-defrule "\"" "\e$(G!i\e(B")  (its-defrule "'"  "\e$(G!k\e(B")
        (its-defrule "<"  "\e$(G"6\e(B")  (its-defrule ">"  "\e$(G"7\e(B"))
     (progn