Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

773 lines
35 KiB

  1. <!-- ************************************************************************
  2. CHS ITN Grammars
  3. Microsoft Corporation 2000
  4. CHS ITN rules depends on CHS SR dictionary. All the items here should
  5. be a word in CHS SR dictionary
  6. In this grammar, we support:
  7. Integer
  8. Decimal
  9. Minus number
  10. ************************************************************************* -->
  11. <GRAMMAR LANGID="804">
  12. <!-- ************************************************************************
  13. Definations that will appear in header file
  14. ************************************************************************* -->
  15. <DEFINE>
  16. <ID NAME="HUNDREDMILLIONS" VAL="1"/>
  17. <ID NAME="TENTHOUSANDS" VAL="2"/>
  18. <ID NAME="TENTHOUSANDS_" VAL="3"/>
  19. <ID NAME="THOUSANDS" VAL="4"/>
  20. <ID NAME="HUNDREDS" VAL="5"/>
  21. <ID NAME="HUNDREDS_" VAL="6"/>
  22. <ID NAME="ONES" VAL="7"/>
  23. <ID NAME="INTEGER" VAL="8"/>
  24. <ID NAME="DECIMAL" VAL="9"/>
  25. <ID NAME="NEGATIVE" VAL="10"/>
  26. <ID NAME="PERIOD" VAL="23"/>
  27. <ID NAME="DIGITS" VAL="24"/>
  28. <ID NAME="POS_OF_MINUS" VAL="27"/>
  29. <ID NAME="ONES_THOUSANDS" VAL="28"/>
  30. <ID NAME="GRID_NUMBER" VAL="1001"/>
  31. <ID NAME="GRID_NUMBER_MINUS" VAL="1002"/>
  32. <ID NAME="GRID_DECIMAL" VAL="1003"/>
  33. <ID NAME="GRID_NUMBER_ALL" VAL="1004"/>
  34. </DEFINE>
  35. <!-- ***************************************************************************
  36. Number_All: includes negative or positive interger or float pointer numbers
  37. **************************************************************************** -->
  38. <RULE NAME="GRID_NUMBER_ALL" ID="GRID_NUMBER_ALL" TOPLEVEL="ACTIVE" EXPORT="1">
  39. <LN>
  40. <P WEIGHT="1000.01">zhoulotskunosprok</P>
  41. <P WEIGHT="1.01">数字
  42. <O>
  43. <P PROPNAME="NEGATIVE" PROPID="NEGATIVE"></P>
  44. </O>
  45. <L>
  46. <P> <RULEREF NAME="GRID_NUMBER" PROPNAME="GRID_NUMBER" PROPID="GRID_NUMBER"/> </P>
  47. <P> <RULEREF NAME="GRID_DECIMAL" PROPNAME="GRID_DECIMAL" PROPID="GRID_DECIMAL"/> </P>
  48. </L>
  49. </P>
  50. </LN>
  51. </RULE>
  52. <!-- ************************************************************************
  53. Grid number(positive integers from 0 - 9999,9999,9999(Chs spelling rules) or 999,999,999,999
  54. ************************************************************************* -->
  55. <RULE NAME="GRID_NUMBER" ID="GRID_NUMBER" TOPLEVEL="INACTIVE" EXPORT="1">
  56. <L>
  57. <P> <!-- ******************** begining with '亿' section ******************* -->
  58. <RULEREF NAME="GRID_NUMBER_9999" PROPNAME="HUNDREDMILLIONS" PROPID="HUNDREDMILLIONS"/>
  59. <P>亿</P>
  60. <O>
  61. <L>
  62. <P> <!-- ******************** has '万' section ******************* -->
  63. <L>
  64. <RULEREF NAME="GRID_NUMBER_9999" PROPNAME="TENTHOUSANDS" PROPID="TENTHOUSANDS"/>
  65. <RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="TENTHOUSANDS" PROPID="TENTHOUSANDS"/>
  66. </L>
  67. <P></P>
  68. <O>
  69. <L>
  70. <P> <RULEREF NAME="ONESFRAG_ONE_DIGIT_THOUSANDS" PROPNAME="ONES_THOUSANDS" PROPID="ONES_THOUSANDS"/> </P>
  71. <RULEREF NAME="GRID_NUMBER_9990" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  72. <RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  73. </L>
  74. </O>
  75. </P>
  76. <P> <!-- ******************** does not have '万' section and directly has '个' section ******************* -->
  77. <L>
  78. <P>
  79. <RULEREF NAME="ZERODIGITS" PROPNAME="DIGITS" PROPID="DIGITS" VAL="0"/>
  80. <RULEREF NAME="GRID_NUMBER_9999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  81. </P>
  82. <P>
  83. <RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  84. </P>
  85. </L>
  86. </P>
  87. </L>
  88. </O>
  89. </P>
  90. <P> <!-- ******************** begining with '万' section ******************* -->
  91. <L>
  92. <P>
  93. <RULEREF NAME="GRID_NUMBER_9999" PROPNAME="TENTHOUSANDS" PROPID="TENTHOUSANDS"/>
  94. <P></P>
  95. </P>
  96. <P>
  97. <L PROPNAME="TENTHOUSANDS_" PROPID="TENTHOUSANDS_">
  98. <P VAL= "1" VALSTR="1">一万</P>
  99. <P VAL= "2" VALSTR="2">二万</P>
  100. <P VAL= "2" VALSTR="2">两 万</P>
  101. <P VAL= "3" VALSTR="3">三万</P>
  102. <P VAL= "4" VALSTR="4">四万</P>
  103. <P VAL= "5" VALSTR="5">五万</P>
  104. <P VAL= "6" VALSTR="6">六万</P>
  105. <P VAL= "7" VALSTR="7">七万</P>
  106. <P VAL= "8" VALSTR="8">八万</P>
  107. <P VAL= "9" VALSTR="9">九万</P>
  108. <P VAL= "10" VALSTR="10">十万</P>
  109. </L>
  110. </P>
  111. </L>
  112. <O>
  113. <L>
  114. <P> <RULEREF NAME="ONESFRAG_ONE_DIGIT_THOUSANDS" PROPNAME="ONES_THOUSANDS" PROPID="ONES_THOUSANDS"/> </P>
  115. <RULEREF NAME="GRID_NUMBER_9990" PROPNAME="ONES" PROPID="ONES"/>
  116. <RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="ONES" PROPID="ONES"/>
  117. </L>
  118. </O>
  119. </P>
  120. <P> <!-- ******************** begining with '个' section ******************* -->
  121. <RULEREF NAME="GRID_NUMBER_9999" PROPNAME="ONES" PROPID="ONES"/>
  122. </P>
  123. <P> <!-- ******************** zero itself ******************* -->
  124. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  125. </P>
  126. <P MIN="2" MAX="12"> <RULEREF NAME="DIGITS"/> </P>
  127. </L>
  128. </RULE>
  129. <!-- ************************************************************************
  130. Grid number 9999, integers from [1 - 9999], no leading zero
  131. ************************************************************************* -->
  132. <RULE NAME="GRID_NUMBER_9999">
  133. <L>
  134. <P> <!--- ******************** begining with '千' section *************** -->
  135. <RULEREF NAME="THOUSANDSFRAG" PROPNAME="THOUSANDS" PROPID="THOUSANDS" VAL="1000"/>
  136. <O>
  137. <L>
  138. <P> <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="100"/> </P>
  139. <P> <!-- ******************** has hundreds frag ******************* -->
  140. <P><RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/></P>
  141. <O>
  142. <L>
  143. <P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  144. <P>
  145. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  146. <O>
  147. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  148. </O>
  149. </P>
  150. <P>
  151. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  152. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  153. </P>
  154. </L>
  155. </O>
  156. </P>
  157. <P> <!-- ******************** no hundreds frag ******************* -->
  158. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  159. <L>
  160. <RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  161. <P>
  162. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  163. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  164. </P>
  165. </L>
  166. </P>
  167. </L>
  168. </O>
  169. </P>
  170. <P> <!--- ******************** begining with '百' section *************** -->
  171. <RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/>
  172. <O>
  173. <L>
  174. <P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  175. <P>
  176. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  177. <O>
  178. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  179. </O>
  180. </P>
  181. <P>
  182. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  183. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  184. </P>
  185. </L>
  186. </O>
  187. </P>
  188. <P> <RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  189. </L>
  190. </RULE>
  191. <!-- ************************************************************************
  192. Grid number 9990, integers from [10 - 9999], no leading zero
  193. ************************************************************************* -->
  194. <RULE NAME="GRID_NUMBER_9990">
  195. <L>
  196. <P> <!--- ******************** begining with '千' section *************** -->
  197. <RULEREF NAME="THOUSANDSFRAG" PROPNAME="THOUSANDS" PROPID="THOUSANDS" VAL="1000"/>
  198. <O>
  199. <L>
  200. <P> <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="100"/> </P>
  201. <P> <!-- ******************** has hundreds frag ******************* -->
  202. <P><RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/></P>
  203. <O>
  204. <L>
  205. <P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  206. <P>
  207. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  208. <O>
  209. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  210. </O>
  211. </P>
  212. <P>
  213. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  214. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  215. </P>
  216. </L>
  217. </O>
  218. </P>
  219. <P> <!-- ******************** no hundreds frag ******************* -->
  220. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  221. <L>
  222. <RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  223. <P>
  224. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  225. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  226. </P>
  227. </L>
  228. </P>
  229. </L>
  230. </O>
  231. </P>
  232. <P> <!--- ******************** begining with '百' section *************** -->
  233. <RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/>
  234. <O>
  235. <L>
  236. <P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  237. <P> <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  238. <O>
  239. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  240. </O>
  241. </P>
  242. <P>
  243. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  244. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  245. </P>
  246. </L>
  247. </O>
  248. </P>
  249. <P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  250. </L>
  251. </RULE>
  252. <!-- ************************************************************************
  253. Grid number 0999, positive integers from [1 - 999], with leading zero
  254. ************************************************************************ -->
  255. <RULE NAME="ZERO_GRID_NUMBER_0999">
  256. <P> <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/> </P>
  257. <L>
  258. <P>
  259. <RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/>
  260. <O>
  261. <L>
  262. <P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
  263. <P>
  264. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  265. <O>
  266. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  267. </O>
  268. </P>
  269. <P>
  270. <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
  271. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  272. </P>
  273. </L>
  274. </O>
  275. </P>
  276. <P>
  277. <L>
  278. <RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  279. <P>
  280. <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
  281. <RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
  282. </P>
  283. </L>
  284. </P>
  285. </L>
  286. </RULE>
  287. <!-- ************************************************************************
  288. Thousands frag
  289. ************************************************************************ -->
  290. <RULE NAME="THOUSANDSFRAG">
  291. <L PROPNAME="THOUSANDS" PROPID="THOUSANDS">
  292. <P VAL="1" VALSTR="1">一千</P>
  293. <P VAL="2" VALSTR="2">二千</P>
  294. <P VAL="2" VALSTR="2">两 千</P>
  295. <P VAL="3" VALSTR="3">三千</P>
  296. <P VAL="4" VALSTR="4">四千</P>
  297. <P VAL="5" VALSTR="5">五千</P>
  298. <P VAL="6" VALSTR="6">六千</P>
  299. <P VAL="7" VALSTR="7">七千</P>
  300. <P VAL="8" VALSTR="8">八千</P>
  301. <P VAL="9" VALSTR="9">九千</P>
  302. </L>
  303. </RULE>
  304. <!-- ************************************************************************
  305. Hundreds frag
  306. ************************************************************************ -->
  307. <RULE NAME="HUNDREDSFRAG">
  308. <L PROPNAME="HUNDREDS_" PROPID="HUNDREDS_">
  309. <P VAL="1" VALSTR="1">一百</P>
  310. <P VAL="2" VALSTR="2">二百</P>
  311. <P VAL="2" VALSTR="2">两 百</P>
  312. <P VAL="3" VALSTR="3">三百</P>
  313. <P VAL="4" VALSTR="4">四百</P>
  314. <P VAL="5" VALSTR="5">五百</P>
  315. <P VAL="6" VALSTR="6">六百</P>
  316. <P VAL="7" VALSTR="7">七百</P>
  317. <P VAL="8" VALSTR="8">八百</P>
  318. <P VAL="9" VALSTR="9">九百</P>
  319. </L>
  320. </RULE>
  321. <!-- ************************************************************************
  322. One digit frag
  323. ************************************************************************ -->
  324. <RULE NAME="ONESFRAG_ONE_DIGIT">
  325. <L PROPNAME="ONES" PROPID="ONES">
  326. <P VAL="1" VALSTR="1"></P>
  327. <P VAL="1" VALSTR="1"></P>
  328. <P VAL="2" VALSTR="2"></P>
  329. <P VAL="2" VALSTR="2"></P>
  330. <P VAL="2" VALSTR="2"></P>
  331. <P VAL="3" VALSTR="3"></P>
  332. <P VAL="3" VALSTR="3"></P>
  333. <P VAL="4" VALSTR="4"></P>
  334. <P VAL="4" VALSTR="4"></P>
  335. <P VAL="5" VALSTR="5"></P>
  336. <P VAL="5" VALSTR="5"></P>
  337. <P VAL="6" VALSTR="6"></P>
  338. <P VAL="6" VALSTR="6"></P>
  339. <P VAL="7" VALSTR="7"></P>
  340. <P VAL="7" VALSTR="7"></P>
  341. <P VAL="8" VALSTR="8"></P>
  342. <P VAL="8" VALSTR="8"></P>
  343. <P VAL="9" VALSTR="9"></P>
  344. <P VAL="9" VALSTR="9"></P>
  345. </L>
  346. </RULE>
  347. <!-- ************************************************************************
  348. One digit frag for thousands
  349. ************************************************************************ -->
  350. <RULE NAME="ONESFRAG_ONE_DIGIT_THOUSANDS">
  351. <L PROPNAME="ONES" PROPID="ONES">
  352. <P VAL="1000" VALSTR="1"></P>
  353. <P VAL="1000" VALSTR="1"></P>
  354. <P VAL="2000" VALSTR="2"></P>
  355. <P VAL="2000" VALSTR="2"></P>
  356. <P VAL="2000" VALSTR="2"></P>
  357. <P VAL="3000" VALSTR="3"></P>
  358. <P VAL="3000" VALSTR="3"></P>
  359. <P VAL="4000" VALSTR="4"></P>
  360. <P VAL="4000" VALSTR="4"></P>
  361. <P VAL="5000" VALSTR="5"></P>
  362. <P VAL="5000" VALSTR="5"></P>
  363. <P VAL="6000" VALSTR="6"></P>
  364. <P VAL="6000" VALSTR="6"></P>
  365. <P VAL="7000" VALSTR="7"></P>
  366. <P VAL="7000" VALSTR="7"></P>
  367. <P VAL="8000" VALSTR="8"></P>
  368. <P VAL="8000" VALSTR="8"></P>
  369. <P VAL="9000" VALSTR="9"></P>
  370. <P VAL="9000" VALSTR="9"></P>
  371. </L>
  372. </RULE>
  373. <!-- ************************************************************************
  374. Two digits frag
  375. ************************************************************************ -->
  376. <RULE NAME="ONESFRAG_TWO_DIGITS">
  377. <L PROPNAME="ONES" PROPID="ONES">
  378. <P VAL="10" VALSTR="10">一十</P>
  379. <P VAL="11" VALSTR="11">十一</P>
  380. <P VAL="11" VALSTR="11">一十一</P>
  381. <P VAL="12" VALSTR="12">十二</P>
  382. <P VAL="12" VALSTR="12">一十二</P>
  383. <P VAL="13" VALSTR="13">十三</P>
  384. <P VAL="13" VALSTR="13">一十三</P>
  385. <P VAL="14" VALSTR="14">十四</P>
  386. <P VAL="14" VALSTR="14">一十四</P>
  387. <P VAL="15" VALSTR="15">十五</P>
  388. <P VAL="15" VALSTR="15">一十五</P>
  389. <P VAL="16" VALSTR="16">十六</P>
  390. <P VAL="16" VALSTR="16">一十六</P>
  391. <P VAL="17" VALSTR="17">十七</P>
  392. <P VAL="17" VALSTR="17">一十七</P>
  393. <P VAL="18" VALSTR="18">十八</P>
  394. <P VAL="18" VALSTR="18">一十八</P>
  395. <P VAL="19" VALSTR="19">十九</P>
  396. <P VAL="19" VALSTR="19">一十九</P>
  397. <P VAL="20" VALSTR="20">二十</P>
  398. <P VAL="21" VALSTR="21">二十一</P>
  399. <P VAL="22" VALSTR="22">二十二</P>
  400. <P VAL="23" VALSTR="23">二十三</P>
  401. <P VAL="24" VALSTR="24">二十四</P>
  402. <P VAL="25" VALSTR="25">二十五</P>
  403. <P VAL="26" VALSTR="26">二十六</P>
  404. <P VAL="27" VALSTR="27">二十七</P>
  405. <P VAL="28" VALSTR="28">二十八</P>
  406. <P VAL="29" VALSTR="29">二十九</P>
  407. <P VAL="30" VALSTR="30">三十</P>
  408. <P VAL="31" VALSTR="31">三十一</P>
  409. <P VAL="32" VALSTR="32">三十二</P>
  410. <P VAL="33" VALSTR="33">三十三</P>
  411. <P VAL="34" VALSTR="34">三十四</P>
  412. <P VAL="35" VALSTR="35">三十五</P>
  413. <P VAL="36" VALSTR="36">三十六</P>
  414. <P VAL="37" VALSTR="37">三十七</P>
  415. <P VAL="38" VALSTR="38">三十八</P>
  416. <P VAL="39" VALSTR="39">三十九</P>
  417. <P VAL="40" VALSTR="40">四十</P>
  418. <P VAL="41" VALSTR="41">四十一</P>
  419. <P VAL="42" VALSTR="42">四十二</P>
  420. <P VAL="43" VALSTR="43">四十三</P>
  421. <P VAL="44" VALSTR="44">四十四</P>
  422. <P VAL="45" VALSTR="45">四十五</P>
  423. <P VAL="46" VALSTR="46">四十六</P>
  424. <P VAL="47" VALSTR="47">四十七</P>
  425. <P VAL="48" VALSTR="48">四十八</P>
  426. <P VAL="49" VALSTR="49">四十九</P>
  427. <P VAL="50" VALSTR="50">五十</P>
  428. <P VAL="51" VALSTR="51">五十一</P>
  429. <P VAL="52" VALSTR="52">五十二</P>
  430. <P VAL="53" VALSTR="53">五十三</P>
  431. <P VAL="54" VALSTR="54">五十四</P>
  432. <P VAL="55" VALSTR="55">五十五</P>
  433. <P VAL="56" VALSTR="56">五十六</P>
  434. <P VAL="57" VALSTR="57">五十七</P>
  435. <P VAL="58" VALSTR="58">五十八</P>
  436. <P VAL="59" VALSTR="59">五十九</P>
  437. <P VAL="60" VALSTR="60">六十</P>
  438. <P VAL="61" VALSTR="61">六十一</P>
  439. <P VAL="62" VALSTR="62">六十二</P>
  440. <P VAL="63" VALSTR="63">六十三</P>
  441. <P VAL="64" VALSTR="64">六十四</P>
  442. <P VAL="65" VALSTR="65">六十五</P>
  443. <P VAL="66" VALSTR="66">六十六</P>
  444. <P VAL="67" VALSTR="67">六十七</P>
  445. <P VAL="68" VALSTR="68">六十八</P>
  446. <P VAL="69" VALSTR="69">六十九</P>
  447. <P VAL="70" VALSTR="70">七十</P>
  448. <P VAL="71" VALSTR="71">七十一</P>
  449. <P VAL="72" VALSTR="72">七十二</P>
  450. <P VAL="73" VALSTR="73">七十三</P>
  451. <P VAL="74" VALSTR="74">七十四</P>
  452. <P VAL="75" VALSTR="75">七十五</P>
  453. <P VAL="76" VALSTR="76">七十六</P>
  454. <P VAL="77" VALSTR="77">七十七</P>
  455. <P VAL="78" VALSTR="78">七十八</P>
  456. <P VAL="79" VALSTR="79">七十九</P>
  457. <P VAL="80" VALSTR="80">八十</P>
  458. <P VAL="81" VALSTR="81">八十一</P>
  459. <P VAL="82" VALSTR="82">八十二</P>
  460. <P VAL="83" VALSTR="83">八十三</P>
  461. <P VAL="84" VALSTR="84">八十四</P>
  462. <P VAL="85" VALSTR="85">八十五</P>
  463. <P VAL="86" VALSTR="86">八十六</P>
  464. <P VAL="87" VALSTR="87">八十七</P>
  465. <P VAL="88" VALSTR="88">八十八</P>
  466. <P VAL="89" VALSTR="89">八十九</P>
  467. <P VAL="90" VALSTR="90">九十</P>
  468. <P VAL="91" VALSTR="91">九十一</P>
  469. <P VAL="92" VALSTR="92">九十二</P>
  470. <P VAL="93" VALSTR="93">九十三</P>
  471. <P VAL="94" VALSTR="94">九十四</P>
  472. <P VAL="95" VALSTR="95">九十五</P>
  473. <P VAL="96" VALSTR="96">九十六</P>
  474. <P VAL="97" VALSTR="97">九十七</P>
  475. <P VAL="98" VALSTR="98">九十八</P>
  476. <P VAL="99" VALSTR="99">九十九</P>
  477. </L>
  478. </RULE>
  479. <!-- ************************************************************************
  480. Including the above two tables and '十'
  481. ************************************************************************ -->
  482. <RULE NAME="ONESFRAG">
  483. <L PROPNAME="ONES" PROPID="ONES">
  484. <P VAL="1" VALSTR="1"></P>
  485. <P VAL="1" VALSTR="1"></P>
  486. <P VAL="2" VALSTR="2"></P>
  487. <P VAL="2" VALSTR="2"></P>
  488. <P VAL="2" VALSTR="2"></P>
  489. <P VAL="3" VALSTR="3"></P>
  490. <P VAL="3" VALSTR="3"></P>
  491. <P VAL="4" VALSTR="4"></P>
  492. <P VAL="4" VALSTR="4"></P>
  493. <P VAL="5" VALSTR="5"></P>
  494. <P VAL="5" VALSTR="5"></P>
  495. <P VAL="6" VALSTR="6"></P>
  496. <P VAL="6" VALSTR="6"></P>
  497. <P VAL="7" VALSTR="7"></P>
  498. <P VAL="7" VALSTR="7"></P>
  499. <P VAL="8" VALSTR="8"></P>
  500. <P VAL="8" VALSTR="8"></P>
  501. <P VAL="9" VALSTR="9"></P>
  502. <P VAL="9" VALSTR="9"></P>
  503. <P VAL="10" VALSTR="10"></P>
  504. <P VAL="10" VALSTR="10">一十</P>
  505. <P VAL="11" VALSTR="11">十一</P>
  506. <P VAL="11" VALSTR="11">一十一</P>
  507. <P VAL="12" VALSTR="12">十二</P>
  508. <P VAL="12" VALSTR="12">一十二</P>
  509. <P VAL="13" VALSTR="13">十三</P>
  510. <P VAL="13" VALSTR="13">一十三</P>
  511. <P VAL="14" VALSTR="14">十四</P>
  512. <P VAL="14" VALSTR="14">一十四</P>
  513. <P VAL="15" VALSTR="15">十五</P>
  514. <P VAL="15" VALSTR="15">一十五</P>
  515. <P VAL="16" VALSTR="16">十六</P>
  516. <P VAL="16" VALSTR="16">一十六</P>
  517. <P VAL="17" VALSTR="17">十七</P>
  518. <P VAL="17" VALSTR="17">一十七</P>
  519. <P VAL="18" VALSTR="18">十八</P>
  520. <P VAL="18" VALSTR="18">一十八</P>
  521. <P VAL="19" VALSTR="19">十九</P>
  522. <P VAL="19" VALSTR="19">一十九</P>
  523. <P VAL="20" VALSTR="20">二十</P>
  524. <P VAL="21" VALSTR="21">二十一</P>
  525. <P VAL="22" VALSTR="22">二十二</P>
  526. <P VAL="23" VALSTR="23">二十三</P>
  527. <P VAL="24" VALSTR="24">二十四</P>
  528. <P VAL="25" VALSTR="25">二十五</P>
  529. <P VAL="26" VALSTR="26">二十六</P>
  530. <P VAL="27" VALSTR="27">二十七</P>
  531. <P VAL="28" VALSTR="28">二十八</P>
  532. <P VAL="29" VALSTR="29">二十九</P>
  533. <P VAL="30" VALSTR="30">三十</P>
  534. <P VAL="31" VALSTR="31">三十一</P>
  535. <P VAL="32" VALSTR="32">三十二</P>
  536. <P VAL="33" VALSTR="33">三十三</P>
  537. <P VAL="34" VALSTR="34">三十四</P>
  538. <P VAL="35" VALSTR="35">三十五</P>
  539. <P VAL="36" VALSTR="36">三十六</P>
  540. <P VAL="37" VALSTR="37">三十七</P>
  541. <P VAL="38" VALSTR="38">三十八</P>
  542. <P VAL="39" VALSTR="39">三十九</P>
  543. <P VAL="40" VALSTR="40">四十</P>
  544. <P VAL="41" VALSTR="41">四十一</P>
  545. <P VAL="42" VALSTR="42">四十二</P>
  546. <P VAL="43" VALSTR="43">四十三</P>
  547. <P VAL="44" VALSTR="44">四十四</P>
  548. <P VAL="45" VALSTR="45">四十五</P>
  549. <P VAL="46" VALSTR="46">四十六</P>
  550. <P VAL="47" VALSTR="47">四十七</P>
  551. <P VAL="48" VALSTR="48">四十八</P>
  552. <P VAL="49" VALSTR="49">四十九</P>
  553. <P VAL="50" VALSTR="50">五十</P>
  554. <P VAL="51" VALSTR="51">五十一</P>
  555. <P VAL="52" VALSTR="52">五十二</P>
  556. <P VAL="53" VALSTR="53">五十三</P>
  557. <P VAL="54" VALSTR="54">五十四</P>
  558. <P VAL="55" VALSTR="55">五十五</P>
  559. <P VAL="56" VALSTR="56">五十六</P>
  560. <P VAL="57" VALSTR="57">五十七</P>
  561. <P VAL="58" VALSTR="58">五十八</P>
  562. <P VAL="59" VALSTR="59">五十九</P>
  563. <P VAL="60" VALSTR="60">六十</P>
  564. <P VAL="61" VALSTR="61">六十一</P>
  565. <P VAL="62" VALSTR="62">六十二</P>
  566. <P VAL="63" VALSTR="63">六十三</P>
  567. <P VAL="64" VALSTR="64">六十四</P>
  568. <P VAL="65" VALSTR="65">六十五</P>
  569. <P VAL="66" VALSTR="66">六十六</P>
  570. <P VAL="67" VALSTR="67">六十七</P>
  571. <P VAL="68" VALSTR="68">六十八</P>
  572. <P VAL="69" VALSTR="69">六十九</P>
  573. <P VAL="70" VALSTR="70">七十</P>
  574. <P VAL="71" VALSTR="71">七十一</P>
  575. <P VAL="72" VALSTR="72">七十二</P>
  576. <P VAL="73" VALSTR="73">七十三</P>
  577. <P VAL="74" VALSTR="74">七十四</P>
  578. <P VAL="75" VALSTR="75">七十五</P>
  579. <P VAL="76" VALSTR="76">七十六</P>
  580. <P VAL="77" VALSTR="77">七十七</P>
  581. <P VAL="78" VALSTR="78">七十八</P>
  582. <P VAL="79" VALSTR="79">七十九</P>
  583. <P VAL="80" VALSTR="80">八十</P>
  584. <P VAL="81" VALSTR="81">八十一</P>
  585. <P VAL="82" VALSTR="82">八十二</P>
  586. <P VAL="83" VALSTR="83">八十三</P>
  587. <P VAL="84" VALSTR="84">八十四</P>
  588. <P VAL="85" VALSTR="85">八十五</P>
  589. <P VAL="86" VALSTR="86">八十六</P>
  590. <P VAL="87" VALSTR="87">八十七</P>
  591. <P VAL="88" VALSTR="88">八十八</P>
  592. <P VAL="89" VALSTR="89">八十九</P>
  593. <P VAL="90" VALSTR="90">九十</P>
  594. <P VAL="91" VALSTR="91">九十一</P>
  595. <P VAL="92" VALSTR="92">九十二</P>
  596. <P VAL="93" VALSTR="93">九十三</P>
  597. <P VAL="94" VALSTR="94">九十四</P>
  598. <P VAL="95" VALSTR="95">九十五</P>
  599. <P VAL="96" VALSTR="96">九十六</P>
  600. <P VAL="97" VALSTR="97">九十七</P>
  601. <P VAL="98" VALSTR="98">九十八</P>
  602. <P VAL="99" VALSTR="99">九十九</P>
  603. </L>
  604. </RULE>
  605. <!-- ************************************************************************
  606. two digits from 11 to 19, which only have the value 1 to 9
  607. to deal with "三百 四 十五", or "二百 一 十", due to the result from engine
  608. ************************************************************************* -->
  609. <RULE NAME="ONESFRAG_TWO_DIGITS_TRAIL">
  610. <L PROPNAME="ONES" PROPID="ONES">
  611. <P VAL="0" VALSTR="11"></P>
  612. <P VAL="1" VALSTR="11">十一</P>
  613. <P VAL="2" VALSTR="12">十二</P>
  614. <P VAL="3" VALSTR="13">十三</P>
  615. <P VAL="4" VALSTR="14">十四</P>
  616. <P VAL="5" VALSTR="15">十五</P>
  617. <P VAL="6" VALSTR="16">十六</P>
  618. <P VAL="7" VALSTR="17">十七</P>
  619. <P VAL="8" VALSTR="18">十八</P>
  620. <P VAL="9" VALSTR="19">十九</P>
  621. </L>
  622. </RULE>
  623. <!-- ************************************************************************
  624. digit 0
  625. ************************************************************************* -->
  626. <RULE NAME="ZERODIGITS">
  627. <L PROPNAME="ONES" PROPID="ONES">
  628. <P VAL="0" VALSTR="0"></P>
  629. <P VAL="0" VALSTR="0"></P>
  630. <P VAL="0" VALSTR="0"></P>
  631. </L>
  632. </RULE>
  633. <!-- ************************************************************************
  634. digits 1, 2, 3, 4, 5, 6, 7, 8, 9
  635. ************************************************************************* -->
  636. <RULE NAME="NONEZERODIGITS">
  637. <L PROPNAME="ONES" PROPID="ONES">
  638. <P VAL="1" VALSTR="1"></P>
  639. <P VAL="1" VALSTR="1"></P>
  640. <P VAL="2" VALSTR="2"></P>
  641. <P VAL="2" VALSTR="2"></P>
  642. <P VAL="2" VALSTR="2"></P>
  643. <P VAL="3" VALSTR="3"></P>
  644. <P VAL="3" VALSTR="3"></P>
  645. <P VAL="4" VALSTR="4"></P>
  646. <P VAL="4" VALSTR="4"></P>
  647. <P VAL="5" VALSTR="5"></P>
  648. <P VAL="5" VALSTR="5"></P>
  649. <P VAL="6" VALSTR="6"></P>
  650. <P VAL="6" VALSTR="6"></P>
  651. <P VAL="7" VALSTR="7"></P>
  652. <P VAL="7" VALSTR="7"></P>
  653. <P VAL="8" VALSTR="8"></P>
  654. <P VAL="8" VALSTR="8"></P>
  655. <P VAL="9" VALSTR="9"></P>
  656. <P VAL="9" VALSTR="9"></P>
  657. </L>
  658. </RULE>
  659. <!-- ************************************************************************
  660. All digits
  661. ************************************************************************* -->
  662. <RULE NAME="DIGITS">
  663. <L PROPNAME="DIGITS" PROPID="DIGITS">
  664. <P VAL="0" VALSTR="0"></P>
  665. <P VAL="0" VALSTR="0"></P>
  666. <P VAL="0" VALSTR="0"></P>
  667. <P VAL="1" VALSTR="1"></P>
  668. <P VAL="1" VALSTR="1"></P>
  669. <P VAL="2" VALSTR="2"></P>
  670. <P VAL="2" VALSTR="2"></P>
  671. <P VAL="2" VALSTR="2"></P>
  672. <P VAL="3" VALSTR="3"></P>
  673. <P VAL="3" VALSTR="3"></P>
  674. <P VAL="4" VALSTR="4"></P>
  675. <P VAL="4" VALSTR="4"></P>
  676. <P VAL="5" VALSTR="5"></P>
  677. <P VAL="5" VALSTR="5"></P>
  678. <P VAL="6" VALSTR="6"></P>
  679. <P VAL="6" VALSTR="6"></P>
  680. <P VAL="7" VALSTR="7"></P>
  681. <P VAL="7" VALSTR="7"></P>
  682. <P VAL="8" VALSTR="8"></P>
  683. <P VAL="8" VALSTR="8"></P>
  684. <P VAL="9" VALSTR="9"></P>
  685. <P VAL="9" VALSTR="9"></P>
  686. </L>
  687. </RULE>
  688. <!-- ************************************************************************
  689. Decimal
  690. ************************************************************************* -->
  691. <RULE NAME="GRID_DECIMAL" ID="GRID_DECIMAL" TOPLEVEL="INACTIVE" EXPORT="1">
  692. <P> <RULEREF NAME="GRID_NUMBER" PROPNAME="INTEGER" PROPID="INTEGER"/> </P>
  693. <P PROPNAME="PERIOD" PROPID="PERIOD">
  694. <L>
  695. <P></P>
  696. <P></P>
  697. </L>
  698. </P>
  699. <P MIN="1" MAX="20"> <RULEREF NAME="DIGITS"/> </P>
  700. </RULE>
  701. </GRAMMAR>