]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve some big regexps
authorMattias Engdegård <mattiase@acm.org>
Wed, 5 Jul 2023 13:25:30 +0000 (15:25 +0200)
committerMattias Engdegård <mattiase@acm.org>
Wed, 5 Jul 2023 17:32:18 +0000 (19:32 +0200)
* lisp/language/lao-util.el (lao-transcription-pattern):
Remove duplicate definition.
* lisp/language/tibetan.el (tibetan-regexp, tibetan-precomposed-regexp)
(tibetan-precomposition-rule-regexp): Use regexp-opt.

lisp/language/lao-util.el
lisp/language/tibetan.el

index 6b9a8984414e1bfe3b3ebc1e5e6297e7561f20d6..33e98a60d63e203195369ddbffa42cdec8760ae8 100644 (file)
     ("\\\\" . "ໆ")
     ("\\$" . "ຯ")))
 
-(defconst lao-transcription-pattern
-  (concat
-   "\\("
-   (mapconcat 'car lao-transcription-consonant-alist "\\|")
-   "\\)\\("
-   (mapconcat 'car lao-transcription-semi-vowel-alist "\\|")
-   "\\)?\\(\\("
-   (mapconcat 'car lao-transcription-vowel-alist "\\|")
-   "\\)\\("
-   (mapconcat 'car lao-transcription-maa-sakod-alist "\\|")
-   "\\)?\\("
-   (mapconcat (lambda (x) (regexp-quote (car x)))
-             lao-transcription-tone-alist "\\|")
-   "\\)?\\)?\\|"
-   (mapconcat (lambda (x) (regexp-quote (car x)))
-             lao-transcription-punctuation-alist "\\|")
-   )
-  "Regexp of Roman transcription pattern for one Lao syllable.")
-
 (defconst lao-transcription-pattern
   (concat
    "\\("
index 1292092c582221fcb3d5f8f1668d6efea8439cfe..2249fa467b1a26fdd49d64e8fa682c7a908c4c1d 100644 (file)
     ("སྨ" . "")))
 
 (defconst tibetan-regexp
-  (let (pattern)
-    (dolist (alist (list tibetan-precomposed-transcription-alist
-                        tibetan-consonant-transcription-alist
-                        tibetan-vowel-transcription-alist
-                        tibetan-modifier-transcription-alist
-                        tibetan-subjoined-transcription-alist)
-                  (apply #'concat (nreverse (cdr pattern))))
-      (dolist (key-val alist)
-       (setq pattern (cons "\\|" (cons (regexp-quote (car key-val))
-                                       pattern))))))
+  (regexp-opt
+   (mapcar (lambda (x) (regexp-quote (car x)))
+           (append tibetan-precomposed-transcription-alist
+                  tibetan-consonant-transcription-alist
+                  tibetan-vowel-transcription-alist
+                  tibetan-modifier-transcription-alist
+                  tibetan-subjoined-transcription-alist)))
   "Regexp matching a Tibetan transcription of a composable Tibetan sequence.
 The result of matching is to be used for indexing alists at conversion
 from a roman transcription to the corresponding Tibetan character.")
 
 (defvar tibetan-precomposed-regexp
   (purecopy
-  (let ((l tibetan-precomposed-transcription-alist)
-       temp)
-    (setq temp "^\\(")
-    (setq temp
-         (concat temp (car (car l))))
-    (setq l (cdr l))
-    (while l
-      (setq temp
-           (concat temp "\\|" (car (car l))))
-      (setq l (cdr l)))
-    (concat temp "\\)")))
+   (concat "^" (regexp-opt
+                (mapcar #'car tibetan-precomposed-transcription-alist)
+                t)))
   "Regexp string to match a romanized Tibetan complex consonant.
 The result of matching is to be used for indexing alists when the input key
 from an input method is converted to the corresponding precomposed glyph.")
 
 (defvar tibetan-precomposition-rule-regexp
   (purecopy
-  (let ((l tibetan-precomposition-rule-alist)
-       temp)
-    (setq temp "\\(")
-    (setq temp (concat temp (car (car l))))
-    (setq l (cdr l))
-    (while l
-      (setq temp (concat temp "\\|" (car (car l))))
-      (setq l (cdr l)))
-    (concat temp "\\)")))
+   (regexp-opt (mapcar #'car tibetan-precomposition-rule-alist) t))
   "Regexp string to match a sequence of Tibetan consonantic components.
 That is, one base consonant and one or more subjoined consonants.
 The result of matching is to be used for indexing alist when the component