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.

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