("(RH)?(Vn?)((J?HR)?m?u?b?p?n?a?[sS]?t?A?)"
< | (1 = =) (2 :otf=deva=nukt+) (3 = *) | >)
- ;; Ordinary syllables
+ ;; Consonant-based syllables
;;1 23 4
("([CR]n?((J?H|HJ?)[CR]n?)*)(H[NJ]?|m?u?b?p?n?a?[sS]?t?A?)"
< |
|
(1 (cond ("RHJ" :otf=deva=half+)
("RH" :otf=deva=rphf+)))
- (2 (cond ("(.H)(.+)" (1 :otf=deva=half+) (2 :otf=deva=blwf,half+))
- (".+" :otf=deva=blwf,half+)))
+ (2 (cond ("(.H)J?(.*)" (1 :otf=deva=half+) (2 lang-forms *))
+ (".+" lang-forms *)))
(3 = =) |)
;; Other syllables
|
(1 (cond ("RHJ" :otf=gujr=half+)
("RH" :otf=gujr=rphf+)))
- (2 (cond ("(.H)(.+)" (1 :otf=gujr=half+) (2 :otf=gujr=blwf,half+))
- (".+" :otf=gujr=blwf,half+)))
+ (2 (cond ("(.H)J?(.*)" (1 :otf=gujr=half+) (2 lang-forms *))
+ (".+" lang-forms *)))
(3 = =) |)
;; Other syllables
| (3 = *)
(1 (cond ("RHJ" :otf=gujr=half+)
("RH" :otf=gujr=rphf+)))
- (2 (cond ("(.H)(.+)" (1 :otf=gujr=half+) (2 :otf=gujr=blwf,half+))
- (".+" :otf=gujr=blwf,half+)))
+ (2 (cond ("(.H)J?(.*)" (1 :otf=gujr=half+) (2 lang-forms *))
+ (".+" lang-forms *)))
(5 = *) (4 = *) (6 = *) |)
("." =))
- *))
+ *)
+
+ (lang-forms
+ (cond
+ ("(.H)J" (1 :otf=gujr=half+))
+ (".H" :otf=gujr=blwf,half+)
+ ("." =)))
+ )
;; Stage 3
;; Final reordering #1 (Move pre-base matra after the last halant)
(reorder
("(.|.+([^YJ]|JY|HJ))((J?HY)*)$"
- (1 reorder-BR *) (3 reorder-Y *))
- ("(.*)(.HJ)$"
- (1 reorder-BR) (2 = *)))
+ (1 reorder-BR *) (3 reorder-Y *)))
(reorder-BR
(cond