uk.sor 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. ^0 нуль
  2. 1 один
  3. 2 два
  4. 3 три
  5. 4 чотири
  6. 5$ п’ять
  7. 5 п’ят
  8. 6$ шість
  9. 6 шіст
  10. 7 сім
  11. 8 вісім
  12. 9$ дев’ять
  13. 9 дев’ят
  14. 10 десять
  15. 11 одинадцять
  16. 12 дванадцять
  17. 13 тринадцять
  18. 14 чотирнадцять
  19. 15 п’ятнадцать
  20. 16 шістнадцять
  21. 17 сімнадцять
  22. 18 вісімнадцять
  23. 19 дев’ятнадцять
  24. ([23])(\d) $1|дцять[ $2]
  25. 4(\d) сорок[ $1]
  26. 9(\d) дев’яносто[ $1]
  27. (\d)(\d) $1десят[ $2]
  28. 1(\d\d) сто[ $1]
  29. 2(\d\d) двісті[ $1]
  30. ([34])(\d\d) $1ста[ $2]
  31. (\d)(\d\d) $1сот[ $2]
  32. (1|\d?[02-9]1)(\d{3}) $(f:$1) тисяча[ $2]
  33. ([234]|\d?[02-9][234])(\d{3}) $(f:$1) тисячі[ $2]
  34. (\d{1,3})(\d{3}) $1| тисяч[ $2]
  35. (1|\d?[02-9]1)(\d{6}) $1 мільйон[ $2]
  36. ([234]|\d?[02-9][234])(\d{6}) $1 мільйона[ $2]
  37. (\d{1,3})(\d{6}) $1 мільйонов[ $2]
  38. (1|\d?[02-9]1)(\d{9}) $1 мільярд[ $2]
  39. ([234]|\d?[02-9][234])(\d{9}) $1 мільярда[ $2]
  40. (\d{1,3})(\d{9}) $1 мільярдов[ $2]
  41. (1|\d?[02-9]1)(\d{12}) $1 трильйон[ $2]
  42. ([234]|\d?[02-9][234])(\d{12}) $1 трильйона[ $2]
  43. (\d{1,3})(\d{12}) $1 трильйонов[ $2]
  44. (1|\d?[02-9]1)(\d{15}) $1 квадрильйон[ $2]
  45. ([234]|\d?[02-9][234])(\d{15}) $1 квадрильйона[ $2]
  46. (\d{1,3})(\d{15}) $1 квадрильйонов[ $2]
  47. (1|\d?[02-9]1)(\d{18}) $1 квінтильйон[ $2]
  48. ([234]|\d?[02-9][234])(\d{18}) $1 квінтильйона[ $2]
  49. (\d{1,3})(\d{18}) $1 квінтильйонов[ $2]
  50. (1|\d?[02-9]1)(\d{21}) $1 секстильйон[ $2]
  51. ([234]|\d?[02-9][234])(\d{21}) $1 секстильйона[ $2]
  52. (\d{1,3})(\d{21}) $1 секстильйонов[ $2]
  53. (1|\d?[02-9]1)(\d{24}) $1 септильйон[ $2]
  54. ([234]|\d?[02-9][234])(\d{24}) $1 септильйона[ $2]
  55. (\d{1,3})(\d{24}) $1 септильйонов[ $2]
  56. # negative numbers
  57. [-−]1 мінус один
  58. [-−](\d+) мінус |$1
  59. # decimals
  60. "([-−]?)[.,](\d+)" $(\10.\2)
  61. "[-−]1[.,]" мінус одна ціла
  62. "([-−]?\d+[02-9]1|1)[.,]" $(f:|$1) ціла
  63. "([-−]?\d+)[.,]" $(f:|$1) цілий
  64. "([-−]?\d+[.,])1" $1| и одна десята
  65. "([-−]?\d+[.,])(\d)" $1| и $(f:|$2) десятий
  66. "([-−]?\d+[.,])([02-9]1)" $1| и $(f:|$2) сота
  67. "([-−]?\d+[.,])(\d\d)" $1| и $(f:|$2) сотий
  68. "([-−]?\d+[.,])(\d[02-9]1)" $1| и $(f:|$2) тисячна
  69. "([-−]?\d+[.,])(\d{3})" $1| и $(f:|$2) тисячний
  70. "([-−]?\d+[.,])(\d)(\d)(\d)(\d)" $1| |$2 |$3 |$4 |$5
  71. "([-−]?\d+[.,]\d*)(\d)" $1| |$2
  72. # female conversion
  73. f:(.*)один \1одна
  74. f:(.*)два \1дві
  75. f:(.*) \1
  76. # possessive (1-999) - used in ordinals
  77. "pos:(.* )?од(ин|на) ?" [$(pos:\1)]одного
  78. "pos:(.* )?дв[аі] ?" [$(pos:\1)]двох
  79. "pos:(.* )?три ?" [$(pos:\1)]трьох
  80. "pos:(.* )?чотири ?" [$(pos:\1)]чотирьох
  81. "pos:(.* )?вісім ?" [$(pos:\1)]восьми
  82. "pos:(.* )?([а-я]+)ь ?" [$(pos:\1)]\2и
  83. "pos:(.* )?сорок ?" [$(pos:\1)]сорока
  84. "pos:(.* )?([а-я]+)десят ?" [$(pos:\1)]\2десяти
  85. "pos:(.* )?([а-я]*)сто ?" [$(pos:\1)]\2сто
  86. "pos:(.*)двести ?" \1двохсот
  87. "pos:(.*)иста ?" \1ьохсот
  88. "pos:(.*)осемьсот ?" \1осьмисот
  89. "pos:(.*[^и])сот ?" \1исот
  90. pos:(.*) \1
  91. # currency
  92. # unit/subunit
  93. us:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \1
  94. up:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \2
  95. ug:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \3
  96. ss:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \4
  97. sp:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \5
  98. sg:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \6
  99. EUR:(\D+) $(\1: євро, євро, євро, цент, цента, центів)
  100. GBP:(\D+) $(\1: фунт стерлінгів, фунта стерлінгів, фунтів стерлінгів, пенні, пенса, пенсів)
  101. RUB:(\D+) $(\1: рубль, рубля, рублів, копійка, копійки, копійок)
  102. UAH:(\D+) $(\1: гривня, гривні, гривень, копійка, копійки, копійок)
  103. USD:(\D+) $(\1: долар США, долара США, доларів США, цент, цента, центів)
  104. "(UAH) ([-−]?1)([.,]00?)?" $(f:$2)|$(\1:us)
  105. "(UAH) ([-−]?\d*[02-9]1)([.,]00?)?" $(f:$2)|$(\1:us)
  106. "(UAH) ([-−]?[234])([.,]00?)?" $(f:$2)|$(\1:up)
  107. "(UAH) ([-−]?\d*[02-9][234])([.,]00?)?" $(f:$2)|$(\1:up)
  108. "(UAH) ([-−]?\d+)([.,]00?)?" $(f:$2)|$(\1:ug)
  109. "([A-Z]{3}) ([-−]?1)([.,]00?)?" $2|$(\1:us)
  110. "([A-Z]{3}) ([-−]?\d*[02-9]1)([.,]00?)?" $2|$(\1:us)
  111. "([A-Z]{3}) ([-−]?[234])([.,]00?)?" $2|$(\1:up)
  112. "([A-Z]{3}) ([-−]?\d*[02-9][234])([.,]00?)?" $2|$(\1:up)
  113. "([A-Z]{3}) ([-−]?\d+)([.,]00?)?" $2|$(\1:ug)
  114. "((RUB) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss)
  115. "((RUB) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]двi$(\2:sp)
  116. "((UAH) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss)
  117. "((UAH) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]двi$(\2:sp)
  118. "(([A-Z]{3}) [-−]?\d+)[.,](01)" $1 |$(1)$(\2:ss)
  119. "((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]2)" $1 $3|$(\2:sp)
  120. "(([A-Z]{3}) [-−]?\d+)[.,]([02-9][234])" $1 |$3$(\2:sp)
  121. "(([A-Z]{3}) [-−]?\d+)[.,](\d)" $1 |$(\30)$(\2:sg)
  122. "(([A-Z]{3}) [-−]?\d+)[.,](\d\d)" $1 |$3$(\2:sg)
  123. == ordinal-feminine ==
  124. 0 нульова
  125. ([-−]?\d+) $(ordinal-feminine |$1)
  126. (.*)один \1перша
  127. (.*)два \1друга
  128. (.*)три \1третя
  129. (.*)чотири \1четверта
  130. (.*)шість \1шоста
  131. (.*)ть \1та
  132. (.*)вісім \1восьма
  133. (.*)сім \1сьома
  134. (.*)к \1кова
  135. (.*)осто \1оста
  136. (.*)сто \1сота
  137. (.*)двісті \1двохсота
  138. (.*)иста \1ьохсота
  139. (.*)шістсот \2шестисота
  140. (.*)вісімсот \1восьмисота
  141. (.*)сімсот \2семисота
  142. (.*)сот \1исота
  143. "одна тисяча" тисячна
  144. "(.* )тисяч[аі]?" $(pos:\1)тисячна
  145. "один (\w+ль\w+)" \1на
  146. "(.* )([а-я]+ль[а-я]+)(а|ов)" $(pos:\1)\2на
  147. "(.* )([а-я]+ль[а-я]+)" $(pos:\1)\2на
  148. (.*) \1а
  149. == ordinal-neuter ==
  150. ([-−]?\d+) $(ordinal-neuter |$(ordinal-feminine \1))
  151. (.*)а \1е
  152. (.*)я \1є
  153. (.*) \1
  154. == ordinal(-masculine)? ==
  155. ([-−]?\d+) $(ordinal-masculine |$(ordinal-feminine \2))
  156. (.*)а \2ий
  157. (.*)я \2ій
  158. (.*) \2
  159. == ordinal-number-feminine ==
  160. (\d+) \1-$(ordinal-number-neuter |$(ordinal-feminine \1))
  161. == ordinal-number-neuter ==
  162. (\d+) \1-$(ordinal-number-neuter |$(ordinal-neuter \1))
  163. # use last two letters to get a consonant
  164. .*(..) \1
  165. == ordinal-number(-masculine)? ==
  166. (\d+) \2-й
  167. == help ==
  168. "" |$(1)|, |$(2)|, |$(3)|\n$(help ordinal-feminine)$(help ordinal-masculine)$(help ordinal-neuter)$(help ordinal-number-feminine)$(help ordinal-number-masculine)$(help ordinal-number-neuter)
  169. (.*) \1: |$(\1 1)|, |$(\1 2)|, |$(\1 3)|\n