home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / SPEECH / SPCHAPI.EXE / RCDATA / CABINET / vcmd.exe / BINARY / 113 < prev    next >
Text File  |  1999-01-12  |  57KB  |  1,640 lines

  1. [Space]
  2. "\n" "" ""
  3. "\r" "" ""
  4. "\t" "" ""
  5.  
  6. "" "\n" ""
  7. "" "\r" ""
  8. "" "\t" ""
  9.  
  10. "" "." ""
  11. "" "," ""
  12. "" "\\" ""
  13. "\\" "" ""
  14. "" ":" ""
  15. "" ";" ""
  16. "" "%" ""
  17. "" "?" ""
  18. "" "!" ""
  19.  
  20. ".www" "" ""
  21. "" ".com" ""
  22.  
  23. "\" " "" ""
  24. "" "\"" " " {E"\""}
  25. "" "\"" ""  {O"\""}
  26.  
  27. "' " "" ""
  28. "" "'" " " {E"'"}
  29. "" "'" ""  {O"'"}
  30.  
  31. "\"." "" "  " {1}
  32. "\"." "" " "  {!1}
  33.  
  34. "\"?" "" "  " {1}
  35. "\"?" "" " "  {!1}
  36.  
  37. "\"!" "" "  " {1}
  38. "\"!" "" " "  {!1}
  39.  
  40. "'." "" "  " {1}
  41. "'." "" " "  {!1}
  42.  
  43. "'?" "" "  " {1}
  44. "'?" "" " "  {!1}
  45.  
  46. "'!" "" "  " {1}
  47. "'!" "" " "  {!1}
  48.  
  49. ")." "" "  " {1}
  50. ")." "" " "  {!1}
  51.  
  52. ")?" "" "  " {1}
  53. ")?" "" " "  {!1}
  54.  
  55. ")!" "" "  " {1}
  56. ")!" "" " "  {!1}
  57.  
  58. "/" "" "" {!23}
  59. "/" "" " " {23}
  60. "" "/" "" {!23}
  61. "" "/" " " {23}
  62.  
  63. "* " "" ""
  64. "" "*" " " {E"*"}
  65. "" "*" ""  {O"*"}
  66.  
  67. "(" "" ""
  68. "A" ")" ""
  69.  
  70. "[" "" ""
  71. "A" "]" ""
  72.  
  73. "{" "" ""
  74. "A" "}" ""
  75.  
  76. "<" "" ""
  77. "A" ">" ""
  78.  
  79. .\dot "" ""
  80. "" .\dot ""
  81.  
  82. "@" "" ""
  83. "" "@" ""
  84. @\at-sign "" ""
  85. "" @\at-sign ""
  86.  
  87. .\period "" "  " {1}
  88. .\period "" " "  {!1}
  89. . "" "  " {1}
  90. . "" " "  {!1}
  91.  
  92. "?" "" "  " {1}
  93. "?" "" " "  {!1}
  94.  
  95. "!" "" "  " {1}
  96. "!" "" " "  {!1}
  97.  
  98.  
  99. "" "/" ""
  100. "/A" "" ""
  101.  
  102. "" "-0" " "
  103. "" "-1" " "
  104. "" "-2" " "
  105. "" "-3" " "
  106. "" "-4" " "
  107. "" "-5" " "
  108. "" "-6" " "
  109. "" "-7" " "
  110. "" "-8" " "
  111. "" "-9" " "
  112.  
  113. "-" "-" ""
  114. "--" "" " "
  115. "" "--" " "
  116. "-A" "" ""
  117. "" "-" ""
  118.  
  119.  
  120.  
  121. [Capital]
  122. .\period
  123. .
  124. !\exclamation-point
  125. !
  126. ?\question-mark
  127. ?
  128.  
  129. Mr.
  130. Mrs.
  131. Ms.
  132. Dr.
  133. Mme.
  134.  
  135. bullet-text
  136. item-one
  137. item-two
  138. item-three
  139. item-four
  140. item-five
  141. item-six
  142. item-seven
  143. item-eight
  144. item-nine
  145. item-ten
  146. item-eleven
  147. item-twelve
  148. item-thirteen
  149. item-fourteen
  150. item-fifteen
  151. item-sixteen
  152. item-seventeen
  153. item-eighteen
  154. item-nineteen
  155.  
  156. "\n"
  157. "\r"
  158. "\t"
  159.  
  160. "\"\n"
  161. "\"\r"
  162. "\"\t"
  163.  
  164. "\"."
  165. "\"?"
  166. "\"!"
  167. " \"."
  168. " \"?"
  169. " \"!"
  170. "  \"."
  171. "  \"?"
  172. "  \"!"
  173.  
  174. "\" ."
  175. "\" ?"
  176. "\" !"
  177. "\"  ."
  178. "\"  ?"
  179. "\"  !"
  180.  
  181. "'."
  182. "'?"
  183. "'!"
  184. " '."
  185. " '?"
  186. " '!"
  187. "  '."
  188. "  '?"
  189. "  '!"
  190.  
  191. "' ."
  192. "' ?"
  193. "' !"
  194. "'  ."
  195. "'  ?"
  196. "'  !"
  197.  
  198. "( ."
  199. "( ?"
  200. "( !"
  201. "(  ."
  202. "(  ?"
  203. "(  !"
  204.  
  205. ")?"
  206. ")!"
  207. ")."
  208. " )."
  209. " )?"
  210. " )!"
  211. "  )."
  212. "  )?"
  213. "  )!"
  214.  
  215. "-\r"
  216. "-\n"
  217. ".1"
  218. ".2"
  219. ".3"
  220. ".4"
  221. ".5"
  222. ".6"
  223. ".7"
  224. ".8"
  225. ".9"
  226. ".0"
  227.  
  228. "?"
  229. "!"
  230. " ?"
  231. " !"
  232. "  ?"
  233. "  !"
  234.  
  235.  
  236. [Switch]
  237. 1= 1 "Spaces Between Sentences" "Places two spaces between sentences ending with a period, question mark, and exclamation point."
  238. 2= 1 "Time" "Converts times (ex: 'ten oh two p m' = '10:02 PM')"
  239. 3= 1 "Currency" "Converts currency (ex: 'three dollars and fifteen cents' = '$3.15')"
  240. 4= 1 "Fractions" "Converts fractions (ex: 'one and one half' = '1 1/2')"
  241. 5= 1 "Phone Numbers" "Converts phone numbers"
  242. 6= 1 "Acronyms" "Converts acronyms (ex: 'f. b. i.' to 'FBI')"
  243. 7= 1 "Years" "Converts years (ex: 'nineteen ninety four' to '1994')"
  244. 8= 1 "Numbers (20+)" "Converts all numbers above 19 to numerical form (ex: 'eighty two' to '82')"
  245. 9= 1 "Measurements" "Converts measurements (ex: 'fifteen feet' to '15 ft.')"
  246. 10= 1 "Degrees" "Converts degrees (ex: 'eight degrees' to '8░')"
  247. 11= 1 "Dates" "Converts dates (ex: 'november first nineteen sixty-nine' to 'November 1, 1969')"
  248. 12= 1 "Numeric Streets" "Converts numeric streets (ex: 'fifty first street' to '51st St.')"
  249. 13= 1 "Copyright" "Converts copyrighted dates (ex: 'copyright nineteen ninety-seven' to '⌐1997')"
  250. 14= 1 "State and Zip" "Converts a state followed by a zip code (ex: 'new york one four oh five two' to 'NY, 14052')"
  251. 15= 1 "Currency, decimal" "Automatically appends .00 to the number of dollars."
  252. 16= 0 "Acronyms, period" "Places a period after every letter."
  253. 17= 0 "Currency, cents" "Uses the cent marker for sub-dollar amounts. (ex: 'fifty two cents' to '52ó')"
  254. 18= 0 "Dates, numbers" "Shows dates as numbers. (ex: 'march nineteen ninety-six' to '3/1996')"
  255. 19= 1 "Digits" "Converts a series of digits (ex: 'one two three' to '123')"
  256. 20= 0 "Numbers (All)" "Converts all numbers (including 19 or below) to numerical form, instead of words. (ex: 'five' to '5')"
  257. 21= 1 "Number to #" "Converts the word 'number' to '#' if it occurs before a number."
  258. 22= 1 "Ratios" "Converts '<number> colon <number>' (ex: 'five colon fifteen' to '5:15')"
  259. 23= 0 "Spaces around slash" "Puts spaces around the slash character. (ex: 'one slash four' to '1 / 4' instead of '1/4')"
  260.  
  261. [Rules]
  262. // Start
  263. <Start> = {6} <Acronym>
  264. <Start> = {19} <Digits>
  265. <Start> = {3} <Currency>
  266. <Start> = {2} <Time>
  267. <Start> = {5} <PhoneNum>
  268. <Start> = {7} <DoubleNumber>
  269. <Start> = {7} <PluralNumber>
  270. <Start> = {8} {!20} <OrdinalEnd19>
  271. <Start> = {8} {!20} <Float19>
  272. <Start> = {20} <Float>
  273. <Start> = {9} <Measurement>
  274. <Start> = {10} <Degrees>
  275. <Start> = {11} <Dates>
  276. <Start> = {12} <Streets>
  277. <Start> = {13} <Copyright>
  278. <Start> = {14} <StateZip>
  279. <Start> = {21} number "#" <Float>
  280. <Start> = {22} <Ratios>
  281. <Start> = {4} <Fraction>
  282.  
  283. // State & zip code, putting comma in
  284. <StateZip> = ", " <State> " " <Digits>
  285. <StateZip> = ", " <Province> " " <LetterWithO> <O0..9> <LetterWithO> <O0..9> <LetterWithO> <O0..9>
  286. <State> = Alabama    "AL"
  287. <State> = Alaska "AK"
  288. <State> = American Samoa "AS"
  289. <State> = Arizona "AZ"
  290. <State> = Arkansas "AR"
  291. <State> = California "CA"
  292. <State> = Colorado "CO"
  293. <State> = Connecticut "CT"
  294. <State> = Delaware "DE"
  295. <State> = District of Columbia DC"
  296. <State> = Federated States of Micronesia "FM"
  297. <State> = Florida "FL"
  298. <State> = Georgia "GA"
  299. <State> = Guam "GU"
  300. <State> = Hawaii "HI"
  301. <State> = Idaho "ID"
  302. <State> = Illinois "IL"
  303. <State> = Indiana "IN"
  304. <State> = Iowa "IA"
  305. <State> = Kansas "KS"
  306. <State> = Kentucky "KY"
  307. <State> = Louisiana "LA"
  308. <State> = Maine "ME"
  309. <State> = Marshall Islands "MH"
  310. <State> = Maryland "MD"
  311. <State> = Massachusetts "MA"
  312. <State> = Michigan "MI"
  313. <State> = Minnesota "MN"
  314. <State> = Mississippi "MS"
  315. <State> = Missouri "MO"
  316. <State> = Montana "MT"
  317. <State> = Nebraska "NE"
  318. <State> = Nevada "NV"
  319. <State> = New Hampshire "NH"
  320. <State> = New Jersey "NJ"
  321. <State> = New Mexico "NM"
  322. <State> = New York "NY"
  323. <State> = North Carolina "NC"
  324. <State> = North Dakota "ND"
  325. <State> = Northern Mariana Island "MP"
  326. <State> = Ohio "OH"
  327. <State> = Oklahoma "OK"
  328. <State> = Oregon "OR"
  329. <State> = Pennsylvania "PA"
  330. <State> = Puerto Rico "PR"
  331. <State> = Rhode Island "RI"
  332. <State> = South Carolina "SC"
  333. <State> = South Dakota "SD"
  334. <State> = Texas "TX"
  335. <State> = Utah "UT"
  336. <State> = Vermont "VT"
  337. <State> = Virginia "VA"
  338. <State> = Virgin Islands "VI"
  339. <State> = Washington "WA"
  340. <State> = Washington D. C. "Washington, DC"
  341. <State> = Washington DC "Washington, DC"
  342. <State> = West Virginia "WV"
  343. <State> = Wisconsin "WI"
  344. <State> = Wyoming "WY"
  345. <Province> = Alberta "AL"
  346. <Province> = British Columbia "BC"
  347. <Province> = Manitoba "MB"
  348. <Province> = New Brunswick "NB"
  349. <Province> = Newfoundland and Labrador "NF"
  350. <Province> = Newfoundland "NF"
  351. <Province> = Labrador "NF"
  352. <Province> = Northwest Territories "NT"
  353. <Province> = Ontario "ON"
  354. <Province> = Prince Edward Island "PE"
  355. <Province> = Quebec "PQ"
  356. <Province> = Saskatchewan "SK"
  357.  
  358. // Phone numbers
  359. <PhoneNum> = area code <ThreeDigits> [opt] <DashSlash> "-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  360. <PhoneNum> = <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  361. <PhoneNum> = <ThreeDigits> [opt] <DashSlash> "-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  362. <PhoneNum> = one "1-" <ThreeDigits> [opt] <DashSlash> "-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  363. <PhoneNum> = one eight hundred "1-800-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  364. <PhoneNum> = one nine hundred "1-900-" <ThreeDigits> [opt] <DashSlash> "-" <FourDigits>
  365. <PhoneNum> = X. "x" [1+] <O0..9>
  366. <PhoneNum> = extension "x" [1+] <O0..9>
  367. <ThreeDigits> = <O0..9> <O0..9> <O0..9>
  368. <FourDigits> = <O0..9> <O0..9> <O0..9> <O0..9>
  369. <DashSlash> = -\dash
  370. <DashSlash> = dash
  371. <DashSlash> = /\slash
  372. <DashSlash> = slash
  373. <O0..9> = O. "0"
  374. <O0..9> = oh "0"
  375. <O0..9> = <0..9>
  376.  
  377.  
  378. // Copyright
  379. <Copyright> = copyright "⌐" <Year>
  380.  
  381. // Streets
  382. <Streets> = <OrdinalEnd> [opt] <StreetDirectSpace> <StreetAve> [opt] <StreetDirectSpace>
  383. <Streets> = <LetterWithONoA> <StreetAve>
  384. <Streets> = <StreetAve> <StreetDirectSpace>
  385. <Streets> = <StreetDirect> " " <OrdinalEnd> <StreetAve>
  386. <StreetAve> = street " St." [opt] .\period
  387. <StreetAve> = drive " Dr." [opt] .\period
  388. <StreetAve> = ave " Ave." [opt] .\period
  389. <StreetAve> = avenue " Ave." [opt] .\period
  390. <StreetAve> = boulevard " Blvd." [opt] .\period
  391. <StreetAve> = place " Pl." [opt] .\period
  392. <StreetAve> = court " Ct." [opt] .\period
  393. <StreetAve> = road " Rd." [opt] .\period
  394. //<StreetAve> = way " Way"
  395. <StreetAve> = loop " Loop"
  396. <StreetDirectSpace> = " " <StreetDirect>
  397. <StreetDirect> = north "N"
  398. <StreetDirect> = south "S"
  399. <StreetDirect> = east "E"
  400. <StreetDirect> = west "W"
  401. <StreetDirect> = north-east "NE"
  402. <StreetDirect> = northeast  "NE"
  403. <StreetDirect> = north east "NE"
  404. <StreetDirect> = north-west "NW"
  405. <StreetDirect> = northwest  "NW"
  406. <StreetDirect> = north west "NW"
  407. <StreetDirect> = south-east "SE"
  408. <StreetDirect> = southeast  "SE"
  409. <StreetDirect> = south east "SE"
  410. <StreetDirect> = south-west "SW"
  411. <StreetDirect> = southwest  "SW"
  412. <StreetDirect> = south west "SW"
  413.  
  414. // Dates
  415. <Dates> = {!18} <Month> " " <Ordinal>
  416. <Dates> = {!18} <Month> " " <Ordinal> [opt] ,\comma ", " <Year>
  417. <Dates> = {!18} <Month> " " <1..31>
  418. <Dates> = {!18} <Month> " " <1..31> [opt] ,\comma ", " <Year>
  419. <Dates> = {!18} <Month> " " <YearMore31>
  420. <Dates> = {18} <MonthNumber> "/" <Ordinal>
  421. <Dates> = {18} <MonthNumber> "/" <Ordinal> "/" <Year>
  422. <Dates> = {18} <MonthNumber> "/" <Year>
  423. <Dates> = {18} <MonthNumber> "/" <1..31> "/" <Year>
  424. <Year> = <DoubleNumber>
  425. <Year> = <Less1000000Not>
  426. <Year> = <Less1000Not>
  427. <Year> = {!18} "'" <Less100Not>
  428. <Year> = {18} <Less100Not>
  429. <YearMore31> = <DoubleNumber>
  430. <YearMore31> = <Less1000000Not>
  431. <YearMore31> = <Less1000Not>
  432. <YearMore31> = {!18} "'" <32.99>
  433. <YearMore31> = {18} <32.99>
  434. <Month> = January "January"
  435. <Month> = February "February"
  436. <Month> = March "March"
  437. <Month> = April "April"
  438. <Month> = May "May"
  439. <Month> = June "June"
  440. <Month> = July "July"
  441. <Month> = August "August"
  442. <Month> = September "September"
  443. <Month> = October "October"
  444. <Month> = November "November"
  445. <Month> = December "December"
  446. <MonthNumber> = January "1"
  447. <MonthNumber> = February "2"
  448. <MonthNumber> = March "3"
  449. <MonthNumber> = April "4"
  450. <MonthNumber> = May "5"
  451. <MonthNumber> = June "6"
  452. <MonthNumber> = July "7"
  453. <MonthNumber> = August "8"
  454. <MonthNumber> = September "9"
  455. <MonthNumber> = October "10"
  456. <MonthNumber> = November "11"
  457. <MonthNumber> = December "12"
  458. <1..31> = <1..9>
  459. <1..31> = <10.19>
  460. <1..31> = <20.31>
  461.  
  462. // Time
  463. <Time> = <Hours> o'clock ":00" [opt] <AMPM>
  464. <Time> = <Hours> ":" <Minutes> [opt] <AMPM>
  465. <Time> = <Hours> ":00" <AMPM>
  466. <Time> = <Natural> hundred hours ":00"
  467. <Time> = <Natural> ":" <Minutes> hours
  468. <Time> = quarter <PastAfter> <Hours> ":15" [opt] <AMPM>
  469. <Time> = quarter <PastAfter> noon "12:15 PM"
  470. <Time> = quarter <PastAfter> midnight "12:15 AM"
  471. <Time> = half <PastAfter> <Hours> ":30" [opt] <AMPM>
  472. <Time> = half <PastAfter> noon "12:30 PM"
  473. <Time> = half <PastAfter> midnight "12:30 AM"
  474. <Time> = quarter <BeforeTo> <HoursMinus1> ":45" [opt] <AMPM>
  475. <Time> = quarter <BeforeTo> noon "11:45 AM"
  476. <Time> = quarter <BeforeTo> midnight "11:45 PM"
  477. <PastAfter> = past
  478. <PastAfter> = after
  479. <BeforeTo> = before
  480. <BeforeTo> = to
  481. <BeforeTo> = 'til
  482. <BeforeTo> = til
  483. <Minutes> = <DoubleDigit>
  484. <Minutes> = oh "0" <0..9>
  485. <Minutes> = O. "0" <0..9>
  486. <Hours> = <1..9>
  487. <Hours> = ten "10"
  488. <Hours> = eleven "11"
  489. <Hours> = twelve "12"
  490. <HoursMinus1> = one "12"
  491. <HoursMinus1> = two "1"
  492. <HoursMinus1> = three "2"
  493. <HoursMinus1> = four "3"
  494. <HoursMinus1> = five "4"
  495. <HoursMinus1> = six "5"
  496. <HoursMinus1> = seven "6"
  497. <HoursMinus1> = eight "7"
  498. <HoursMinus1> = nine "8"
  499. <HoursMinus1> = ten "9"
  500. <HoursMinus1> = eleven "10"
  501. <HoursMinus1> = twelve "11"
  502. <AMPM> = a. m. " AM"
  503. <AMPM> = a.m. " AM"
  504. <AMPM> = am " AM"
  505. <AMPM> = p. m. " PM"
  506. <AMPM> = p.m. " PM"
  507. <AMPM> = pm " PM"
  508.  
  509. // Degrees (also temperature)
  510. <Degrees> = <Float> <DegreePl> "░" [opt] <Degrees2>
  511. <DegreePl> = degree
  512. <DegreePl> = degrees
  513. <Degrees2> = fahrenheit "F"
  514. <Degrees2> = celcius "C"
  515. <Degrees2> = celsius "C"
  516. <Degrees2> = <NSEW>
  517. <Degrees2> = [opt] and " " <Float> <MinutePl> "'" [opt] <Degrees3> [opt] <NSEW>
  518. <Degrees3> = [opt] and " " <Float> <SecondPl> "''"
  519. <MinutePl> = minute
  520. <MinutePl> = minutes
  521. <SecondPl> = second
  522. <SecondPl> = seconds
  523. <NSEW> = north " N." [opt] .\period
  524. <NSEW> = south " S." [opt] .\period
  525. <NSEW> = east " E." [opt] .\period
  526. <NSEW> = west " W." [opt] .\period
  527.  
  528. // Measurements, such as 23.9 ft.
  529. <Measurement> = <Float> [opt] <ToMeasurement> <UnitEnding>
  530. <Measurement> = <Fraction> [opt] <ToMeasurement> <UnitEnding>
  531. <ToMeasurement> = <MeasTo> " - " <Float>
  532. <ToMeasurement> = <MeasTo> " - "<Fraction>
  533. <MeasTo> = to
  534. <MeasTo> = dash
  535. <MeasTo> = -\dash
  536. <MeasTo> = through
  537.  
  538. <UnitEnding> = <UnitArea>
  539. <UnitEnding> = <UnitDistance>
  540. <UnitEnding> = <UnitVolume>
  541. <UnitEnding> = <UnitWeight>
  542. <UnitEnding> = <UnitSpeed>
  543. <UnitEnding> = <UnitMemory>
  544. <UnitEnding> = <UnitFrequency>
  545. <UnitEnding> = <Energy>
  546. <UnitEnding> = <UnitTime>
  547. <UnitEnding> = square " sq. " <UnitDistance>
  548. <UnitEnding> = cubix " cb. " <UnitDistance>
  549. <UnitEnding> = percent "%"
  550. <UnitEnding> = %\percent "%"
  551.  
  552. <UnitMemory> = K. "K"
  553. <UnitMemory> = KB "KB"
  554. <UnitMemory> = K. B. "KB"
  555. <UnitMemory> = kilobyte "KB"
  556. <UnitMemory> = kilobyte "KB"
  557. <UnitMemory> = kilobytes "KB"
  558. <UnitMemory> = K-byte "KB"
  559. <UnitMemory> = K-bytes "KB"
  560. <UnitMemory> = meg "MB"
  561. <UnitMemory> = megs "MB"
  562. <UnitMemory> = megabyte "MB"
  563. <UnitMemory> = megabytes "MB"
  564. <UnitMemory> = gig "GB"
  565. <UnitMemory> = gigs "GB"
  566. <UnitMemory> = gigabyte "GB"
  567. <UnitMemory> = gigabytes "GB"
  568. <UnitMemory> = terabyte "TB"
  569. <UnitMemory> = terabytes "TB"
  570.  
  571. <Energy> = watt " W"
  572. <Energy> = watts " W"
  573. <Energy> = kilowatt " kW"
  574. <Energy> = kilowatts " kW"
  575. <Energy> = kilowatt hour " kWh"
  576. <Energy> = kilowatt hours " kWh"
  577.  
  578. <UnitTime> = ms " ms." [opt] .\period
  579. <UnitTime> = millisecond " ms." [opt] .\period
  580. <UnitTime> = milliseconds " ms." [opt] .\period
  581.  
  582. <UnitFrequency> = hz " Hz"
  583. <UnitFrequency> = hz. " Hz"
  584. <UnitFrequency> = hertz " Hz"
  585. <UnitFrequency> = hurts " Hz"
  586. <UnitFrequency> = mhz " mHz"
  587. <UnitFrequency> = mhz. " mHz"
  588. <UnitFrequency> = megahertz " mHz"
  589.  
  590. <UnitDistance> = mile " mi." [opt] .\period
  591. <UnitDistance> = miles " mi." [opt] .\period
  592. <UnitDistance> = of a mile " mi." [opt] .\period
  593. <UnitDistance> = yard " yd." [opt] .\period
  594. <UnitDistance> = yards " yd." [opt] .\period
  595. <UnitDistance> = of a yard " yd." [opt] .\period
  596. <UnitDistance> = foot " ft." [opt] .\period
  597. <UnitDistance> = feet " ft." [opt] .\period
  598. <UnitDistance> = of a foot " ft." [opt] .\period
  599. <UnitDistance> = inch " in." [opt] .\period
  600. <UnitDistance> = inches " in." [opt] .\period
  601. <UnitDistance> = of an inch " in." [opt] .\period
  602. <UnitDistance> = kilometer " km." [opt] .\period
  603. <UnitDistance> = kilometers " km." [opt] .\period
  604. <UnitDistance> = meter " m." [opt] .\period
  605. <UnitDistance> = meters " m." [opt] .\period
  606. <UnitDistance> = centimeter " cm." [opt] .\period
  607. <UnitDistance> = centimeters " cm." [opt] .\period
  608. <UnitDistance> = cm " cm." [opt] .\period
  609. <UnitDistance> = millimeter " mm." [opt] .\period
  610. <UnitDistance> = millimeters " mm." [opt] .\period
  611. <UnitDistance> = mm " mm." [opt] .\period
  612. <UnitDistance> = nanometer " nm." [opt] .\period
  613. <UnitDistance> = nanometers " nm." [opt] .\period
  614. <UnitDistance> = micron " mu." [opt] .\period
  615. <UnitDistance> = microns " mu." [opt] .\period
  616. <UnitDistance> = micron's " mu." [opt] .\period
  617.  
  618. <UnitArea> = acre " acre"
  619. <UnitArea> = acres " acres"
  620. <UnitArea> = hectar " hectar"
  621. <UnitArea> = hectars " hectars"
  622.  
  623. <UnitVolume> = gallon " gal." [opt] .\period
  624. <UnitVolume> = gallons " gal." [opt] .\period
  625. <UnitVolume> = cup " c." [opt] .\period
  626. <UnitVolume> = cups " c." [opt] .\period
  627. <UnitVolume> = pint " pt." [opt] .\period
  628. <UnitVolume> = pints " pts." [opt] .\period
  629. <UnitVolume> = quart " qt." [opt] .\period
  630. <UnitVolume> = quarts " qts." [opt] .\period
  631. <UnitVolume> = teaspoon " tsp." [opt] .\period
  632. <UnitVolume> = teaspoons " tsp." [opt] .\period
  633. <UnitVolume> = tablespoon " tbsp." [opt] .\period
  634. <UnitVolume> = tablespoons " tbsp." [opt] .\period
  635. <UnitVolume> = liter " l." [opt] .\period
  636. <UnitVolume> = liters " l." [opt] .\period
  637. <UnitVolume> = milliliter " ml." [opt] .\period
  638. <UnitVolume> = milliliters " ml." [opt] .\period
  639. <UnitVolume> = ml " ml." [opt] .\period
  640.  
  641. <UnitWeight> = ton " tn." [opt] .\period
  642. <UnitWeight> = tons " tn." [opt] .\period
  643. <UnitWeight> = metric ton " tn." [opt] .\period
  644. <UnitWeight> = metric tons " tn." [opt] .\period
  645. <UnitWeight> = pound " lb." [opt] .\period
  646. <UnitWeight> = pounds " lbs." [opt] .\period
  647. <UnitWeight> = ounce " oz." [opt] .\period
  648. <UnitWeight> = ounces " oz." [opt] .\period
  649. <UnitWeight> = kilogram " kg." [opt] .\period
  650. <UnitWeight> = kilograms " kg." [opt] .\period
  651. <UnitWeight> = gram " g." [opt] .\period
  652. <UnitWeight> = grams " g." [opt] .\period
  653. <UnitWeight> = milligram " mg." [opt] .\period
  654. <UnitWeight> = milligrams " mg." [opt] .\period
  655.  
  656. <UnitSpeed> = mile per hour " mph"
  657. <UnitSpeed> = miles per hour " mph"
  658. <UnitSpeed> = kilometer per hour " kmph"
  659. <UnitSpeed> = kilometers per hour " kmph"
  660.  
  661. // Currency
  662. <Currency> = {15} "$" <NaturalNotZillions> <Dollar> ".00"
  663. <Currency> = {!15} "$" <NaturalNotZillions> <Dollar>
  664. <Currency> = "$" <FloatOnly> thousand dollars " thousand"
  665. <Currency> = "$" <Float> million dollars " million"
  666. <Currency> = "$" <Float> billion dollars " billion"
  667. <Currency> = "$" <Float> trillion dollars " trillion"
  668. <Currency> = "$" <Natural19> million dollars " million"
  669. <Currency> = "$" <Natural19> billion dollars " billion"
  670. <Currency> = "$" <Natural19> trillion dollars " trillion"
  671. <Currency> = "$" <Less100Not> million dollars " million"
  672. <Currency> = "$" <Less100Not> billion dollars " billion"
  673. <Currency> = "$" <Less100Not> trillion dollars " trillion"
  674. <Currency> = "$" <Fraction> <Dollar>
  675. <Currency> = "$" <Fraction> thousand dollars " thousand"
  676. <Currency> = "$" <Fraction> million dollars " million"
  677. <Currency> = "$" <Fraction> billion dollars " billion"
  678. <Currency> = "$" <Fraction> trillion dollars " trillion"
  679. <Currency> = "$" <Natural> <Dollar> [opt] and "." <Less100Pad> <CentCents>
  680. <Currency> = "$" <FloatOnly> <Dollar>
  681. <Currency> = {!17} "$0." <Less100Pad> <CentCents>
  682. <Currency> = {17} <Float> <CentCents> "ó"
  683. <CentCents> = cent
  684. <CentCents> = cents
  685.  
  686. <Dollar> = dollar
  687. <Dollar> = dollars
  688. // BUGBUG: Other currencies
  689.  
  690. // acronyms with only letters get O. converteted to O
  691. <Acronym> = <LetterWithO> [1+] <LetterWithOOrSymbol>
  692. <Acronym> = <LetterWithO> [0+] <LetterWithOOrSymbol> <LetterPosess>
  693.  
  694. <Digits> = <O0..9> [1+] <O0..9>
  695.  
  696. <DigitLetterWithZero> = <0..9>
  697. <DigitLetterWithZero> = <LetterWithZero>
  698.  
  699. <DigitLetterWithZeroOrSymbol> = <0..9>
  700. <DigitLetterWithZeroOrSymbol> = <LetterWithZero>
  701. <DigitLetterWithZeroOrSymbol> = <Symbol>
  702.  
  703. <LetterWithOOrSymbol> = <LetterWithO>
  704. <LetterWithOOrSymbol> = <Symbol>
  705.  
  706. // Ratios
  707. <Ratios> = <Integer> colon ":" <Integer>
  708. <Ratios> = <Integer> :\colon ":" <Integer>
  709.  
  710. // Fractions
  711. <Fraction> = one "1/" <DenomS>
  712. <Fraction> = <NaturalNot1> "/" <DenomP>
  713. <Fraction> = <Integer> <Fraction2>
  714. <Fraction2> = and " " <NaturalNot1> "/" <DenomP>
  715. <Fraction2> = and one " 1/" <DenomS>
  716. <Fraction2> = and a " 1/" <DenomS>
  717. <Fraction2> = and an " 1/" <DenomS>
  718. <Fraction2> = and " " <Natural> over "/" <Natural>
  719. <Fraction2> = over "/" <Natural>
  720.  
  721. // Denonimator
  722. <Denom> = <DenomS>
  723. <Denom> = <DenumP>
  724. <DenomS> = half "2"
  725. <DenomP> = halves "2"
  726. <DenomS> = third "3"
  727. <DenomP> = thirds "3"
  728. <DenomS> = fourth "4"
  729. <DenomP> = fourths "4"
  730. <DenomS> = quarter "4"
  731. <DenomP> = quarters "4"
  732. <DenomS> = fifth "5"
  733. <DenomP> = fifths "5"
  734. <DenomS> = sixth "6"
  735. <DenomP> = sixths "6"
  736. <DenomS> = seventh "7"
  737. <DenomP> = sevenths "7"
  738. <DenomS> = eighth "8"
  739. <DenomP> = eighths "8"
  740. <DenomS> = ninth "9"
  741. <DenomP> = ninths "9"
  742. <DenomS> = tenth "10"
  743. <DenomP> = tenths "10"
  744. <DenomS> = eleventh "11"
  745. <DenomP> = elevenths "11"
  746. <DenomS> = twelfth "12"
  747. <DenomP> = twelfths "12"
  748. <DenomS> = thirteenth "13"
  749. <DenomP> = thirteenths "13"
  750. <DenomS> = fourteenth "14"
  751. <DenomP> = fourteenths "14"
  752. <DenomS> = fifteenth "15"
  753. <DenomP> = fifteenths "15"
  754. <DenomS> = sixteenth "16"
  755. <DenomP> = sixteenths "16"
  756. <DenomS> = seventeenth "17"
  757. <DenomP> = seventeenths "17"
  758. <DenomS> = eighteenth "18"
  759. <DenomP> = eighteenths "18"
  760. <DenomS> = nineteenth "19"
  761. <DenomP> = nineteenths "19"
  762. <DenomS> = twentieth "20"
  763. <DenomP> = twentieths "20"
  764. <DenomS> = thirtieth "30"
  765. <DenomP> = thirtieths "30"
  766. <DenomS> = fortieth "40"
  767. <DenomP> = fortieths "40"
  768. <DenomS> = fiftieth "50"
  769. <DenomP> = fiftieths "50"
  770. <DenomS> = sixtieth "60"
  771. <DenomP> = sixtieths "60"
  772. <DenomS> = seventieth "70"
  773. <DenomP> = seventieths "70"
  774. <DenomS> = eightieth "80"
  775. <DenomP> = eightieths "80"
  776. <DenomS> = ninetieth "90"
  777. <DenomP> = ninetieths "90"
  778. <DenomS> = hundredth "100"
  779. <DenomP> = hundredths "100"
  780. <DenomS> = thousandth "1000"
  781. <DenomP> = thousandths "1000"
  782. <DenomS> = millionth "1,000,000"
  783. <DenomP> = millionths "1,000,000"
  784. <DenomS> = billionth "1,000,000,000"
  785. <DenomP> = billionths "1,000,000,000"
  786. <DenomS> = trillionth "1,000,000,000,000"
  787. <DenomP> = trillionths "1,000,000,000,000"
  788.  
  789. // Symbols
  790. <Symbol> = ~\tilde "~"
  791. <Symbol> = tilde "~"
  792. <Symbol> = !\exclamation-point "!"
  793. <Symbol> = bang "!"
  794. <Symbol> = @\at-sign "@"
  795. <Symbol> = #\pound-sign "#"
  796. <Symbol> = #\pound "#"
  797. <Symbol> = pound "#"
  798. <Symbol> = $\dollar-sign "$"
  799. <Symbol> = %\percent "%"
  800. <Symbol> = percent "%"
  801. <Symbol> = ^\caret "^"
  802. <Symbol> = caret "^"
  803. <Symbol> = &\and-sign "&"
  804. <Symbol> = *\asterisk "*"
  805. <Symbol> = asterisk "*"
  806. <Symbol> = (\left-paren "("
  807. <Symbol> = )\right-paren ")"
  808. <Symbol> = -\dash "-"
  809. <Symbol> = dash "-"
  810. <Symbol> = _\underscore "_"
  811. <Symbol> = underscore "_"
  812. <Symbol> = /\slash "/"
  813. <Symbol> = slash "/"
  814. <Symbol> = \\backslash "\"
  815. <Symbol> = backslash "\"
  816. <Symbol> = +\plus "+"
  817. <Symbol> = plus "+"
  818. <Symbol> = =\equals "="
  819. <Symbol> = equals "="
  820. // <Symbol> = {\left-curly-brace "{"
  821. // <Symbol> = }\right-curly-brace "}"
  822. // <Symbol> = [\left-bracket "["
  823. // <Symbol> = ]\right-bracket "]"
  824. <Symbol> = |\vertical-bar "|"
  825. <Symbol> = :\colon ":"
  826. <Symbol> = colon ":"
  827. <Symbol> = ;\semicolon ";"
  828. <Symbol> = semicolon ";"
  829. // <Symbol> = <\less-than "<"
  830. // <Symbol> = >\more-than ">"
  831. <Symbol> = ?\question-mark "?"
  832. //<Symbol> = .\point " point"
  833.  
  834. // Letters
  835. <LetterWithO> = <LetterNoO>
  836. <LetterWithO> = O. "O" <PeriodAfter>
  837. <LetterWithO> = O  "O" <PeriodAfter>
  838. <LetterWithO> = oh "O" <PeriodAfter>
  839. <LetterWithONoA> = <LetterNoOA>
  840. <LetterWithONoA> = O. "O" <PeriodAfter>
  841. <LetterWithONoA> = O  "O" <PeriodAfter>
  842. <LetterWithONoA> = oh "O" <PeriodAfter>
  843. <LetterWithZero> = <LetterNoO>
  844. <LetterWithZero> = O. "0"
  845. <LetterWithZero> = O  "0"
  846. <LetterWithZero> = oh "0"
  847. <LetterNoO> = <LetterNoOA>
  848. <LetterNoO> = A "A" <PeriodAfter>
  849. <LetterNoO> = A. "A" <PeriodAfter>
  850. <LetterNoOA> = B. "B" <PeriodAfter>
  851. <LetterNoOA> = C. "C" <PeriodAfter>
  852. <LetterNoOA> = D. "D" <PeriodAfter>
  853. <LetterNoOA> = E. "E" <PeriodAfter>
  854. <LetterNoOA> = F. "F" <PeriodAfter>
  855. <LetterNoOA> = G. "G" <PeriodAfter>
  856. <LetterNoOA> = H. "H" <PeriodAfter>
  857. <LetterNoOA> = I. "I" <PeriodAfter>
  858. <LetterNoOA> = J. "J" <PeriodAfter>
  859. <LetterNoOA> = K. "K" <PeriodAfter>
  860. <LetterNoOA> = L. "L" <PeriodAfter>
  861. <LetterNoOA> = M. "M" <PeriodAfter>
  862. <LetterNoOA> = N. "N" <PeriodAfter>
  863. <LetterNoOA> = P. "P" <PeriodAfter>
  864. <LetterNoOA> = Q. "Q" <PeriodAfter>
  865. <LetterNoOA> = R. "R" <PeriodAfter>
  866. <LetterNoOA> = S. "S" <PeriodAfter>
  867. <LetterNoOA> = T. "T" <PeriodAfter>
  868. <LetterNoOA> = U. "U" <PeriodAfter>
  869. <LetterNoOA> = V. "V" <PeriodAfter>
  870. <LetterNoOA> = W. "W" <PeriodAfter>
  871. <LetterNoOA> = X. "X" <PeriodAfter>
  872. <LetterNoOA> = Y. "Y" <PeriodAfter>
  873. <LetterNoOA> = Z. "Z" <PeriodAfter>
  874. <LetterNoOA> = B "B" <PeriodAfter>
  875. <LetterNoOA> = C "C" <PeriodAfter>
  876. <LetterNoOA> = D "D" <PeriodAfter>
  877. <LetterNoOA> = E "E" <PeriodAfter>
  878. <LetterNoOA> = F "F" <PeriodAfter>
  879. <LetterNoOA> = G "G" <PeriodAfter>
  880. <LetterNoOA> = H "H" <PeriodAfter>
  881. <LetterNoOA> = I "I" <PeriodAfter>
  882. <LetterNoOA> = J "J" <PeriodAfter>
  883. <LetterNoOA> = K "K" <PeriodAfter>
  884. <LetterNoOA> = L "L" <PeriodAfter>
  885. <LetterNoOA> = M "M" <PeriodAfter>
  886. <LetterNoOA> = N "N" <PeriodAfter>
  887. <LetterNoOA> = P "P" <PeriodAfter>
  888. <LetterNoOA> = Q "Q" <PeriodAfter>
  889. <LetterNoOA> = R "R" <PeriodAfter>
  890. <LetterNoOA> = S "S" <PeriodAfter>
  891. <LetterNoOA> = T "T" <PeriodAfter>
  892. <LetterNoOA> = U "U" <PeriodAfter>
  893. <LetterNoOA> = V "V" <PeriodAfter>
  894. <LetterNoOA> = W "W" <PeriodAfter>
  895. <LetterNoOA> = X "X" <PeriodAfter>
  896. <LetterNoOA> = Y "Y" <PeriodAfter>
  897. <LetterNoOA> = Z "Z" <PeriodAfter>
  898. <PeriodAfter> = {16} "."
  899. <PeriodAfter> = {!16} ""
  900.  
  901. <LetterPosess> = A.'s "A" <PeriodAfter> "'s"
  902. <LetterPosess> = B.'s "B" <PeriodAfter> "'s"
  903. <LetterPosess> = C.'s "C" <PeriodAfter> "'s"
  904. <LetterPosess> = D.'s "D" <PeriodAfter> "'s"
  905. <LetterPosess> = E.'s "E" <PeriodAfter> "'s"
  906. <LetterPosess> = F.'s "F" <PeriodAfter> "'s"
  907. <LetterPosess> = G.'s "G" <PeriodAfter> "'s"
  908. <LetterPosess> = H.'s "H" <PeriodAfter> "'s"
  909. <LetterPosess> = I.'s "I" <PeriodAfter> "'s"
  910. <LetterPosess> = J.'s "J" <PeriodAfter> "'s"
  911. <LetterPosess> = K.'s "K" <PeriodAfter> "'s"
  912. <LetterPosess> = L.'s "L" <PeriodAfter> "'s"
  913. <LetterPosess> = M.'s "M" <PeriodAfter> "'s"
  914. <LetterPosess> = N.'s "N" <PeriodAfter> "'s"
  915. <LetterPosess> = O.'s "O" <PeriodAfter> "'s"
  916. <LetterPosess> = P.'s "P" <PeriodAfter> "'s"
  917. <LetterPosess> = Q.'s "Q" <PeriodAfter> "'s"
  918. <LetterPosess> = R.'s "R" <PeriodAfter> "'s"
  919. <LetterPosess> = S.'s "S" <PeriodAfter> "'s"
  920. <LetterPosess> = T.'s "T" <PeriodAfter> "'s"
  921. <LetterPosess> = U.'s "U" <PeriodAfter> "'s"
  922. <LetterPosess> = V.'s "V" <PeriodAfter> "'s"
  923. <LetterPosess> = W.'s "W" <PeriodAfter> "'s"
  924. <LetterPosess> = X.'s "X" <PeriodAfter> "'s"
  925. <LetterPosess> = Y.'s "Y" <PeriodAfter> "'s"
  926. <LetterPosess> = Z.'s "Z" <PeriodAfter> "'s"
  927. <LetterPosess> = A's "A" <PeriodAfter> "'s"
  928. <LetterPosess> = B's "B" <PeriodAfter> "'s"
  929. <LetterPosess> = C's "C" <PeriodAfter> "'s"
  930. <LetterPosess> = D's "D" <PeriodAfter> "'s"
  931. <LetterPosess> = E's "E" <PeriodAfter> "'s"
  932. <LetterPosess> = F's "F" <PeriodAfter> "'s"
  933. <LetterPosess> = G's "G" <PeriodAfter> "'s"
  934. <LetterPosess> = H's "H" <PeriodAfter> "'s"
  935. <LetterPosess> = I's "I" <PeriodAfter> "'s"
  936. <LetterPosess> = J's "J" <PeriodAfter> "'s"
  937. <LetterPosess> = K's "K" <PeriodAfter> "'s"
  938. <LetterPosess> = L's "L" <PeriodAfter> "'s"
  939. <LetterPosess> = M's "M" <PeriodAfter> "'s"
  940. <LetterPosess> = N's "N" <PeriodAfter> "'s"
  941. <LetterPosess> = O's "N" <PeriodAfter> "'s"
  942. <LetterPosess> = P's "P" <PeriodAfter> "'s"
  943. <LetterPosess> = Q's "Q" <PeriodAfter> "'s"
  944. <LetterPosess> = R's "R" <PeriodAfter> "'s"
  945. <LetterPosess> = S's "S" <PeriodAfter> "'s"
  946. <LetterPosess> = T's "T" <PeriodAfter> "'s"
  947. <LetterPosess> = U's "U" <PeriodAfter> "'s"
  948. <LetterPosess> = V's "V" <PeriodAfter> "'s"
  949. <LetterPosess> = W's "W" <PeriodAfter> "'s"
  950. <LetterPosess> = X's "X" <PeriodAfter> "'s"
  951. <LetterPosess> = Y's "Y" <PeriodAfter> "'s"
  952. <LetterPosess> = Z's "Z" <PeriodAfter> "'s"
  953.  
  954. // Natural Numbers
  955. <Natural> = <Less1000000000000000Not>
  956. <Natural> = <Less1000000000000Not>
  957. <Natural> = <Less1000000000Not>
  958. <Natural> = <Less1000000Not>
  959. <Natural> = <Less1000Not>
  960. <Natural> = <Less100Not>
  961.  
  962. ; natural number, but one singular
  963. <NaturalNot1> = <Less1000000000000000Not>
  964. <NaturalNot1> = <Less1000000000000Not>
  965. <NaturalNot1> = <Less1000000000Not>
  966. <NaturalNot1> = <Less1000000Not>
  967. <NaturalNot1> = <Less1000Not>
  968. <NaturalNot1> = <Less100Not>
  969. <NaturalNot1> = <2..9>
  970. <NaturalNot1> = <DoubleDigit>
  971. <NaturalNot1> = zero "0"
  972.  
  973. // Natural, except for X million, X billion, and X trillion
  974. <NaturalNotZillions> = <Less1000000000000000Not19>
  975. <NaturalNotZillions> = <Less1000000000000Not19>
  976. <NaturalNotZillions> = <Less1000000000Not19>
  977. <NaturalNotZillions> = <Less1000000Not>
  978. <NaturalNotZillions> = <Less1000Not>
  979. <NaturalNotZillions> = <Less100Not>
  980.  
  981. // Ordinal Numbers, written WITHOUT ENDING
  982. <Ordinal> = <OrdinalLess1000000000000000Not>
  983. <Ordinal> = <OrdinalLess1000000000000Not>
  984. <Ordinal> = <OrdinalLess1000000000Not>
  985. <Ordinal> = <OrdinalLess1000000Not>
  986. <Ordinal> = <OrdinalLess1000Not>
  987. <Ordinal> = <OrdinalLess100Not>
  988. <Orindal> = <Less100Not> hundredth "00"
  989.  
  990. // Ordinal Numbers, written WITH ENDING
  991. <OrdinalEnd> = <OrdinalEndLess1000000000000000Not>
  992. <OrdinalEnd> = <OrdinalEndLess1000000000000Not>
  993. <OrdinalEnd> = <OrdinalEndLess1000000000Not>
  994. <OrdinalEnd> = <OrdinalEndLess1000000Not>
  995. <OrdinalEnd> = <OrdinalEndLess1000Not>
  996. <OrdinalEnd> = <OrdinalEndLess100Not>
  997. <OrindalEnd> = <Less100Not> hundredth "00th"
  998.  
  999. // Natural Numbers, zero through 19 are written out whole
  1000. // Also, fifty six million to 56 million
  1001. <Natural19> = <Less1000000000000000Not19>
  1002. <Natural19> = <Less1000000000000Not19>
  1003. <Natural19> = <Less1000000000Not19>
  1004. <Natural19> = <Less1000000Not19>
  1005. <Natural19> = <Less1000Not>
  1006. <Natural19> = <Less100Not19>
  1007.  
  1008. // Ordinal Numbers, zero through 19 are written out whole, written WITH ENDING
  1009. <OrdinalEnd19> = <OrdinalEndLess1000000000000000Not>
  1010. <OrdinalEnd19> = <OrdinalEndLess1000000000000Not>
  1011. <OrdinalEnd19> = <OrdinalEndLess1000000000Not>
  1012. <OrdinalEnd19> = <OrdinalEndLess1000000Not>
  1013. <OrdinalEnd19> = <OrdinalEndLess1000Not>
  1014. <OrdinalEnd19> = <OrdinalEndLess100Not19>
  1015. <OrindalEnd19> = <Less100Not> hundredth "00th"
  1016.  
  1017.  
  1018. // Integer
  1019. <Integer> = <Natural>
  1020. <Integer> = <MinusNegative> "-" <Natural>
  1021. <MinusNegative> = minus
  1022. <MinusNegative> = negative
  1023.  
  1024. // Integer, 0..19 not included
  1025. <Integer19> = <Natural19>
  1026. <Integer19> = <MinusNegative> "-" <Natural19>
  1027.  
  1028. // Floating point
  1029. <Float> = <Integer>
  1030. <Float> = <FloatOnly>
  1031.  
  1032. <FloatOnly> = <Integer> <Point> "." <RepDigits1>
  1033. <FloatOnly> = <Point> "0." <RepDigits1>
  1034. <Point> = point
  1035. <Point> = .
  1036.  
  1037. // Floating point, 0..19 are not included
  1038. <Float19> = <Integer19>
  1039. <Float19> = <Integer> <Point> "." <RepDigits1>
  1040. <Float19> = <Point> "0." <RepDigits1>
  1041. <Float19> = <Digits> <Point> "." <RepDigits1>
  1042.  
  1043. // Double-number cominations, like "ninteen sixty"
  1044. <DoubleNumber> = <Less100Not> <DoubleDigit>
  1045. <DoubleNumber> = <Less100Not> oh "0" <1..9>
  1046. <DoubleNumber> = <Less100Not> hundred "00"
  1047.  
  1048. // Plural number, like 1980's
  1049. <PluralNumber> = <Less100Not> <PluralNumber2>
  1050. <PluralNumber> = <DoubleDigitPlural> "'s"
  1051. <PluralNumber> = <SingleDigitPluralWithoutOne> "'s"
  1052. <PluralNumber2> = <DoubleDigitPlural> "'s"
  1053. <PluralNumber2> = oh <SingleDigitPlural> "'s"
  1054. <PluralNumber2> = hundreds "00's"
  1055.  
  1056. <SingleDigitPlural> = ones "1"
  1057. <SingleDigitPlural> = one's "1"
  1058. <SingleDigitPlural> = <SingleDigitPluralWithoutOne>
  1059.  
  1060. <SingleDigitPluralWithoutOne> = twos "2"
  1061. <SingleDigitPluralWithoutOne> = two's "2"
  1062. <SingleDigitPluralWithoutOne> = threes "3"
  1063. <SingleDigitPluralWithoutOne> = three's "3"
  1064. <SingleDigitPluralWithoutOne> = fours "4"
  1065. <SingleDigitPluralWithoutOne> = four's "4"
  1066. <SingleDigitPluralWithoutOne> = fives "5"
  1067. <SingleDigitPluralWithoutOne> = five's "5"
  1068. <SingleDigitPluralWithoutOne> = sixes "6"
  1069. <SingleDigitPluralWithoutOne> = six's "6"
  1070. <SingleDigitPluralWithoutOne> = sevens "7"
  1071. <SingleDigitPluralWithoutOne> = seven's "7"
  1072. <SingleDigitPluralWithoutOne> = eights "8"
  1073. <SingleDigitPluralWithoutOne> = eight's "8"
  1074. <SingleDigitPluralWithoutOne> = nines "9"
  1075. <SingleDigitPluralWithoutOne> = nine's "9"
  1076.  
  1077. <DoubleDigitPlural> = tens "10"
  1078. <DoubleDigitPlural> = ten's "10"
  1079. <DoubleDigitPlural> = elevens "11"
  1080. <DoubleDigitPlural> = eleven's "11"
  1081. <DoubleDigitPlural> = twelves "12"
  1082. <DoubleDigitPlural> = twelve's "12"
  1083. <DoubleDigitPlural> = thirteens "13"
  1084. <DoubleDigitPlural> = thirteen's "13"
  1085. <DoubleDigitPlural> = fourteens "14"
  1086. <DoubleDigitPlural> = fourteen's "14"
  1087. <DoubleDigitPlural> = fifteens "15"
  1088. <DoubleDigitPlural> = fifteen's "15"
  1089. <DoubleDigitPlural> = sixteens "16"
  1090. <DoubleDigitPlural> = sixteen's "16"
  1091. <DoubleDigitPlural> = seventeens "17"
  1092. <DoubleDigitPlural> = seventeen's "17"
  1093. <DoubleDigitPlural> = eighteens "18"
  1094. <DoubleDigitPlural> = eighteen's "18"
  1095. <DoubleDigitPlural> = nineteens "19"
  1096. <DoubleDigitPlural> = nineteen's "19"
  1097. <DoubleDigitPlural> = twenties "20"
  1098. <DoubleDigitPlural> = twenty's "20"
  1099. <DoubleDigitPlural> = twenty "2" <SingleDigitPlural>
  1100. <DoubleDigitPlural> = thirties "30"
  1101. <DoubleDigitPlural> = thirty's "30"
  1102. <DoubleDigitPlural> = thirty "3" <SingleDigitPlural>
  1103. <DoubleDigitPlural> = forties "40"
  1104. <DoubleDigitPlural> = forty's "40"
  1105. <DoubleDigitPlural> = forty "4" <SingleDigitPlural>
  1106. <DoubleDigitPlural> = fifties "50"
  1107. <DoubleDigitPlural> = fifty's "50"
  1108. <DoubleDigitPlural> = fifty "5" <SingleDigitPlural>
  1109. <DoubleDigitPlural> = sixties "60"
  1110. <DoubleDigitPlural> = sixty's "60"
  1111. <DoubleDigitPlural> = sixty "6" <SingleDigitPlural>
  1112. <DoubleDigitPlural> = seventies "70"
  1113. <DoubleDigitPlural> = seventy's "70"
  1114. <DoubleDigitPlural> = seventy "7" <SingleDigitPlural>
  1115. <DoubleDigitPlural> = eighties "80"
  1116. <DoubleDigitPlural> = eighty's "80"
  1117. <DoubleDigitPlural> = eighty "8" <SingleDigitPlural>
  1118. <DoubleDigitPlural> = nineties "90"
  1119. <DoubleDigitPlural> = ninety's "90"
  1120. <DoubleDigitPlural> = ninety "9" <SingleDigitPlural>
  1121.  
  1122. // Repeating digits, 1 or more times
  1123. // BUGBUG: Because no repeat, do a hack
  1124. <RepDigits1> = [1+] <0..9>
  1125. //<RepDigits1> = <0..9>
  1126. //<RepDigits1> = <0..9> <RepDigits1>
  1127.  
  1128. // 1..9
  1129. <1..9> = <2..9>
  1130. <1..9> = one "1"
  1131. <2..9> = two "2"
  1132. <2..9> = three "3"
  1133. <2..9> = four "4"
  1134. <2..9> = five "5"
  1135. <2..9> = six "6"
  1136. <2..9> = seven "7"
  1137. <2..9> = eight "8"
  1138. <2..9> = nine "9"
  1139.  
  1140. // 1..9, ordinal without ending
  1141. <Ordinal1..9> = first "1"
  1142. <Ordinal1..9> = second "2"
  1143. <Ordinal1..9> = third "3"
  1144. <Ordinal1..9> = fourth "4"
  1145. <Ordinal1..9> = fifth "5"
  1146. <Ordinal1..9> = sixth "6"
  1147. <Ordinal1..9> = seventh "7"
  1148. <Ordinal1..9> = eighth "8"
  1149. <Ordinal1..9> = ninth "9"
  1150.  
  1151. // 1..9, ordinal WITh ending
  1152. <OrdinalEnd1..9> = first "1st"
  1153. <OrdinalEnd1..9> = second "2nd"
  1154. <OrdinalEnd1..9> = third "3rd"
  1155. <OrdinalEnd1..9> = fourth "4th"
  1156. <OrdinalEnd1..9> = fifth "5th"
  1157. <OrdinalEnd1..9> = sixth "6th"
  1158. <OrdinalEnd1..9> = seventh "7th"
  1159. <OrdinalEnd1..9> = eighth "8th"
  1160. <OrdinalEnd1..9> = ninth "9th"
  1161.  
  1162. // Zero through nine
  1163. <0..9> = zero "0"
  1164. <0..9> = oh "0"
  1165. <0..9> = <1..9>
  1166.  
  1167. // Ordinal Zero through nine, without ending
  1168. <Ordinal0..9> = zeroth "0"
  1169. <Ordinal0..9> = <Ordinal1..9>
  1170.  
  1171. // Ordinal Zero through nine, WITH ending
  1172. <OrdinalEnd0..9> = zeroth "0th"
  1173. <OrdinalEnd0..9> = <OrdinalEnd1..9>
  1174.  
  1175. // 10.19
  1176. <10.19> = ten "10"
  1177. <10.19> = eleven "11"
  1178. <10.19> = twelve "12"
  1179. <10.19> = thirteen "13"
  1180. <10.19> = fourteen "14"
  1181. <10.19> = fifteen "15"
  1182. <10.19> = sixteen "16"
  1183. <10.19> = seventeen "17"
  1184. <10.19> = eighteen "18"
  1185. <10.19> = nineteen "19"
  1186.  
  1187. // Ordinal 10.19, without ending
  1188. <Ordinal10.19> = tenth "10"
  1189. <Ordinal10.19> = eleventh "11"
  1190. <Ordinal10.19> = twelfth "12"
  1191. <Ordinal10.19> = thirteenth "13"
  1192. <Ordinal10.19> = fourteenth "14"
  1193. <Ordinal10.19> = fifteenth "15"
  1194. <Ordinal10.19> = sixteenth "16"
  1195. <Ordinal10.19> = seventeenth "17"
  1196. <Ordinal10.19> = eighteenth "18"
  1197. <Ordinal10.19> = nineteenth "19"
  1198.  
  1199. // Ordinal 10.19, with ending
  1200. <OrdinalEnd10.19> = <Ordinal10.19> "th"
  1201.  
  1202. // 20..99
  1203. <20.99> = <20.31>
  1204. <20.99> = <32.99>
  1205. <20.31> = twenty "20"
  1206. <20.31> = twenty-one "21"
  1207. <20.31> = twenty-two "22"
  1208. <20.31> = twenty-three "23"
  1209. <20.31> = twenty-four "24"
  1210. <20.31> = twenty-five "25"
  1211. <20.31> = twenty-six "26"
  1212. <20.31> = twenty-seven "27"
  1213. <20.31> = twenty-eight "28"
  1214. <20.31> = twenty-nine "29"
  1215. <20.31> = twenty "2" <1..9>
  1216. //<20.31> = twenty "2" <SingleOrdinal>
  1217. <20.31> = thirty "30"
  1218. <20.31> = thirty-one "31"
  1219. <20.31> = thirty one "31"
  1220. <32.99> = thirty-two "32"
  1221. <32.99> = thirty-three "33"
  1222. <32.99> = thirty-four "34"
  1223. <32.99> = thirty-five "35"
  1224. <32.99> = thirty-six "36"
  1225. <32.99> = thirty-seven "37"
  1226. <32.99> = thirty-eight "38"
  1227. <32.99> = thirty-nine "39"
  1228. <32.99> = thirty "3" <1..9>
  1229. //<32.99> = thirty "3" <SingleOrdinal>
  1230. <32.99> = forty "40"
  1231. <32.99> = forty-one "41"
  1232. <32.99> = forty-two "42"
  1233. <32.99> = forty-three "43"
  1234. <32.99> = forty-four "44"
  1235. <32.99> = forty-five "45"
  1236. <32.99> = forty-six "46"
  1237. <32.99> = forty-seven "47"
  1238. <32.99> = forty-eight "48"
  1239. <32.99> = forty-nine "49"
  1240. <32.99> = forty "4" <1..9>
  1241. //<32.99> = forty "4" <SingleOrdinal>
  1242. <32.99> = fifty "50"
  1243. <32.99> = fifty-one "51"
  1244. <32.99> = fifty-two "52"
  1245. <32.99> = fifty-three "53"
  1246. <32.99> = fifty-four "54"
  1247. <32.99> = fifty-five "55"
  1248. <32.99> = fifty-six "56"
  1249. <32.99> = fifty-seven "57"
  1250. <32.99> = fifty-eight "58"
  1251. <32.99> = fifty-nine "59"
  1252. <32.99> = fifty "5" <1..9>
  1253. //<32.99> = fifty "5" <SingleOrdinal>
  1254. <32.99> = sixty "60"
  1255. <32.99> = sixty-one "61"
  1256. <32.99> = sixty-two "62"
  1257. <32.99> = sixty-three "63"
  1258. <32.99> = sixty-four "64"
  1259. <32.99> = sixty-five "65"
  1260. <32.99> = sixty-six "66"
  1261. <32.99> = sixty-seven "67"
  1262. <32.99> = sixty-eight "68"
  1263. <32.99> = sixty-nine "69"
  1264. <32.99> = sixty "6" <1..9>
  1265. //<32.99> = sixty "6" <SingleOrdinal>
  1266. <32.99> = seventy "70"
  1267. <32.99> = seventy-one "71"
  1268. <32.99> = seventy-two "72"
  1269. <32.99> = seventy-three "73"
  1270. <32.99> = seventy-four "74"
  1271. <32.99> = seventy-five "75"
  1272. <32.99> = seventy-six "76"
  1273. <32.99> = seventy-seven "77"
  1274. <32.99> = seventy-eight "78"
  1275. <32.99> = seventy-nine "79"
  1276. <32.99> = seventy "7" <1..9>
  1277. //<32.99> = seventy "7" <SingleOrdinal>
  1278. <32.99> = eighty "80"
  1279. <32.99> = eighty-one "81"
  1280. <32.99> = eighty-two "82"
  1281. <32.99> = eighty-three "83"
  1282. <32.99> = eighty-four "84"
  1283. <32.99> = eighty-five "85"
  1284. <32.99> = eighty-six "86"
  1285. <32.99> = eighty-seven "87"
  1286. <32.99> = eighty-eight "88"
  1287. <32.99> = eighty-nine "89"
  1288. <32.99> = eighty "8" <1..9>
  1289. //<32.99> = eighty "8" <SingleOrdinal>
  1290. <32.99> = ninety "90"
  1291. <32.99> = ninety-one "91"
  1292. <32.99> = ninety-two "92"
  1293. <32.99> = ninety-three "93"
  1294. <32.99> = ninety-four "94"
  1295. <32.99> = ninety-five "95"
  1296. <32.99> = ninety-six "96"
  1297. <32.99> = ninety-seven "97"
  1298. <32.99> = ninety-eight "98"
  1299. <32.99> = ninety-nine "99"
  1300. <32.99> = ninety "9" <1..9>
  1301. //<32.99> = ninety "9" <SingleOrdinal>
  1302.  
  1303. // Ordinal, 20..99 without ending
  1304. <Ordinal20.99> = twentieth "20"
  1305. <Ordinal20.99> = twenty "2" <Ordinal1..9>
  1306. <Ordinal20.99> = thirtieth "30"
  1307. <Ordinal20.99> = thirty "3" <Ordinal1..9>
  1308. <Ordinal20.99> = fortieth "40"
  1309. <Ordinal20.99> = forty "4" <Ordinal1..9>
  1310. <Ordinal20.99> = fiftieth "50"
  1311. <Ordinal20.99> = fifty "5" <Ordinal1..9>
  1312. <Ordinal20.99> = sixtieth "60"
  1313. <Ordinal20.99> = sixty "6" <Ordinal1..9>
  1314. <Ordinal20.99> = seventieth "70"
  1315. <Ordinal20.99> = seventy "7" <Ordinal1..9>
  1316. <Ordinal20.99> = eightieth "80"
  1317. <Ordinal20.99> = eighty "8" <Ordinal1..9>
  1318. <Ordinal20.99> = ninetieth "90"
  1319. <Ordinal20.99> = ninety "9" <Ordinal1..9>
  1320.  
  1321. // Ordinal, 20..99 with ending
  1322. <OrdinalEnd20.99> = twentieth "20th"
  1323. <OrdinalEnd20.99> = twenty "2" <OrdinalEnd1..9>
  1324. <OrdinalEnd20.99> = thirtieth "30th"
  1325. <OrdinalEnd20.99> = thirty "3" <OrdinalEnd1..9>
  1326. <OrdinalEnd20.99> = fortieth "40th"
  1327. <OrdinalEnd20.99> = forty "4" <OrdinalEnd1..9>
  1328. <OrdinalEnd20.99> = fiftieth "50th"
  1329. <OrdinalEnd20.99> = fifty "5" <OrdinalEnd1..9>
  1330. <OrdinalEnd20.99> = sixtieth "60th"
  1331. <OrdinalEnd20.99> = sixty "6" <OrdinalEnd1..9>
  1332. <OrdinalEnd20.99> = seventieth "70th"
  1333. <OrdinalEnd20.99> = seventy "7" <OrdinalEnd1..9>
  1334. <OrdinalEnd20.99> = eightieth "80th"
  1335. <OrdinalEnd20.99> = eighty "8" <OrdinalEnd1..9>
  1336. <OrdinalEnd20.99> = ninetieth "90th"
  1337. <OrdinalEnd20.99> = ninety "9" <OrdinalEnd1..9>
  1338.  
  1339. // Double digit
  1340. <DoubleDigit> = <20.99>
  1341. <DoubleDigit> = <10.19>
  1342.  
  1343. // Ordinal Double digit, no ending
  1344. <OrdinalDoubleDigit> = <Ordinal20.99>
  1345. <OrdinalDoubleDigit> = <Ordinal10.19>
  1346.  
  1347. // Ordinal Double digit, with ending
  1348. <OrdinalEndDoubleDigit> = <OrdinalEnd20.99>
  1349. <OrdinalEndDoubleDigit> = <OrdinalEnd10.19>
  1350.  
  1351. // Three digit number
  1352. <TripleDigit> = hundred "1" <Less100Pad>
  1353. <TripleDigit> = <1..9> hundred [opt] and <Less100Pad>
  1354. <TripleDigit> = <1..9> hundred "00"
  1355.  
  1356. // Ordinal Three digit number, whithout ending
  1357. <OrdinalTripleDigit> = hundred "1" <OrdinalLess100Pad>
  1358. <OrdinalTripleDigit> = <1..9> hundred [opt] and <OrdinalLess100Pad>
  1359. <OrdinalTripleDigit> = <1..9> hundredth "00"
  1360.  
  1361. // Ordinal Three digit number, whith ending
  1362. <OrdinalEndTripleDigit> = hundred "1" <OrdinalEndLess100Pad>
  1363. <OrdinalEndTripleDigit> = <1..9> hundred [opt] and <OrdinalEndLess100Pad>
  1364. <OrdinalEndTripleDigit> = <1..9> hundredth "00th"
  1365.  
  1366. // Less that 100, not padded with zeros
  1367. <Less100Not> = <1..9>
  1368. <Less100Not> = <DoubleDigit>
  1369. <Less100Not> = zero "0"
  1370.  
  1371. // Ordinal, Less that 100, not padded with zeros, without ending
  1372. <OrdinalLess100Not> = <Ordinal1..9>
  1373. <OrdinalLess100Not> = <OrdinalDoubleDigit>
  1374. <OrdinalLess100Not> = zeroeth "0"
  1375.  
  1376. // Ordinal, Less that 100, not padded with zeros, with ending
  1377. <OrdinalEndLess100Not> = <OrdinalEnd1..9>
  1378. <OrdinalEndLess100Not> = <OrdinalEndDoubleDigit>
  1379. <OrdinalEndLess100Not> = zeroeth "0th"
  1380.  
  1381. // Less that 100, not padded with zeros, don't do 0..19
  1382. <Less100Not19> = <20.99>
  1383.  
  1384. // Ordinal Less that 100, not padded with zeros, don't do 0..19, without ending
  1385. <OrdinalLess100Not19> = <Ordinal20.99>
  1386.  
  1387. // Ordinal Less that 100, not padded with zeros, don't do 0..19, with ending
  1388. <OrdinalEndLess100Not19> = <OrdinalEnd20.99>
  1389.  
  1390. // Less that 100, padded with zeros
  1391. <Less100Pad> = "0" <1..9>
  1392. <Less100Pad> = <DoubleDigit>
  1393. <Less100Pad> = zero "00"
  1394.  
  1395. // Ordinal Less that 100, padded with zeros, without ending
  1396. <OrdinalLess100Pad> = "0" <Ordinal1..9>
  1397. <OrdinalLess100Pad> = <OrdinalDoubleDigit>
  1398. <OrdinalLess100Pad> = zeroeth "00"
  1399.  
  1400. // Ordinal Less that 100, padded with zeros, with ending
  1401. <OrdinalEndLess100Pad> = "0" <OrdinalEnd1..9>
  1402. <OrdinalEndLess100Pad> = <OrdinalEndDoubleDigit>
  1403. <OrdinalEndLess100Pad> = zeroeth "00th"
  1404.  
  1405. // Less than 1000, not padded with zeros
  1406. <Less1000Not> = <TripleDigit>
  1407.  
  1408. // Ordinal Less than 1000, not padded with zeros, without ending
  1409. <OrdinalLess1000Not> = <OrdinalTripleDigit>
  1410.  
  1411. // Ordinal Less than 1000, not padded with zeros, with ending
  1412. <OrdinalEndLess1000Not> = <OrdinalEndTripleDigit>
  1413.  
  1414. // Less than 1000, padded with zeros
  1415. //<Less1000Pad> = "000"
  1416. <Less1000Pad> = "0" <Less100Pad>
  1417. <Less1000Pad> = <TripleDigit>
  1418.  
  1419. // Ordinal Less than 1000, padded with zeros, without ending
  1420. <OrdinalLess1000Pad> = "0" <OrdinalLess100Pad>
  1421. <OrdinalLess1000Pad> = <OrdinalTripleDigit>
  1422.  
  1423. // Ordinal Less than 1000, padded with zeros, with ending
  1424. <OrdinalEndLess1000Pad> = "0" <OrdinalEndLess100Pad>
  1425. <OrdinalEndLess1000Pad> = <OrdinalEndTripleDigit>
  1426.  
  1427. // Less than 1,000,000, not padded with zeros
  1428. <Less1000000Not> = <1..9> thousand "000"
  1429. <Less1000000Not> = <1..9> thousand [opt] and <Less1000Pad>
  1430. <Less1000000Not> = <DoubleDigit> thousand ",000"
  1431. <Less1000000Not> = <DoubleDigit> thousand [opt] and "," <Less1000Pad>
  1432. <Less1000000Not> = <TripleDigit> thousand ",000"
  1433. <Less1000000Not> = <TripleDigit> thousand [opt] and "," <Less1000Pad>
  1434.  
  1435. // Less than 1,000,000, not padded with zeros
  1436. // if just thousand then don't convert
  1437. // <Less1000000Not19> = <1..9> thousand "000"
  1438. <Less1000000Not19> = <1..9> thousand [opt] and <Less1000Pad>
  1439. // <Less1000000Not19> = <DoubleDigit> thousand ",000"
  1440. <Less1000000Not19> = <DoubleDigit> thousand [opt] and "," <Less1000Pad>
  1441. // <Less1000000Not19> = <TripleDigit> thousand ",000"
  1442. <Less1000000Not19> = <TripleDigit> thousand [opt] and "," <Less1000Pad>
  1443.  
  1444. // Ordinal Less than 1,000,000, not padded with zeros, without ending
  1445. <OrdinalLess1000000Not> = <1..9> thousandth ",000"
  1446. <OrdinalLess1000000Not> = <1..9> thousand [opt] and "," <OrdinalLess1000Pad>
  1447. <OrdinalLess1000000Not> = <DoubleDigit> thousandth ",000"
  1448. <OrdinalLess1000000Not> = <DoubleDigit> thousand [opt] and "," <OrdinalLess1000Pad>
  1449. <OrdinalLess1000000Not> = <TripleDigit> thousandth ",000"
  1450. <OrdinalLess1000000Not> = <TripleDigit> thousand [opt] and "," <OrdinalLess1000Pad>
  1451.  
  1452. // Ordinal Less than 1,000,000, not padded with zeros, with ending
  1453. <OrdinalEndLess1000000Not> = <1..9> thousandth ",000th"
  1454. <OrdinalEndLess1000000Not> = <1..9> thousand [opt] and "," <OrdinalEndLess1000Pad>
  1455. <OrdinalEndLess1000000Not> = <DoubleDigit> thousandth ",000th"
  1456. <OrdinalEndLess1000000Not> = <DoubleDigit> thousand [opt] and "," <OrdinalEndLess1000Pad>
  1457. <OrdinalEndLess1000000Not> = <TripleDigit> thousandth ",000th"
  1458. <OrdinalEndLess1000000Not> = <TripleDigit> thousand [opt] and "," <OrdinalEndLess1000Pad>
  1459.  
  1460. // Less than 1,000,000, padded with zeros
  1461. <Less1000000Pad> = "000," <Less1000Pad>
  1462. <Less1000000Pad> = thousand [opt] and "001," <Less1000Pad>
  1463. <Less1000000Pad> = <Less1000Pad> thousand ",000"
  1464. <Less1000000Pad> = <Less1000Pad> thousand [opt] and "," <Less1000Pad>
  1465.  
  1466. // Ordinal Less than 1,000,000, padded with zeros, without ending
  1467. <OrdinalLess1000000Pad> = "000," <OrdinalLess1000Pad>
  1468. <OrdinalLess1000000Pad> = thousand [opt] and "001," <OrdinalLess1000Pad>
  1469. <OrdinalLess1000000Pad> = <Less1000Pad> thousandth ",000"
  1470. <OrdinalLess1000000Pad> = <Less1000Pad> thousand [opt] and "," <OrdinalLess1000Pad>
  1471.  
  1472. // Ordinal Less than 1,000,000, padded with zeros, with ending
  1473. <OrdinalEndLess1000000Pad> = "000," <OrdinalEndLess1000Pad>
  1474. <OrdinalEndLess1000000Pad> = thousand [opt] and "001," <OrdinalEndLess1000Pad>
  1475. <OrdinalEndLess1000000Pad> = <Less1000Pad> thousandth ",000th"
  1476. <OrdinalEndLess1000000Pad> = <Less1000Pad> thousand [opt] and "," <OrdinalEndLess1000Pad>
  1477.  
  1478. // Less than 1,000,000,000, not padded with zeros
  1479. // Disable cause revamp natural: <Less1000000000Not> = <Less1000000Not>
  1480. // "million" by itself is not converted - <Less1000000000Not> = million "1,000,000"
  1481. // "million" by itself is not converted - <Less1000000000Not> = million [opt] and "1," <Less1000000Pad>
  1482. <Less1000000000Not> = <Less100Not> million ",000,000"
  1483. <Less1000000000Not> = <Less100Not> million [opt] and "," <Less1000000Pad>
  1484. <Less1000000000Not> = <Less1000Not> million ",000,000"
  1485. <Less1000000000Not> = <Less1000Not> million [opt] and "," <Less1000000Pad>
  1486.  
  1487. // Less than 1,000,000,000, not padded with zeros
  1488. // Disable cause revamp natural: <Less1000000000Not> = <Less1000000Not>
  1489. // "million" by itself is not converted - left as word
  1490. // "million" by itself is not converted - <Less1000000000Not> = million [opt] and "1," <Less1000000Pad>
  1491. // <Less1000000000Not19> = <Less100Not> million ",000,000"
  1492. <Less1000000000Not19> = <Less100Not> million [opt] and "," <Less1000000Pad>
  1493. // <Less1000000000Not19> = <Less1000Not> million ",000,000"
  1494. <Less1000000000Not19> = <Less1000Not> million [opt] and "," <Less1000000Pad>
  1495.  
  1496. // Ordinal Less than 1,000,000,000, not padded with zeros, without ending
  1497. // Disable cause revamp natural: <Less1000000000Not> = <Less1000000Not>
  1498. // "million" by itself is not converted - <Less1000000000Not> = million "1,000,000"
  1499. // "million" by itself is not converted - <Less1000000000Not> = million [opt] and "1," <Less1000000Pad>
  1500. <OrdinalLess1000000000Not> = <Less100Not> millionth ",000,000"
  1501. <OrdinalLess1000000000Not> = <Less100Not> million [opt] and "," <OrdinalLess1000000Pad>
  1502. <OrdinalLess1000000000Not> = <Less1000Not> millionth ",000,000"
  1503. <OrdinalLess1000000000Not> = <Less1000Not> million [opt] and "," <OrdinalLess1000000Pad>
  1504.  
  1505. // Ordinal Less than 1,000,000,000, not padded with zeros, with ending
  1506. // Disable cause revamp natural: <Less1000000000Not> = <Less1000000Not>
  1507. // "million" by itself is not converted - <Less1000000000Not> = million "1,000,000"
  1508. // "million" by itself is not converted - <Less1000000000Not> = million [opt] and "1," <Less1000000Pad>
  1509. <OrdinalEndLess1000000000Not> = <Less100Not> millionth ",000,000th"
  1510. <OrdinalEndLess1000000000Not> = <Less100Not> million [opt] and "," <OrdinalEndLess1000000Pad>
  1511. <OrdinalEndLess1000000000Not> = <Less1000Not> millionth ",000,000th"
  1512. <OrdinalEndLess1000000000Not> = <Less1000Not> million [opt] and "," <OrdinalEndLess1000000Pad>
  1513.  
  1514. // Less than 1,000,000,000, padded with zeros
  1515. <Less1000000000Pad> = "000," <Less1000000Pad>
  1516. <Less1000000000Pad> = million [opt] and "001," <Less1000000Pad>
  1517. <Less1000000000Pad> = <Less1000Pad> million ",000,000"
  1518. <Less1000000000Pad> = <Less1000Pad> million [opt] and "," <Less1000000Pad>
  1519.  
  1520. // Ordinal, Less than 1,000,000,000, padded with zeros, without ending
  1521. <OrdinalLess1000000000Pad> = "000," <OrdinalLess1000000Pad>
  1522. <OrdinalLess1000000000Pad> = million [opt] and "001," <OrdinalLess1000000Pad>
  1523. <OrdinalLess1000000000Pad> = <Less1000Pad> millionth ",000,000"
  1524. <OrdinalLess1000000000Pad> = <Less1000Pad> million [opt] and "," <OrdinalLess1000000Pad>
  1525.  
  1526. // Ordinal, Less than 1,000,000,000, padded with zeros, with ending
  1527. <OrdinalEndLess1000000000Pad> = "000," <OrdinalEndLess1000000Pad>
  1528. <OrdinalEndLess1000000000Pad> = million [opt] and "001," <OrdinalEndLess1000000Pad>
  1529. <OrdinalEndLess1000000000Pad> = <Less1000Pad> millionth ",000,000th"
  1530. <OrdinalEndLess1000000000Pad> = <Less1000Pad> million [opt] and "," <OrdinalEndLess1000000Pad>
  1531.  
  1532. // Less than 1,000,000,000,000, not padded with zeros
  1533. // Disable cause revamp natural: <Less1000000000000Not> = <Less1000000000Not>
  1534. // "billion" by itself is not converted - <Less1000000000000Not> = billion "1,000,000,000"
  1535. // "billion" by itself is not converted - <Less1000000000000Not> = billion [opt] and "1," <Less1000000000Pad>
  1536. <Less1000000000000Not> = <Less100Not> billion ",000,000,000"
  1537. <Less1000000000000Not> = <Less100Not> billion [opt] and "," <Less1000000000Pad>
  1538. <Less1000000000000Not> = <Less1000Not> billion ",000,000,000"
  1539. <Less1000000000000Not> = <Less1000Not> billion [opt] and "," <Less1000000000Pad>
  1540.  
  1541. // Less than 1,000,000,000,000, not padded with zeros
  1542. // Disable cause revamp natural: <Less1000000000000Not> = <Less1000000000Not>
  1543. // "billion" by itself is not converted - left as word
  1544. // "billion" by itself is not converted - <Less1000000000000Not> = billion [opt] and "1," <Less1000000000Pad>
  1545. // <Less1000000000000Not19> = <Less100Not> billion ",000,000,000"
  1546. <Less1000000000000Not19> = <Less100Not> billion [opt] and "," <Less1000000000Pad>
  1547. // <Less1000000000000Not19> = <Less1000Not> billion ",000,000,000"
  1548. <Less1000000000000Not19> = <Less1000Not> billion [opt] and "," <Less1000000000Pad>
  1549.  
  1550. // Ordinal, Less than 1,000,000,000,000, not padded with zeros, without ending
  1551. // Disable cause revamp natural: <Less1000000000000Not> = <Less1000000000Not>
  1552. // "billion" by itself is not converted - <Less1000000000000Not> = billion "1,000,000,000"
  1553. // "billion" by itself is not converted - <Less1000000000000Not> = billion [opt] and "1," <Less1000000000Pad>
  1554. <OrdinalLess1000000000000Not> = <Less100Not> billionth ",000,000,000"
  1555. <OrdinalLess1000000000000Not> = <Less100Not> billion [opt] and "," <OrdinalLess1000000000Pad>
  1556. <OrdinalLess1000000000000Not> = <Less1000Not> billionth ",000,000,000"
  1557. <OrdinalLess1000000000000Not> = <Less1000Not> billion [opt] and "," <OrdinalLess1000000000Pad>
  1558.  
  1559. // Ordinal, Less than 1,000,000,000,000, not padded with zeros, with ending
  1560. // Disable cause revamp natural: <Less1000000000000Not> = <Less1000000000Not>
  1561. // "billion" by itself is not converted - <Less1000000000000Not> = billion "1,000,000,000"
  1562. // "billion" by itself is not converted - <Less1000000000000Not> = billion [opt] and "1," <Less1000000000Pad>
  1563. <OrdinalEndLess1000000000000Not> = <Less100Not> billionth ",000,000,000th"
  1564. <OrdinalEndLess1000000000000Not> = <Less100Not> billion [opt] and "," <OrdinalLess1000000000Pad>
  1565. <OrdinalEndLess1000000000000Not> = <Less1000Not> billionth ",000,000,000th"
  1566. <OrdinalEndLess1000000000000Not> = <Less1000Not> billion [opt] and "," <OrdinalLess1000000000Pad>
  1567.  
  1568. // Less than 1,000,000,000,000, padded with zeros
  1569. <Less1000000000000Pad> = "000," <Less1000000000Pad>
  1570. <Less1000000000000Pad> = billion [opt] and "001," <Less1000000000Pad>
  1571. <Less1000000000000Pad> = <Less1000Pad> billion ",000,000,000"
  1572. <Less1000000000000Pad> = <Less1000Pad> billion [opt] and "," <Less1000000000Pad>
  1573.  
  1574. // Ordinal, Less than 1,000,000,000,000, padded with zeros, withouth ending
  1575. <OrdinalLess1000000000000Pad> = "000," <OrdinalLess1000000000Pad>
  1576. <OrdinalLess1000000000000Pad> = billion [opt] and "001," <OrdinalLess1000000000Pad>
  1577. <OrdinalLess1000000000000Pad> = <Less1000Pad> billionth ",000,000,000"
  1578. <OrdinalLess1000000000000Pad> = <Less1000Pad> billion [opt] and "," <OrdinalLess1000000000Pad>
  1579.  
  1580. // Ordinal, Less than 1,000,000,000,000, padded with zeros, with ending
  1581. <OrdinalEndLess1000000000000Pad> = "000," <OrdinalEndLess1000000000Pad>
  1582. <OrdinalEndLess1000000000000Pad> = billion [opt] and "001," <OrdinalEndLess1000000000Pad>
  1583. <OrdinalEndLess1000000000000Pad> = <Less1000Pad> billionth ",000,000,000th"
  1584. <OrdinalEndLess1000000000000Pad> = <Less1000Pad> billion [opt] and "," <OrdinalEndLess1000000000Pad>
  1585.  
  1586.  
  1587. // Less than 1,000,000,000,000,000, not padded with zeros
  1588. // Disable cause revamp natural: <Less1000000000000000Not> = <Less1000000000000Not>
  1589. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion "1,000,000,000,000"
  1590. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion [opt] and "1," <Less1000000000000Pad>
  1591. <Less1000000000000000Not> = <Less100Not> trillion ",000,000,000,000"
  1592. <Less1000000000000000Not> = <Less100Not> trillion [opt] and "," <Less1000000000000Pad>
  1593. <Less1000000000000000Not> = <Less1000Not> trillion ",000,000,000,000"
  1594. <Less1000000000000000Not> = <Less1000Not> trillion [opt] and "," <Less1000000000000Pad>
  1595.  
  1596. // Less than 1,000,000,000,000,000, not padded with zeros
  1597. // Disable cause revamp natural: <Less1000000000000000Not> = <Less1000000000000Not>
  1598. // "trillion" by itself is not converted - left as word
  1599. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion [opt] and "1," <Less1000000000000Pad>
  1600. // <Less1000000000000000Not19> = <Less100Not> trillion ",000,000,000,000"
  1601. <Less1000000000000000Not19> = <Less100Not> trillion [opt] and "," <Less1000000000000Pad>
  1602. // <Less1000000000000000Not19> = <Less1000Not> trillion ",000,000,000,000"
  1603. <Less1000000000000000Not19> = <Less1000Not> trillion [opt] and "," <Less1000000000000Pad>
  1604.  
  1605. // Ordinal ,Less than 1,000,000,000,000,000, not padded with zeros, without ending
  1606. // Disable cause revamp natural: <Less1000000000000000Not> = <Less1000000000000Not>
  1607. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion "1,000,000,000,000"
  1608. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion [opt] and "1," <Less1000000000000Pad>
  1609. <OrdinalLess1000000000000000Not> = <Less100Not> trillionth ",000,000,000,000"
  1610. <OrdinalLess1000000000000000Not> = <Less100Not> trillion [opt] and "," <OrdinalLess1000000000000Pad>
  1611. <OrdinalLess1000000000000000Not> = <Less1000Not> trillionth ",000,000,000,000"
  1612. <OrdinalLess1000000000000000Not> = <Less1000Not> trillion [opt] and "," <OrdinalLess1000000000000Pad>
  1613.  
  1614. // Ordinal ,Less than 1,000,000,000,000,000, not padded with zeros, with ending
  1615. // Disable cause revamp natural: <Less1000000000000000Not> = <Less1000000000000Not>
  1616. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion "1,000,000,000,000"
  1617. // "trillion" by itself is not converted - <Less1000000000000000Not> = trillion [opt] and "1," <Less1000000000000Pad>
  1618. <OrdinalEndLess1000000000000000Not> = <Less100Not> trillionth ",000,000,000,000th"
  1619. <OrdinalEndLess1000000000000000Not> = <Less100Not> trillion [opt] and "," <OrdinalEndLess1000000000000Pad>
  1620. <OrdinalEndLess1000000000000000Not> = <Less1000Not> trillionth ",000,000,000,000th"
  1621. <OrdinalEndLess1000000000000000Not> = <Less1000Not> trillion [opt] and "," <OrdinalEndLess1000000000000Pad>
  1622.  
  1623. // Less than 1,000,000,000,000,000, padded with zeros
  1624. <Less1000000000000000Pad> = "000," <Less1000000000000Pad>
  1625. <Less1000000000000000Pad> = trillion [opt] and "001," <Less1000000000000Pad>
  1626. <Less1000000000000000Pad> = <Less1000Pad> trillion ",000,000,000,000"
  1627. <Less1000000000000000Pad> = <Less1000Pad> trillion [opt] and "," <Less1000000000000Pad>
  1628.  
  1629. // Ordinal, Less than 1,000,000,000,000,000, padded with zeros, without ending
  1630. <OrdinalLess1000000000000000Pad> = "000," <OrdinalLess1000000000000Pad>
  1631. <OrdinalLess1000000000000000Pad> = trillion [opt] and "001," <OrdinalLess1000000000000Pad>
  1632. <OrdinalLess1000000000000000Pad> = <Less1000Pad> trillionth ",000,000,000,000"
  1633. <OrdinalLess1000000000000000Pad> = <Less1000Pad> trillion [opt] and "," <OrdinalLess1000000000000Pad>
  1634.  
  1635. // Ordinal, Less than 1,000,000,000,000,000, padded with zeros, with ending
  1636. <OrdinalEndLess1000000000000000Pad> = "000," <OrdinalEndLess1000000000000Pad>
  1637. <OrdinalEndLess1000000000000000Pad> = trillion [opt] and "001," <OrdinalEndLess1000000000000Pad>
  1638. <OrdinalEndLess1000000000000000Pad> = <Less1000Pad> trillionth ",000,000,000,000th"
  1639. <OrdinalEndLess1000000000000000Pad> = <Less1000Pad> trillion [opt] and "," <OrdinalEndLess1000000000000Pad>
  1640.