hu.sor 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. ^0 nulla
  2. 1 egy
  3. 2$ kettő
  4. 2 két
  5. 3 három
  6. 4 négy
  7. 5 öt
  8. 6 hat
  9. 7 hét
  10. 8 nyolc
  11. 9 kilenc
  12. 10 tíz
  13. 1(\d) tizen$1
  14. 20 húsz
  15. 2(\d) huszon$1
  16. 3(\d) harminc$1
  17. 4(\d) negyven$1
  18. 5(\d) ötven$1
  19. 6(\d) hatvan$1
  20. 7(\d) hetven$1
  21. 8(\d) nyolcvan$1
  22. 9(\d) kilencven$1
  23. 1(\d\d) száz$1
  24. (\d)(\d\d) $1száz$2
  25. 11(\d{2}) ezeregy$(1\1)
  26. 1(\d{3}) ezer$1
  27. (\d{1,3})(\d{3}) $1ezer[-$2]
  28. (\d{1,3})(\d{6}) $1millió[-$2]
  29. (\d{1,3})(\d{9}) $1milliárd[-$2]
  30. (\d{1,3})(\d{12}) $1billió[-$2]
  31. (\d{1,3})(\d{15}) $1billiárd[-$2]
  32. (\d{1,3})(\d{18}) $1trillió[-$2]
  33. (\d{1,3})(\d{21}) $1trilliárd[-$2]
  34. # negative numbers
  35. [-−](\d+) mínusz |$1
  36. # decimals
  37. "([-−]?\d+)[.,](\d)" |$1| egész |$2 tized
  38. "([-−]?\d+)[.,](\d\d)" |$1| egész |$2 század
  39. "([-−]?\d+)[.,](\d{3})" |$1| egész |$2 ezred
  40. "([-−]?\d+)[.,](\d)(\d)(\d)(\d)" |$1| egész |$2| |$3| |$4| |$5|
  41. "([-−]?\d+[.,]\d+)(\d)" $1 |$2|
  42. # currency
  43. # unit/subunit
  44. u:([^,]*),([^,]*) \1
  45. s:([^,]*),([^,]*) \2
  46. AUD:(.) $(\1: ausztrál dollár, cent)
  47. BGN:(.) $(\1: bolgár leva, sztotinka)
  48. BRL:(.) $(\1: brazil real, centavo)
  49. CAD:(.) $(\1: kanadai dollár, cent)
  50. CHF:(.) $(\1: svájci frank, rappen)
  51. CNY:(.) $(\1: kínai jüan, fen)
  52. CZK:(.) $(\1: cseh korona, haléř)
  53. DKK:(.) $(\1: dán korona, øre)
  54. EEK:(.) $(\1: észt korona, sent)
  55. EUR:(.) $(\1: euró, cent)
  56. GBP:(.) $(\1: font sterling, penny)
  57. HKD:(.) $(\1: hongkongi dollár, cent)
  58. HRK:(.) $(\1: horvát kuna, lipa)
  59. HUF:(.) $(\1: forint, fillér)
  60. ISK:(.) $(\1: izlandi korona, eyrir)
  61. JPY:(.) $(\1: japán jen, szen)
  62. KRW:(.) $(\1: dél-koreai von, cson)
  63. LTL:(.) $(\1: litván litas, centas)
  64. LVL:(.) $(\1: lett lat, santīm)
  65. MXN:(.) $(\1: mexikói peso, centavo)
  66. NOK:(.) $(\1: norvég korona, øre)
  67. NZD:(.) $(\1: új-zélandi dollár, cent)
  68. PLN:(.) $(\1: lengyel złoty, grosz)
  69. RON:(.) $(\1: román lej, bani)
  70. RSD:(.) $(\1: szerb dinár, para)
  71. RUB:(.) $(\1: orosz rubel, kopejka)
  72. SEK:(.) $(\1: svéd korona, öre)
  73. SGD:(.) $(\1: szingapúri dollár, cent)
  74. TRY:(.) $(\1: török líra, kuruş)
  75. UAH:(.) $(\1: ukrán hrivnya, kopijka)
  76. USD:(.) $(\1: USA-dollár, cent)
  77. ZAR:(.) $(\1: dél-afrikai rand, cent)
  78. "(JPY [-−]?\d+)[.,](\d\d)0" $1
  79. "(JPY [-−]?\d+[.,]\d\d)(\d)" $1 $2 rin
  80. "([A-Z]{3}) ([-−]?\d+)([.,]00?)?" $2$(\1:u)
  81. "(CNY [-−]?\d+)[.,](\d)0?" $1 $2 jiao
  82. "(CNY [-−]?\d+[.,]\d)(\d)" $1 $2 fen
  83. "(([A-Z]{3}) [-−]?\d+)[.,](\d)" $1 $(\30)$(\2:s)
  84. "(([A-Z]{3}) [-−]?\d+)[.,](\d\d)" $1 $3$(\2:s)
  85. # Article a/az (number name)
  86. "article (cardinal |formal ){2}(([a-zA-Z]+ )*1\d{2}([.,]\d*)?)" az $(formal \2)
  87. "article (cardinal |ordinal )(([a-zA-Z]+ )*1(\d{3})*([.,]\d*)?)" az $(\1\2)
  88. "article (cardinal |ordinal )(([a-zA-Z]+ )*5.*)" az $(\1\2)
  89. "article (cardinal |ordinal )([^-].*)" a $(\1\2)
  90. # Article a/az + optional cardinal/ordinal + suffixation
  91. "article ((cardinal |ordinal )?(-[^0-9]+) [{\(\[]?(\d+|[a-zA-Z])[}\)\]]?)" $(article $(\1))
  92. # cardinal/ordinal + suffixation
  93. "(cardinal )(-[^0-9]+) ([{\(\[]?(\d+)[}\)\]]?)" $(\1$(\2 \4))
  94. "(ordinal )(-[^0-9]+) ([{\(\[]?(\d+)[}\)\]]?)" $(\1$(\2 \4.))
  95. "(cardinal |ordinal )(\d+)[.]?-([a-záéóöőüű]*)$" $(fix-grammar $(\1\2)|\3)
  96. == fix-grammar ==
  97. (.*)elsői \1elseji
  98. (.*)elsőei \1elsejei
  99. (.*)elsőe(.*) \1első\2
  100. (.*)első(j.*) \1else\2
  101. (.*)hároma(t|s) \1hárma\2
  102. (.*)húszsz(.*) \1hússz\2
  103. (.*)gygy(.*) \1ggy\2
  104. (.*) \1
  105. # Article a/az (number, month names and other words)
  106. == article ==
  107. "(-[a-záéö]* .*|[a-z][-a-z]*ive .*)" $(article $(\1)) # for example, "article -ban október" -> "az októberben"
  108. ((i|v|l(v?i{0,3}|i[vx])|d(xc)?[ilxv]*|m(cm)?[cdilxv]*)[.](-.*)?) az \1 # Roman numbers
  109. ((I|V|L(V?I{0,3}|I[VX])|D(XC)?[ILXV]*|M(CM)?[CDILXV]*)[.](-.*)?) az \1 # ROMAN NUMBERS
  110. ((iii?|iv|vi{1,3}|ix|(x{1,3}|xl|lx{1,3}|xc)(i{0,3}|vi{0,3}|ix)|(c{1,3}|cd|dc{1,3})[ilxv]*|mmm?[dilxv]*)[.](-.*)?) a \1 # Roman numbers II.
  111. ((III?|IV|VI{1,3}|IX|(X{1,3}|XL|LX{1,3}|XC)(I{0,3}|VI{0,3}|IX)|(c{1,3}|CD|DC{1,3})[ILXV]*|MMM?[DILXV]*)[.](-.*)?) a \1 # ROMAN NUMBERS II.
  112. ([{\(\[]?(1(\d{3}|\d{6})*|[aefilmnorsuxyAEFILMNORSUXY])[}\)\]]?(-.*)?) az \1 # numbers and 1-letter indices
  113. ([{\(\[]?5.*) az \1 # numbers
  114. ([aáeéiíoóöőuúüűAÁEÉIÍOÓÖŐUÚÜŰ].*) az \1
  115. (.*) a \1
  116. == ordinal ==
  117. 1 első
  118. 2 második
  119. "(([a-zA-Z]+ )*[-−]?\d+)" $(ordinal $1)
  120. (.*)nulla \1nulladik
  121. (.*)egy \1egyedik
  122. (.*)kettő \1kettedik
  123. (.*)három \1harmadik
  124. (.*)négy \1negyedik
  125. (.*)öt \1ötödik
  126. (.*)hat \1hatodik
  127. (.*)hét \1hetedik
  128. (.*)nyolc \1nyolcadik
  129. (.*)kilenc \1kilencedik
  130. (.*)tíz \1tizedik
  131. (.*)húsz \1huszadik
  132. (.*)harminc \1harmincadik
  133. (.*)(negy|öt|het|kilenc)ven \1\2venedik
  134. (.*)(hat|nyolc)van \1\2vanadik
  135. (.*)száz \1századik
  136. (.*)ezer \1ezredik
  137. (.*)illió \1illiomodik
  138. (.*)illiárd \1illiárdodik
  139. == formal ==
  140. "(([a-zA-Z]+ )*[-−]?\d+([.,]\d*)?)" $(formal |$1)
  141. (|.*-)((száz|ezer).*) $(formal \1egy\2)
  142. (.*)két(.*) $(formal \1kettő\2)
  143. (.*) \1
  144. == year ==
  145. # no hyphen in numbers
  146. "(([a-zA-Z]+ )*[-−]?\d+)" $(year |$1)
  147. (.*)-(.*) $(year \1\2)
  148. (.*) \1
  149. == cardinal ==
  150. (.*) $1
  151. == ordinal-number ==
  152. (.*) \1.
  153. == text ==
  154. (\d|10) $1
  155. (\d{2,4}) \1
  156. (\d{2,3})(\d{3}) \1 ezer[ $(text \2)]
  157. (\d{1,3})(\d{6}) \1 millió[ $(text \2)]
  158. (\d{1,4})(\d{9}) \1 milliárd[ $(text \2)]
  159. (\d{1,4})(\d{12}) \1 billió[ $(text \2)]
  160. (\d{1,4})(\d{15}) \1 billiárd[ $(text \2)]
  161. # suffix functions for numbers, dates, letters and parenthesized references
  162. #
  163. # canonical and localized suffix function names
  164. #
  165. # for example:
  166. #
  167. # accusative 2 -> 2-t
  168. # -t 2 -> 2-t
  169. # -t 3 -> 3-at
  170. # -t 4 -> 4-et
  171. # -t 5 -> 5-öt
  172. # -t 6 -> 6-ot
  173. # -ban a) -> a)-ban
  174. # -ban b) -> b)-ben
  175. == database ==
  176. "" :ablative:-tól-től:accusative:-at-et-ot-öt-t:adessive:-nál-nél:adjective:-i-ji:allative:-hoz-hez-höz:attribution-adjective:-as-es-os-ös:dative:-nak-nek:delative:-ról-ről:elative:-ból-ből:fraction-nominative:-ad-ed-od-öd:illative:-ba-be:inessive:-ban-ben:instrumental:-val-vel:multiplicative:-szor-szer-ször:multiplicative-adjective:-szoros-szeres-szörös:possessive:-a-e-je:possessive-ablative:-ától-étől-jétől:possessive-adjective:-ai-ei-jei:possessive-inessive:-ában-ében:possessive-superessive:-án-én:possessive-terminative:-áig-éig-jéig:sublative:-ra-re:superessive:-on-en-ön:terminative:-ig:translative:-vá-vé:
  177. # get suffixed form using the following canonical names
  178. #
  179. # for example, "accusative 5" -> "5-öt"
  180. == ([a-z][-a-z]*ive) ==
  181. ([^:]*) $($(\1 $(database)) \2)
  182. .*:\1:(-[^-:]*).* \2
  183. # get suffixed form using the alternative suffix variants
  184. # by converting them to the preferred (first) variant
  185. #
  186. # for example "-et" -> "-at", then
  187. # "-at 5" -> "5-öt"
  188. == (-[a-z]*[eéöő][a-zéöő]*|-t) ==
  189. ([^:]*) $($(\1 $(database)) \2)
  190. .*:(-[^-:]+)(-[^-:]+)*\1.* \2
  191. # replace localized function name with their canonical-name in an input list
  192. == canonical-name ==
  193. "([^:]* )?(-[a-zéáóöő]+)( [^:]*)?" \1$(canonical-name \2 $(database))\3
  194. (-[a-zéáóöő]+).*:([a-z]+(-[a-z]+)?):[^:]*\1[-,:].* \2
  195. == -a ==
  196. "(1|.* 1)" \1-je
  197. "(2|.* 2)" \1-a
  198. == -ai ==
  199. "(1|.* 1)" \1-jei
  200. "(2|.* 2)" \1-ai
  201. == -i ==
  202. "(1|.* 1)" \1-ji
  203. == -án ==
  204. "(1|.* 1)" \1-jén
  205. "(2|.* 2)" \1-án
  206. == -áig ==
  207. "(1|.* 1)" \1-jéig
  208. "(2|.* 2)" \1-áig
  209. == -ától ==
  210. "(1|.* 1)" \1-jétől
  211. "(2|.* 2)" \1-ától
  212. == -at ==
  213. 1[.] 1.-t
  214. (\d*)2 \12-t
  215. 2[.] 2.-at
  216. (\d*)5 \15-öt
  217. (\d*)6 \16-ot
  218. == -d ==
  219. ([{\(\[]?(.*[^0]0{6,8}|.*[^0]0{12,14})[}\)\]]?) \1-od
  220. ([{\(\[]?[ahkoquAHKOQU][}\)\]]?) \1-ad
  221. ([{\(\[]?[bcdefgijlmnprstvwxzBCDEFGIJLMNPRSTVWXZ][}\)\]]?) \1-ed
  222. == -([ds]) ==
  223. ([{\(\[]?.*2[}\)\]]?) \2-e\1
  224. ([{\(\[]?[yY][.]?[}\)\]]?) \2-o\1
  225. == -([dst]) ==
  226. ([{\(\[]?.*5[}\)\]]?) \2-ö\1
  227. ([{\(\[]?(0|.*2|.*[^0]0{6,8}|.*[^0]0{12,14}|[abcdeghijkopqtuvwyzABCDEGHIJKOPQTUVWYZ][.]?)[}\)\]]?) \2-\1
  228. ([{\(\[]?(.*6|.*[^0]0{9,11}|.*[^0]0{15,17})[}\)\]]?) \2-o\1
  229. ([{\(\[]?(\d+|[a-zA-Z])[}\)\]]?) $(-a\1 \2)
  230. == -dik ==
  231. (.?(\d+|[a-zA-Z][.]?)[}\)\]]?) $(-d \1)ik
  232. == -hoz ==
  233. ((.*2|.*5|1[.])[}\)\]]?) \1-höz
  234. == -szoros ==
  235. (.*5[}\)\]]?) \1-szörös
  236. == -szor ==
  237. ([{\(\[]?(\d+|[a-zA-Z])[}\]\)]?) $(-szor $(-szoros \1))
  238. (.*-sz.r).s \1
  239. # MONTHS
  240. == -(a|á)(ban|tól|ig)? ==
  241. ((jan|febr)uár) \3j\1\2
  242. == -(á)?(a|ban|tól|ig) ==
  243. ((jan|febr)uár|március|április|május|jú(n|l)ius|augusztus) \3\1\2
  244. # convert optional "á" and vowels of "ban", "tól", "ig" to
  245. # "-ben", "-től", "-ig" using prefix "-on", and remove dash
  246. ((szeptem|októ|novem|decem)ber) \3$(remove-dash $(-on -\1))$(remove-dash $(-on -\2))
  247. == abbreviation ==
  248. (jan|febr|márc|ápr|máj|jún|júl|aug|szept|okt|nov|dec).* \1.
  249. == remove-dash ==
  250. -(.*) \1
  251. # DAYS
  252. == -ig ==
  253. szerda szerdáig
  254. ((.*\d|[{\(\[]?[a-zA-Z])[}\)\]]?) \1-ig
  255. (.*\D) \1ig
  256. == -tól ==
  257. szerda szerdától
  258. (hétfő|kedd|csütörtök|péntek) \1től
  259. (szombat|vasárnap) \1tól
  260. == -on ==
  261. hétfő hétfőn
  262. (kedd|péntek) \1en
  263. szerda szerdán
  264. csütörtök csütörtökön
  265. szombat szombaton
  266. vasárnap vasárnap # no suffix in dates
  267. (.*5[}\)\]]?) \1-ön
  268. ([{\(\[]?(0|.*2|.*[^0]0{6,8}|.*[^0]0{12,14}|[abcdeghijkopqtuvwzABCDEGHIJKOPQTUVWZ][.]?)[}\)\]]?) \1-n
  269. (.?(\d+|[flmnrsxyFLMNRSXY][.]?)[}\)\]]?) $(-on \1)
  270. == -val ==
  271. # ordinal
  272. (1[.]) \1-vel
  273. (2[.]) \1-kal
  274. (.*([368]|[2368]0|\d00|\d0{6,})[.]) \1-kal
  275. (.*([14579]|[14579]0|\d0{3,5})[.]) \1-kel
  276. # cardinal
  277. ([{\(\[]?(0|.*[^0]0{6,8}|.*[^0]0{12,14}|[ahkoquAHKOQU][.]?)[}\)\]]?) \1-val
  278. (.*[14][}\)\]]?) \1-gyel
  279. (.*(2|[bcdegijptvwzBCDEGIJPTVWZ][.]?)[}\)\]]?) \1-vel
  280. (.*3[}\)\]]?) \1-mal
  281. (.*[57][}\)\]]?) \1-tel
  282. (.*6[}\)\]]?) \1-tal
  283. ((.*8|.*30)[}\)\]]?) \1-cal
  284. (.*9[}\)\]]?) \1-cel
  285. (.*10[}\)\]]?) \1-zel
  286. (.*20[}\)\]]?) \1-szal
  287. (.*[4579]0[}\)\]]?) \1-nel
  288. (.*([68]0|[yY][.]?)[}\)\]]?) \1-nal
  289. (.*[^0]00[}\)\]]?) \1-zal
  290. (.*[^0]0{3,5}[}\)\]]?) \1-rel
  291. ((.*[^0]0{9,11}|.*[^0]0{15,17})[}\)\]]?) \1-dal
  292. (.*([flmnrsFLMNRS])[.]?[}\)\]]?) \1-\2el
  293. (.*[xX][.]?[}\)\]]?) \1-szel
  294. == -vá ==
  295. ([{\(\[]?(\d+|[a-zA-Z])[}\)\]]?) $(-vá $(-val \1))
  296. (.*)al \1á
  297. (.*)el \1é
  298. == (-a|-ad|-ai|-án|-áig|-ban?|-ból|-hoz|-i|-nak|-nál|-on|-ra|-ról|-as|-szoros|-at|-á?tól|-ul) ==
  299. # 1-be, 2-nek, 2.-nak, 12.-nek, 4-et etc., b)-ben, c)-ből, d)-hez, n-et etc.
  300. # add affix after conversion to the alternative form
  301. ([{\(\[]?(2|.+2[.]?|.*[14579][.]?|.*[14579]0[.]?|.*[^0]0{3,5}[.]?|[bcdefgijlmnprstvwxzBCDEFGIJLMNPRSTVWXZ][.]?)[}\)\]]?) \2$(-on \1)
  302. # otherwise: 0-ba, 3-at, 6-nál etc., a)-ban, h)-ból, k-hoz, y-ról etc.
  303. ([{\(\[]?(.*[0-9]+[.]?|[ahkoquyAHKOQUY][.]?)[}\)\]]?) \2\1
  304. # conversion to the alternative form: -ban -> -ben etc.
  305. -szoros -szeres
  306. -(.*)[ao](.*) -\2e\3
  307. -([brt])ól -\2ől
  308. -ától -étől
  309. -(.*)[á](.*) -\2é\3
  310. -ul -ül
  311. (-ig?) \2
  312. == help ==
  313. "" $(1)|, $(2)|, $(3)\n$(\0 ordinal)$(\0 ordinal-number)year: $(year 2001), $(year 2002)|, $(year 2003)\nformal: $(formal 100), $(formal 200), $(formal 1000)\ntext: $(text 1), $(text 12000), $(text 10000000000)\ncurrency \(for example, HUF\): $(HUF 2,5)\nformal HUF: $(formal HUF 102,5)\nSuffixation of numbers and letters: -a, -ában, -án, -áig, -ától, -ba, -ban, -ból, -d, -dik, -hoz,\n -nak, -nál, -n, -ra, -ról, -s, -szor, -szoros, -t, -tól, -ul, -vá, -val,\n for example: -szor 15 -> $(-szor 15)\narticle: $(article 5)\narticle cardinal: $(article cardinal 100)\narticle cardinal formal: $(article cardinal formal 100)\narticle -ban: $(article -ban a\))\narticle -ai: $(article -ai 1)\narticle ordinal -ai: $(article ordinal -ai 1)|\ncanonical-name: -szor -> $(canonical-name -szor)
  314. "(ordinal(-number)?|USD)" \1: $(\1 1), $(\1 2), $(\1 3)\n