home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / SPEECH / SPCHAPI.EXE / RCDATA / CABINET / speech.dll / CFG / 101
Text (UTF-16)  |  1999-01-12  |  39KB  |  595 lines

  1. [<Start>]
  2. <Start> = [opt] (JunkBegin) (Commands) [opt] (JunkEnd)
  3.  
  4. [(JunkBegin)]
  5. =please
  6. =could you
  7. =I want [opt] to
  8. =I wanna
  9. =computer
  10. =uh
  11.  
  12. [(JunkEnd)]
  13. =please
  14. =now
  15.  
  16. [(YesNo)]
  17. 1=yes
  18. 1=yup
  19. 1=go for it
  20. 1=yeah [opt] sure
  21. 1=sure
  22. 1=okay
  23. 1=you betcha
  24. 1=do it
  25. 1=fer sure
  26. 1=yes please
  27. 2=no
  28. 2=no way
  29. 2=nope
  30. 2=stop
  31. 2=no thanks
  32. 2=no thank you
  33. 2=don't do it
  34.  
  35. [<PhoneNumber>]
  36. <PhoneNumber> = area code <ThreeDigits> [opt] <DashSlash> "-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  37. <PhoneNumber> = <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  38. <PhoneNumber> = <ThreeDigits> [opt] <DashSlash> "-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  39. <PhoneNumber> = one "1-" <ThreeDigits> [opt] <DashSlash> "-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  40. <PhoneNumber> = one eight hundred "1-800-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  41. <PhoneNumber> = one nine hundred "1-900-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  42. <PhoneNumber> = <ZeroOh> one one [opt] <DashSlash> "011-" <ThreeDigits> [opt] <DashSlash> "-" <Digits>
  43. <PhoneNumber> = X. "x" [1+] <0..9>
  44. <PhoneNumber> = extension "x" [1+] <0..9>
  45. <ThreeDigits> = <0..9> <0..9> <0..9>
  46. <ThreeDigits> = <0..9> <DoubleDigit>
  47. <ThreeDigits> = <TrippleDigit>
  48. <FourDigits> = <0..9> <ThreeDigits>
  49. <FourDigits> = <DoubleDigit> <Last2Digits>
  50. <Last2Digits> = <DoubleDigit>
  51. <Last2Digits> = <0..9> <0..9>
  52. <Last2Digits> = hundred "00"
  53. <DashSlash> = -\dash
  54. <DashSlash> = dash
  55. <DashSlash> = /\slash
  56. <DashSlash> = slash
  57. <ZeroOh> = zero
  58. <ZeroOh> = oh
  59. ;<ZeroOh> = o.
  60.  
  61. [<Year>]
  62. <Year> = <DoubleNumber>
  63. <Year> = <Less1000000Not>
  64. <Year> = <Less1000Not>
  65. <Year> = <Less100Not>
  66. // Double-number cominations, like "ninteen sixty"
  67. <DoubleNumber> = <Less100Not> <DoubleDigit>
  68. <DoubleNumber> = <Less100Not> oh "0" <1..9>
  69. <DoubleNumber> = <Less100Not> hundred "00"
  70.  
  71.  
  72. [<Month>]
  73. <Month> = January "January"
  74. <Month> = February "February"
  75. <Month> = March "March"
  76. <Month> = April "April"
  77. <Month> = May "May"
  78. <Month> = June "June"
  79. <Month> = July "July"
  80. <Month> = August "August"
  81. <Month> = September "September"
  82. <Month> = October "October"
  83. <Month> = November "November"
  84. <Month> = December "December"
  85.  
  86. [<Date>]
  87. <Date> = <Month> " " <Date2>
  88. <Date2> = <Ordinal> [opt] <Date3>
  89. <Date2> = <1..31>
  90. <Date2> = <YearMore31>
  91. <Date3> = ", " <Year>
  92. <YearMore31> = <DoubleNumber>
  93. <YearMore31> = <Less1000000Not>
  94. <YearMore31> = <Less1000Not>
  95. <YearMore31> = <32.99>
  96. <1..31> = <1..9>
  97. <1..31> = <10..19>
  98. <1..31> = <20.31>
  99. // Double-number cominations, like "ninteen sixty"
  100. <DoubleNumber> = <Less100Not> <DoubleDigit>
  101. <DoubleNumber> = <Less100Not> oh "0" <1..9>
  102. <DoubleNumber> = <Less100Not> hundred "00"
  103.  
  104.  
  105. [<Time>]
  106. <Time> = <Hours> <Time2>
  107. <Time> = midnight "12:00 AM"
  108. <Time> = noon "12:00 PM"
  109. <Time2> = o'clock ":00" [opt] <AMPM>
  110. <Time2> = ":" <Minutes> [opt] <AMPM>
  111. <Time2> = ":00" [opt] <AMPM>
  112. <Time> = <Natural> <Time3>
  113. <Time3> = hundred hours ":00"
  114. <Time3> = ":" <Minutes> hours
  115. <Time> = quarter <Time4>
  116. <Time4> = <PastAfter> <Hours> ":15" [opt] <AMPM>
  117. <Time4> = <PastAfter> noon "12:15 PM"
  118. <Time4> = <PastAfter> midnight "12:15 AM"
  119. <Time4> = <BeforeTo> <HoursMinus1> ":45" [opt] <AMPM>
  120. <Time4> = <BeforeTo> noon "11:45 AM"
  121. <Time4> = <BeforeTo> midnight "11:45 PM"
  122. <Time> = half <Time5>
  123. <Time5> = <PastAfter> <Hours> ":30" [opt] <AMPM>
  124. <Time5> = <PastAfter> noon "12:30 PM"
  125. <Time5> = <PastAfter> midnight "12:30 AM"
  126. <PastAfter> = past
  127. <PastAfter> = after
  128. <BeforeTo> = before
  129. <BeforeTo> = to
  130. ;<BeforeTo> = 'til
  131. <BeforeTo> = til
  132. <Minutes> = <DoubleDigit>
  133. <Minutes> = oh "0" <0..9>
  134. ;<Minutes> = O. "0" <0..9>
  135. <Hours> = <1..9>
  136. <Hours> = ten "10"
  137. <Hours> = eleven "11"
  138. <Hours> = twelve "12"
  139. <HoursMinus1> = one "12"
  140. <HoursMinus1> = two "1"
  141. <HoursMinus1> = three "2"
  142. <HoursMinus1> = four "3"
  143. <HoursMinus1> = five "4"
  144. <HoursMinus1> = six "5"
  145. <HoursMinus1> = seven "6"
  146. <HoursMinus1> = eight "7"
  147. <HoursMinus1> = nine "8"
  148. <HoursMinus1> = ten "9"
  149. <HoursMinus1> = eleven "10"
  150. <HoursMinus1> = twelve "11"
  151. <AMPM> = a. m. " AM"
  152. <AMPM> = a.m. " AM"
  153. <AMPM> = am " AM"
  154. <AMPM> = p. m. " PM"
  155. <AMPM> = p.m. " PM"
  156. <AMPM> = pm " PM"
  157. <AMPM> = in the evening " PM"
  158. <AMPM> = at night " PM"
  159. <AMPM> = in the morning " AM"
  160.  
  161.  
  162. [<Dollars>]
  163. <Dollars> = "$" <Natural> <Dollars2>
  164. <Dollars2> = <Dollar> ".00"
  165. <Dollars2> = <Dollar> [opt] and "." <Less100Pad> <CentCents>
  166. <Dollars> = "$0." <Less100Pad> <CentCents>
  167. <CentCents> = cent
  168. <CentCents> = cents
  169. <Dollar> = dollar
  170. <Dollar> = dollars
  171.  
  172. [<Digits>]
  173. <Digits> = [1+] <0..9>
  174.  
  175. [<Fraction>]
  176. <Fraction> = <Integer> <Fraction2>
  177. <Fraction2> = and " " <Natural> "/" <Denom>
  178. <Fraction2> = and a " 1/" <Denom>
  179. <Fraction2> = "/" <Denom>
  180. <Fraction2> = and " " <Natural> over "/" <Natural>
  181. <Fraction2> = over "/" <Natural>
  182. <Denom> = half "2"
  183. <Denom> = halves "2"
  184. <Denom> = third "3"
  185. <Denom> = thirds "3"
  186. <Denom> = fourth "4"
  187. <Denom> = fourths "4"
  188. <Denom> = quarter "4"
  189. <Denom> = quarters "4"
  190. <Denom> = fifth "5"
  191. <Denom> = fifths "5"
  192. <Denom> = sixth "6"
  193. <Denom> = sixths "6"
  194. <Denom> = seventh "7"
  195. <Denom> = sevenths "7"
  196. <Denom> = eighth "8"
  197. <Denom> = eighths "8"
  198. <Denom> = ninth "9"
  199. <Denom> = ninths "9"
  200. <Denom> = tenth "10"
  201. <Denom> = tenths "10"
  202. <Denom> = eleventh "11"
  203. <Denom> = elevenths "11"
  204. <Denom> = twelfth "12"
  205. <Denom> = twelfths "12"
  206. <Denom> = thirteenth "13"
  207. <Denom> = thirteenths "13"
  208. <Denom> = fourteenth "14"
  209. <Denom> = fourteenths "14"
  210. <Denom> = fifteenth "15"
  211. <Denom> = fifteenths "15"
  212. <Denom> = sixteenth "16"
  213. <Denom> = sixteenths "16"
  214. <Denom> = seventeenth "17"
  215. <Denom> = seventeenths "17"
  216. <Denom> = eighteenth "18"
  217. <Denom> = eighteenths "18"
  218. <Denom> = nineteenth "19"
  219. <Denom> = nineteenths "19"
  220. <Denom> = twentieth "20"
  221. <Denom> = twentieths "20"
  222. <Denom> = thirtieth "30"
  223. <Denom> = thirtieths "30"
  224. <Denom> = fortieth "40"
  225. <Denom> = fortieths "40"
  226. <Denom> = fiftieth "50"
  227. <Denom> = fiftieths "50"
  228. <Denom> = sixtieth "60"
  229. <Denom> = sixtieths "60"
  230. <Denom> = seventieth "70"
  231. <Denom> = seventieths "70"
  232. <Denom> = eightieth "80"
  233. <Denom> = eightieths "80"
  234. <Denom> = ninetieth "90"
  235. <Denom> = ninetieths "90"
  236. <Denom> = hundredth "100"
  237. <Denom> = hundredths "100"
  238. <Denom> = thousandth "1000"
  239. <Denom> = thousandths "1000"
  240. <Denom> = millionth "1000000"
  241. <Denom> = millionths "1000000"
  242. <Denom> = billionth "1000000000"
  243. <Denom> = billionths "1000000000"
  244. <Denom> = trillionth "1000000000000"
  245. <Denom> = trillionths "1000000000000"
  246.  
  247. [<Natural>]
  248. <Natural> = <Less1000000000000000Not>
  249. <Natural> = <Less1000000000000Not>
  250. <Natural> = <Less1000000000Not>
  251. <Natural> = <Less1000000Not>
  252. <Natural> = <Less1000Not>
  253. <Natural> = <Less100Not>
  254. // Less than 1,000,000,000,000,000, not padded with zeros
  255. <Less1000000000000000Not> = <Less100Not> <Less1000000000000000Not2>
  256. <Less1000000000000000Not> = <Less1000Not> <Less1000000000000000Not2>
  257. <Less1000000000000000Not2> = trillion "000000000000"
  258. <Less1000000000000000Not2> = trillion [opt] and <Less1000000000000Pad>
  259. // Less than 1,000,000,000,000, padded with zeros
  260. <Less1000000000000Pad> = "000" <Less1000000000Pad>
  261. <Less1000000000000Pad> = billion [opt] and "001" <Less1000000000Pad>
  262. <Less1000000000000Pad> = <Less1000Pad> <Less1000000000000Pad2>
  263. <Less1000000000000Pad> = <Less1000Pad> <Less1000000000000Pad2>
  264. <Less1000000000000Pad2> = billion "000000000"
  265. <Less1000000000000Pad2> = billion [opt] and <Less1000000000Pad>
  266. // Less than 1,000,000,000,000, not padded with zeros
  267. <Less1000000000000Not> = <Less100Not> <Less1000000000000Not2>
  268. <Less1000000000000Not> = <Less1000Not> <Less1000000000000Not2>
  269. <Less1000000000000Not2> = billion "000000000"
  270. <Less1000000000000Not2> = billion [opt] and <Less1000000000Pad>
  271. // Less than 1,000,000,000, padded with zeros
  272. <Less1000000000Pad> = "000" <Less1000000Pad>
  273. <Less1000000000Pad> = million [opt] and "001" <Less1000000Pad>
  274. <Less1000000000Pad> = <Less1000Pad> <Less1000000000Pad2>
  275. <Less1000000000Pad2> = million "000000"
  276. <Less1000000000Pad2> = million [opt] and <Less1000000Pad>
  277. // Less than 1,000,000,000, not padded with zeros
  278. <Less1000000000Not> = <Less100Not> <Less1000000000Not2>
  279. <Less1000000000Not> = <Less1000Not> <Less1000000000Not2>
  280. <Less1000000000Not2> = million "000000"
  281. <Less1000000000Not2> = million [opt] and <Less1000000Pad>
  282. // Less than 1,000,000, padded with zeros
  283. <Less1000000Pad> = "000" <Less1000Pad>
  284. <Less1000000Pad> = thousand [opt] and "001" <Less1000Pad>
  285. <Less1000000Pad> = <Less1000Pad> <Less1000000Pad2>
  286. <Less1000000Pad2> = thousand "000"
  287. <Less1000000Pad2> = thousand [opt] and <Less1000Pad>
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294. [<Ordinal>]
  295. <Ordinal> = <OrdinalLess1000000000000000Not>
  296. <Ordinal> = <OrdinalLess1000000000000Not>
  297. <Ordinal> = <OrdinalLess1000000000Not>
  298. <Ordinal> = <OrdinalLess1000000Not>
  299. <Ordinal> = <OrdinalLess1000Not>
  300. <Ordinal> = <OrdinalLess100Not>
  301. <Orindal> = <Less100Not> hundredth "00"
  302. // Ordinal ,Less than 1,000,000,000,000,000, not padded with zeros, without ending
  303. <OrdinalLess1000000000000000Not> = <Less100Not> trillionth "000000000000"
  304. <OrdinalLess1000000000000000Not> = <Less100Not> trillion [opt] and <OrdinalLess1000000000000Pad>
  305. <OrdinalLess1000000000000000Not> = <Less1000Not> trillionth "000000000000"
  306. <OrdinalLess1000000000000000Not> = <Less1000Not> trillion [opt] and <OrdinalLess1000000000000Pad>
  307. // Ordinal, Less than 1,000,000,000,000, padded with zeros, withouth ending
  308. <OrdinalLess1000000000000Pad> = "000" <OrdinalLess1000000000Pad>
  309. <OrdinalLess1000000000000Pad> = billion [opt] and "001" <OrdinalLess1000000000Pad>
  310. <OrdinalLess1000000000000Pad> = <Less1000Pad> <OrdinalLess1000000000000Pad2>
  311. <OrdinalLess1000000000000Pad> = <Less1000Pad> <OrdinalLess1000000000000Pad2>
  312. <OrdinalLess1000000000000Pad2> = billionth "000000000"
  313. <OrdinalLess1000000000000Pad2> = billion [opt] and <OrdinalLess1000000000Pad>
  314. // Ordinal, Less than 1,000,000,000,000, not padded with zeros, without ending
  315. <OrdinalLess1000000000000Not> = <Less100Not> <OrdinalLess1000000000000Not2>
  316. <OrdinalLess1000000000000Not> = <Less1000Not> <OrdinalLess1000000000000Not2>
  317. <OrdinalLess1000000000000Not2> = billionth "000000000"
  318. <OrdinalLess1000000000000Not2> = billion [opt] and <OrdinalLess1000000000Pad>
  319. // Ordinal, Less than 1,000,000,000, padded with zeros, without ending
  320. <OrdinalLess1000000000Pad> = "000" <OrdinalLess1000000Pad>
  321. <OrdinalLess1000000000Pad> = million [opt] and "001" <OrdinalLess1000000Pad>
  322. <OrdinalLess1000000000Pad> = <Less1000Pad> <OrdinalLess1000000000Pad2>
  323. <OrdinalLess1000000000Pad2> = millionth "000000"
  324. <OrdinalLess1000000000Pad2> = million [opt] and <OrdinalLess1000000Pad>
  325. // Ordinal Less than 1,000,000,000, not padded with zeros, without ending
  326. <OrdinalLess1000000000Not> = <Less100Not> <OrdinalLess1000000000Not2>
  327. <OrdinalLess1000000000Not> = <Less1000Not> <OrdinalLess1000000000Not2>
  328. <OrdinalLess1000000000Not2> = millionth "000000"
  329. <OrdinalLess1000000000Not2> = million [opt] and <OrdinalLess1000000Pad>
  330. // Ordinal Less than 1,000,000, padded with zeros, without ending
  331. <OrdinalLess1000000Pad> = "000" <OrdinalLess1000Pad>
  332. <OrdinalLess1000000Pad> = thousand [opt] and "001" <OrdinalLess1000Pad>
  333. <OrdinalLess1000000Pad> = <Less1000Pad> <OrdinalLess1000000Pad2>
  334. <OrdinalLess1000000Pad2> = thousandth "000"
  335. <OrdinalLess1000000Pad2> = thousandth [opt] and <OrdinalLess1000Pad>
  336. // Ordinal Less than 1,000,000, not padded with zeros, without ending
  337. <OrdinalLess1000000Not> = <1..9> thousandth "000"
  338. <OrdinalLess1000000Not> = <1..9> thousand [opt] and <OrdinalLess1000Pad>
  339. <OrdinalLess1000000Not> = <DoubleDigit> <OrdinalLess1000000Not2>
  340. <OrdinalLess1000000Not> = <TrippleDigit> <OrdinalLess1000000Not2>
  341. <OrdinalLess1000000Not2> = thousandth "000"
  342. <OrdinalLess1000000Not2> = thousand [opt] and <OrdinalLess1000Pad>
  343. // Ordinal Less than 1000, padded with zeros, without ending
  344. <OrdinalLess1000Pad> = "0" <OrdinalLess100Pad>
  345. <OrdinalLess1000Pad> = <OrdinalTrippleDigit>
  346. // Ordinal Less than 1000, not padded with zeros, without ending
  347. <OrdinalLess1000Not> = <OrdinalTrippleDigit>
  348.  
  349.  
  350.  
  351.  
  352.  
  353. [<Integer>]
  354. <Integer> = <Natural>
  355. <Integer> = <MinusNegative> "-" <Natural>
  356. <MinusNegative> = minus
  357. <MinusNegative> = negative
  358.  
  359. [<Float>]
  360. <Float> = <Integer> [opt] <Float2>
  361. <Float> = <Point> "0." <Digits>
  362. <Float2> = <Point> "." <Digits>
  363. <Point> = point
  364.  
  365. [<PluralNumber>]
  366. <PluralNumber> = <Less100Not> <PluralNumber2>
  367. <PluralNumber> = <DoubleDigitPlural> "'s"
  368. <PluralNumber> = <SingleDigitPluralWithoutOne> "'s"
  369. <PluralNumber2> = <DoubleDigitPlural> "'s"
  370. <PluralNumber2> = oh <SingleDigitPlural> "'s"
  371. <PluralNumber2> = hundreds "00's"
  372. <SingleDigitPlural> = ones "1"
  373. <SingleDigitPlural> = one's "1"
  374. <SingleDigitPlural> = <SingleDigitPluralWithoutOne>
  375. <SingleDigitPluralWithoutOne> = twos "2"
  376. <SingleDigitPluralWithoutOne> = two's "2"
  377. <SingleDigitPluralWithoutOne> = threes "3"
  378. <SingleDigitPluralWithoutOne> = three's "3"
  379. <SingleDigitPluralWithoutOne> = fours "4"
  380. <SingleDigitPluralWithoutOne> = four's "4"
  381. <SingleDigitPluralWithoutOne> = fives "5"
  382. <SingleDigitPluralWithoutOne> = five's "5"
  383. <SingleDigitPluralWithoutOne> = sixes "6"
  384. <SingleDigitPluralWithoutOne> = six's "6"
  385. <SingleDigitPluralWithoutOne> = sevens "7"
  386. <SingleDigitPluralWithoutOne> = seven's "7"
  387. <SingleDigitPluralWithoutOne> = eights "8"
  388. <SingleDigitPluralWithoutOne> = eight's "8"
  389. <SingleDigitPluralWithoutOne> = nines "9"
  390. <SingleDigitPluralWithoutOne> = nine's "9"
  391. <DoubleDigitPlural> = tens "10"
  392. <DoubleDigitPlural> = ten's "10"
  393. <DoubleDigitPlural> = elevens "11"
  394. <DoubleDigitPlural> = eleven's "11"
  395. <DoubleDigitPlural> = twelves "12"
  396. <DoubleDigitPlural> = twelve's "12"
  397. <DoubleDigitPlural> = thirteens "13"
  398. <DoubleDigitPlural> = thirteen's "13"
  399. <DoubleDigitPlural> = fourteens "14"
  400. <DoubleDigitPlural> = fourteen's "14"
  401. <DoubleDigitPlural> = fifteens "15"
  402. <DoubleDigitPlural> = fifteen's "15"
  403. <DoubleDigitPlural> = sixteens "16"
  404. <DoubleDigitPlural> = sixteen's "16"
  405. <DoubleDigitPlural> = seventeens "17"
  406. <DoubleDigitPlural> = seventeen's "17"
  407. <DoubleDigitPlural> = eighteens "18"
  408. <DoubleDigitPlural> = eighteen's "18"
  409. <DoubleDigitPlural> = nineteens "19"
  410. <DoubleDigitPlural> = nineteen's "19"
  411. <DoubleDigitPlural> = twenties "20"
  412. <DoubleDigitPlural> = twenty's "20"
  413. <DoubleDigitPlural> = twenty "2" <SingleDigitPlural>
  414. <DoubleDigitPlural> = thirties "30"
  415. <DoubleDigitPlural> = thirty's "30"
  416. <DoubleDigitPlural> = thirty "3" <SingleDigitPlural>
  417. <DoubleDigitPlural> = forties "40"
  418. <DoubleDigitPlural> = forty's "40"
  419. <DoubleDigitPlural> = forty "4" <SingleDigitPlural>
  420. <DoubleDigitPlural> = fifties "50"
  421. <DoubleDigitPlural> = fifty's "50"
  422. <DoubleDigitPlural> = fifty "5" <SingleDigitPlural>
  423. <DoubleDigitPlural> = sixties "60"
  424. <DoubleDigitPlural> = sixty's "60"
  425. <DoubleDigitPlural> = sixty "6" <SingleDigitPlural>
  426. <DoubleDigitPlural> = seventies "70"
  427. <DoubleDigitPlural> = seventy's "70"
  428. <DoubleDigitPlural> = seventy "7" <SingleDigitPlural>
  429. <DoubleDigitPlural> = eighties "80"
  430. <DoubleDigitPlural> = eighty's "80"
  431. <DoubleDigitPlural> = eighty "8" <SingleDigitPlural>
  432. <DoubleDigitPlural> = nineties "90"
  433. <DoubleDigitPlural> = ninety's "90"
  434. <DoubleDigitPlural> = ninety "9" <SingleDigitPlural>
  435.  
  436. [<1..9>]
  437. <1..9> = one "1"
  438. <1..9> = two "2"
  439. <1..9> = three "3"
  440. <1..9> = four "4"
  441. <1..9> = five "5"
  442. <1..9> = six "6"
  443. <1..9> = seven "7"
  444. <1..9> = eight "8"
  445. <1..9> = nine "9"
  446.  
  447. [<Ordinal1..9>]
  448. <Ordinal1..9> = first "1"
  449. <Ordinal1..9> = second "2"
  450. <Ordinal1..9> = third "3"
  451. <Ordinal1..9> = fourth "4"
  452. <Ordinal1..9> = fifth "5"
  453. <Ordinal1..9> = sixth "6"
  454. <Ordinal1..9> = seventh "7"
  455. <Ordinal1..9> = eighth "8"
  456. <Ordinal1..9> = ninth "9"
  457.  
  458. [<0..9>]
  459. <0..9> = zero "0"
  460. <0..9> = oh "0"
  461. <0..9> = <1..9>
  462.  
  463. [<Ordinal0..9>]
  464. // Ordinal Zero through nine, without ending
  465. <Ordinal0..9> = zeroth "0"
  466. <Ordinal0..9> = <Ordinal1..9>
  467.  
  468. [<10..19>]
  469. <10..19> = ten "10"
  470. <10..19> = eleven "11"
  471. <10..19> = twelve "12"
  472. <10..19> = thirteen "13"
  473. <10..19> = fourteen "14"
  474. <10..19> = fifteen "15"
  475. <10..19> = sixteen "16"
  476. <10..19> = seventeen "17"
  477. <10..19> = eighteen "18"
  478. <10..19> = nineteen "19"
  479.  
  480. [<Ordinal10..19>]
  481. <Ordinal10..19> = tenth "10"
  482. <Ordinal10..19> = eleventh "11"
  483. <Ordinal10..19> = twelfth "12"
  484. <Ordinal10..19> = thirteenth "13"
  485. <Ordinal10..19> = fourteenth "14"
  486. <Ordinal10..19> = fifteenth "15"
  487. <Ordinal10..19> = sixteenth "16"
  488. <Ordinal10..19> = seventeenth "17"
  489. <Ordinal10..19> = eighteenth "18"
  490. <Ordinal10..19> = nineteenth "19"
  491.  
  492. [<20..99>]
  493. <20..99> = <20.31>
  494. <20..99> = <32.99>
  495.  
  496. [<20.31>]
  497. <20.31> = twenty "20"
  498. <20.31> = twenty "2" <1..9>
  499. <20.31> = thirty "30"
  500.  
  501. [<32.99>]
  502. <32.99> = thirty "3" <1..9>
  503. <32.99> = forty "40"
  504. <32.99> = forty "4" <1..9>
  505. <32.99> = fifty "50"
  506. <32.99> = fifty "5" <1..9>
  507. <32.99> = sixty "60"
  508. <32.99> = sixty "6" <1..9>
  509. <32.99> = seventy "70"
  510. <32.99> = seventy "7" <1..9>
  511. <32.99> = eighty "80"
  512. <32.99> = eighty "8" <1..9>
  513. <32.99> = ninety "90"
  514. <32.99> = ninety "9" <1..9>
  515.  
  516. [<Ordinal20..99>]
  517. <Ordinal20..99> = twentieth "20"
  518. <Ordinal20..99> = twenty "2" <Ordinal1..9>
  519. <Ordinal20..99> = thirtieth "30"
  520. <Ordinal20..99> = thirty "3" <Ordinal1..9>
  521. <Ordinal20..99> = fortieth "40"
  522. <Ordinal20..99> = forty "4" <Ordinal1..9>
  523. <Ordinal20..99> = fiftieth "50"
  524. <Ordinal20..99> = fifty "5" <Ordinal1..9>
  525. <Ordinal20..99> = sixtieth "60"
  526. <Ordinal20..99> = sixty "6" <Ordinal1..9>
  527. <Ordinal20..99> = seventieth "70"
  528. <Ordinal20..99> = seventy "7" <Ordinal1..9>
  529. <Ordinal20..99> = eightieth "80"
  530. <Ordinal20..99> = eighty "8" <Ordinal1..9>
  531. <Ordinal20..99> = ninetieth "90"
  532. <Ordinal20..99> = ninety "9" <Ordinal1..9>
  533.  
  534. [<DoubleDigit>]
  535. <DoubleDigit> = <20..99>
  536. <DoubleDigit> = <10..19>
  537.  
  538. [<OrdinalDoubleDigit>]
  539. <OrdinalDoubleDigit> = <Ordinal20..99>
  540. <OrdinalDoubleDigit> = <Ordinal10..19>
  541.  
  542. [<TrippleDigit>]
  543. <TrippleDigit> = hundred "1" <Less100Pad>
  544. <TrippleDigit> = <1..9> <TrippleDigit2>
  545. <TrippleDigit2> = hundred [opt] and <Less100Pad>
  546. <TrippleDigit2> = hundred "00"
  547.  
  548. [<OrdinalTrippleDigit>]
  549. <OrdinalTrippleDigit> = hundred "1" <OrdinalLess100Pad>
  550. <OrdinalTrippleDigit> = <1..9> hundred [opt] and <OrdinalLess100Pad>
  551. <OrdinalTrippleDigit> = <1..9> hundredth "00"
  552.  
  553. [<Less100Not>]
  554. // Less that 100, not padded with zeros
  555. <Less100Not> = <1..9>
  556. <Less100Not> = <DoubleDigit>
  557. <Less100Not> = zero "0"
  558.  
  559. [<OrdinalLess100Not>]
  560. // Ordinal, Less that 100, not padded with zeros, without ending
  561. <OrdinalLess100Not> = <Ordinal1..9>
  562. <OrdinalLess100Not> = <OrdinalDoubleDigit>
  563. <OrdinalLess100Not> = zeroeth "0"
  564.  
  565. [<Less100Pad>]
  566. // Less that 100, padded with zeros
  567. <Less100Pad> = "0" <1..9>
  568. <Less100Pad> = <DoubleDigit>
  569. <Less100Pad> = zero "00"
  570.  
  571. [<OrdinalLess100Pad>]
  572. // Ordinal Less that 100, padded with zeros, without ending
  573. <OrdinalLess100Pad> = "0" <Ordinal1..9>
  574. <OrdinalLess100Pad> = <OrdinalDoubleDigit>
  575. <OrdinalLess100Pad> = zeroeth "00"
  576.  
  577. [<Less1000Not>]
  578. // Less than 1000, not padded with zeros
  579. <Less1000Not> = <TrippleDigit>
  580.  
  581. [<Less1000Pad>]
  582. // Less than 1000, padded with zeros
  583. <Less1000Pad> = "0" <Less100Pad>
  584. <Less1000Pad> = <TrippleDigit>
  585.  
  586. [<Less1000000Not>]
  587. // Less than 1,000,000, not padded with zeros
  588. <Less1000000Not> = <1..9> thousand "000"
  589. <Less1000000Not> = <1..9> thousand [opt] and <Less1000Pad>
  590. <Less1000000Not> = <DoubleDigit> <Less1000000Not2>
  591. <Less1000000Not> = <TrippleDigit> <Less1000000Not2>
  592. <Less1000000Not2> = thousand "000"
  593. <Less1000000Not2> = thousand [opt] and <Less1000Pad>
  594.  
  595.