#
#	(c) Jirka Hanika <geo@ff.cuni.cz>
#

$voiced    = bdďgvzžZŽhř
$voiceless = ptťkfsšcčxŘ
# $fric      = szšžfvhx
# $afric     = cZčŽ
# $stop      = ptťkbdďg
$nasal     = mnňN
$NASAL     = MQŇW
$sonant    = jlr$nasal
$SONANT    = JLR$NASAL
$short     = aeiouyě
$long      = áéíóúýě
$diphtong  = OAE
$vowel     = $short$long$diphtong
$consonant = $voiced$voiceless$sonant
$everywhere= !_!
$numbers   = 1234567890
$sonority  = 0'<$voiceless$voiced$SONANT<$nasal<l<rj<$vowel   ;l<r viz "umrlec" etc. Ani systematické, ani bezpečné.

$lower_case = aábcčdďeéěfghiíjklmnňoópqrřsštťuúůvwxyýzž
$upper_case = AÁBCČDĎEÉĚFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ
$letter = ${lower_case}${upper_case}

#  \Z označuje tečku označující řadovou číslovku.  Tu je nutno rozlišit
#  od tečky obyčejné, větu vydělující, nežli se ztratí rozdíl mezi velkými
#  a malými písmeny.  Následuje-li totiž za tečkou velké písmeno, posuzuje
#  se vždy jako konec věty.
#  Některé významy tečky, jako např. desetinná tečka, už vyřešil parser,
#  a to nezávisle na jazyce.  Ty tedy není nutno brát v potaz.

inside .  sent
{
	regex /([0123456789])\$/\1\Z/	word
}
regex  /(\Z)\\.([${lower_case}])/\1\2/	text
regex  /\Z(\\.)([${upper_case}])/\1\2/	text


# Pravidla pro čtení zkratek apod.: velké písmeno na jiném,
#   než prvním místě ve slově indikuje zkratku a hláskuje se.
#   Stejně tak jednotlivé písmeno před nebo za cifrou nebo
#   speciálním znakem nebo hláskovanou částí slova.

regress  ${upper_case}>${lower_case}(0_${lower_case})			word
regress  ${upper_case}>${lower_case}(0_${lower_case})			colon
regress	 ${lower_case}>${upper_case}(0_!${lower_case})			colon
regress  ${lower_case}>${upper_case}(!${lower_case}_!$letter)		colon
if	spellout
{
	regex	/^([^\Y\ ~]*)(.\?)\$/\1\Y\1\2/	word
	progress ${lower_case}>${upper_case}(\Y${upper_case}_!)
	regex	/\Y/./		text
}
subst	 abbrevs.dic							colon
regress  ${upper_case}>${lower_case}($everywhere)			colon


@include "numerals.rul"

 subst	   main.dic		   ;Různé výjimky

 progress  ů>ú($everywhere)

 progress  0>s(x_!)
 progress  u0>0v(q_!)              ; Rozložení x,q na ks, kv
 regress   xq>k($everywhere)
 regress   h>x(c_!)                ; Spřežka ch > x
 regress   zž>ZŽ(d_!)              ; Spřežky dz,dž > Z,Ž
 progress  cd>0(!_xZŽ)
 progress  h>x(s_!)                ; Pražské sh

# Následující pravidla jednak změní věty vydělené dvojtečkou
#   na věty vydělené tečkou (to je spíše špatně než dobře),
#   dále pak označí dvojtečkou (místo otazníku) ty věty, které
#   obsahovaly ve své první klausi některé ze slov uvedených
#   ve slovníku wh.dic, neměly tuto klausi zvlášť vydělenou
#   žádnou interpunkcí, a byly samy vyděleny otazníkem.
#
# Fonetik vidí, že jsem právě "definoval" doplňovací otázky.

 progress  :>.($everywhere)	text	sent
 subst     wh.dic				; Doplňovací otázky
 raise     Q:_			colon	phone
 progress  Q>_(!0_!)		sent	colon	;  jen v první klausi
 raise     Q:?			sent	colon
 progress  Q>0($everywhere)			;  úklid všech úrovní
 progress  Q>_($everywhere)	sent	colon
 progress  Q>:($everywhere)	text	sent

 if        colloquial
 {
	regress j>J(0_ds)	; fixme: random environment
 }

 regress   i>j($vowel_0)   syll
 subst     syll.dic		; Rozsadit vokály
 regress   0>'(0_$vowel)	; Rázy

 with	preps.dic		word	word
 {
	regress   _\ ~>P(!_!)	word   word
 }
 with	"se"
 {
	regress   _\ ~>P(!_!)	word   word	; "se" nesmí být v preps.dic
 }
 regress	P>\ (!_P)	colon  word	; dvě předložky za sebou

 regress  _\ ~>F(!_0)		colon	word

 progress  0>S(!S_szšž)	 colon  
 progress  S>0(!_!0)     word   ; "S" jen před hranicí slov, za níž je sykavka
 progress  0>S(0_s)	 colon	; "S" před první hláskou v klausi
 inside  P
 {
	prep	"Sse,se seS,se SseS,se"	  ; "se" jako předložka
 }
 progress  S>0($everywhere)

 inside	 P			word
 {
	prep	preps.dic	word
 }
 progress  P>\ ($everywhere)	word	word

 regress   b>0(!_b)	syll	; pochybný heuristický odstaveček
 regress   n>0(!_nň)	syll	; namířený proti geminátám
 regress   s>0(!_s)	syll
 regress   t>0(!_t)	syll
 regress   f>0(!_f)	syll

 progress  ř>Ř($voiceless_!0) syll ; je už zde kvůli "k řízení [gřízeňí]" "křeč [kŘeč]"

 regress   $sonant>$SONANT(0_!)  syll
 syll      $sonority	syll	; Rozklad_na_slabiky
 regress   $SONANT>$sonant(!_!)

 prep	nonsyl.dic		syll


#   postp     postps.dic              ; jednou by se mělo vrátit

 regress   h>0(t_!)		; pathologie, plethora, thanatos. Pochybné.

 regress   $voiced>${voiceless}(!_$voiceless&0')       	; Asimilace znělosti
 regress   $voiceless>$voiced(!_$voiced!v)       colon

 if	   colloquial
 {
	subst	casual.dic
	regress J>0(!_!)
	regress '>v(!_o)	; "okno" [vokno]
 }

 regress   0>n(m_ě)
 regress   dtn>ďťň(!_iíě)
 regress   ě>e(ďťň_!)
 regress   0>j(!_ě)
 regress   ě>e($everywhere)

 progress  yý>ií($everywhere)

 progress  tkfslmn>TKFSLMN(i_0)
 progress  i>j(oae_TKFSLMN)
 progress  TKFSLMN>tkfslmn(!_!)

 progress  n>N(!_kg)

 progress  w>u($vowel_$consonant&0)
 progress  w>v($everywhere)     ; většinou ale "w" odstraní výjimky, řekněme

				; zde bývala eliminace geminát
				; zde býval rozklad na slabiky


 progress  oae>OAE(!_u)	syll	; Dvojhlásky
 regress   u>0(OAE_!)	syll

 regress   ZŽ>DĎ(!_$vowel)	; toto by mělo přijít do inventáře (traditnl.dph);
 regress   0>d(!_DĎ)		; rozkládá se zde dz, dž (representované Z,Ž)
 regress   DĎ>zž(!_!)		; na d-z, d-ž, pokud následuje vokál.

# progress  0>~($vowel_0) syll	; Označení otevřených vokalických slabik tildou
# raise     ~:!		 syll	; FIXME!!!! slabikotvorné
# progress  ~>0($vowel_0) syll

# Následující odstavec má za cíl označit všechny otevřené slabiky tildou.
#   Ve zavřených slabikách se objeví příznak "C" (coda), ten se pak posune
#   do slabičné úrovně, tam se pak nezavřené slabiky prohlásí za otevřené
#   a pak už je možno C odstranit z hláskové i slabičné úrovně.

$syllabic = !0$vowel_!0$vowel	; syllabic consonant (environment)

 progress   0>C($vowel_!0)		 syll	 ; C za nekoncovou samohlásku
 progress   $sonant>$SONANT($syllabic)   syll
 progress   0>C($SONANT_!) 		 syll	 ; C za slabikotvornou sonoru
 progress   $SONANT>$sonant($everywhere) syll
 raise      C:!			  	 syll	 ; posuň "C" do slabičné úrovně
 progress   _|>~($everywhere)		 word	syll
 progress   C>_($everywhere)		 word	syll
 progress   C>0($everywhere)		 syll	phone

