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.
2439 lines
60 KiB
2439 lines
60 KiB
<GRAMMAR LANGID="409">
|
|
<DEFINE>
|
|
<ID NAME="BILLIONS" VAL="1"/>
|
|
<ID NAME="MILLIONS" VAL="2"/>
|
|
<ID NAME="THOUSANDS" VAL="3"/>
|
|
<ID NAME="HUNDREDS" VAL="4"/>
|
|
<ID NAME="TENS" VAL="5"/>
|
|
<ID NAME="ONES" VAL="6"/>
|
|
<ID NAME="NEGATIVE" VAL="7"/>
|
|
<ID NAME="MILLBILL" VAL="8"/>
|
|
<ID NAME="DIGIT" VAL="9"/>
|
|
<ID NAME="TWODIGIT" VAL="10"/>
|
|
<ID NAME="FP_PART" VAL="11"/>
|
|
<ID NAME="ZERO" VAL="12"/>
|
|
<ID NAME="POINT_ZERO" VAL="13"/>
|
|
<ID NAME="NUMERATOR" VAL="14"/>
|
|
<ID NAME="DENOMINATOR" VAL="15"/>
|
|
<ID NAME="WHOLE" VAL="16"/>
|
|
<ID NAME="ONEDIGIT" VAL="17"/>
|
|
|
|
<ID NAME="DAY_OF_WEEK" VAL="30"/>
|
|
<ID NAME="DAY_OF_MONTH" VAL="31"/>
|
|
<ID NAME="MONTH" VAL="32"/>
|
|
<ID NAME="YEAR" VAL="33"/>
|
|
<ID NAME="TWOTHOUSAND" VAL="34"/>
|
|
<ID NAME="DATE_HUNDREDS" VAL="35"/>
|
|
<ID NAME="YEARMONTH" VAL="36"/>
|
|
<ID NAME="MONTHYEAR" VAL="37"/>
|
|
|
|
<ID NAME="QUARTER_TO" VAL="40"/>
|
|
<ID NAME="QUARTER_PAST" VAL="41"/>
|
|
<ID NAME="HALF_PAST" VAL="42"/>
|
|
<ID NAME="CLOCKTIME_QUALIFIER" VAL="43"/>
|
|
<ID NAME="HOUR_CLOCK" VAL="44"/>
|
|
<ID NAME="HOUR_COUNT" VAL="45"/>
|
|
<ID NAME="MINUTE" VAL="46"/>
|
|
<ID NAME="SECOND" VAL="47"/>
|
|
<ID NAME="AMPM" VAL="50"/>
|
|
<ID NAME="AM" VAL="51"/>
|
|
<ID NAME="PM" VAL="52"/>
|
|
|
|
<ID NAME="US_STATE" VAL="60"/>
|
|
<ID NAME="ZIPCODE" VAL="61"/>
|
|
<ID NAME="CAN_PROVINCE" VAL="62"/>
|
|
<ID NAME="ALPHA" VAL="63"/>
|
|
<ID NAME="FOURDIGITS" VAL="64"/>
|
|
<ID NAME="COMMA" VAL="65"/>
|
|
|
|
<ID NAME="ONE_PLUS" VAL="70"/>
|
|
<ID NAME="AREA_CODE" VAL="71"/>
|
|
<ID NAME="PHONENUM_EXCHANGE" VAL="72"/>
|
|
<ID NAME="EXTENSION" VAL="73"/>
|
|
|
|
<ID NAME="TEMP_UNITS" VAL="80"/>
|
|
<ID NAME="DIRECTION" VAL="81"/>
|
|
|
|
<ID NAME="UNITS" VAL="90"/>
|
|
<ID NAME="NUMBER" VAL="91"/>
|
|
|
|
<ID NAME="CURRENCY_TYPE" VAL="100"/>
|
|
<ID NAME="DOLLARS" VAL="101"/>
|
|
<ID NAME="CENTS" VAL="102"/>
|
|
<ID NAME="CURRENCY_SMALL_TYPE" VAL="103"/>
|
|
|
|
<ID NAME="GRID_INTEGER_99" VAL="1001"/>
|
|
<ID NAME="GRID_INTEGER_999" VAL="1002"/>
|
|
<ID NAME="GRID_INTEGER_MILLBILL" VAL="1003"/>
|
|
<ID NAME="GRID_INTEGER_STANDALONE" VAL="1004"/>
|
|
<ID NAME="GRID_INTEGER" VAL="1005"/>
|
|
<ID NAME="GRID_INTEGER_NONNEG" VAL="1006"/>
|
|
<ID NAME="GRID_DIGIT_NUMBER" VAL="1007"/>
|
|
<ID NAME="GRID_FP_NUMBER" VAL="1008"/>
|
|
<ID NAME="GRID_FP_NUMBER_NONNEG" VAL="1009"/>
|
|
<ID NAME="GRID_ORDINAL" VAL="1010"/>
|
|
<ID NAME="GRID_DENOMINATOR_SINGULAR" VAL="1011"/>
|
|
<ID NAME="GRID_DENOMINATOR" VAL="1012"/>
|
|
<ID NAME="GRID_FRACTION" VAL="1013"/>
|
|
<ID NAME="GRID_DATE" VAL="1014"/>
|
|
<ID NAME="GRID_YEAR" VAL="1015"/>
|
|
<ID NAME="GRID_TIME" VAL="1016"/>
|
|
<ID NAME="GRID_MINSEC" VAL="1017"/>
|
|
<ID NAME="GRID_CLOCK_MINSEC" VAL="1018"/>
|
|
<ID NAME="GRID_STATEZIP" VAL="1019"/>
|
|
<ID NAME="GRID_ZIPCODE" VAL="1020"/>
|
|
<ID NAME="GRID_CAN_ZIPCODE" VAL="1021"/>
|
|
<ID NAME="GRID_ZIP_PLUS_FOUR" VAL="1022"/>
|
|
<ID NAME="GRID_PHONE_NUMBER" VAL="1023"/>
|
|
<ID NAME="GRID_DEGREES" VAL="1024"/>
|
|
<ID NAME="GRID_MEASUREMENT" VAL="1025"/>
|
|
<ID NAME="GRID_CURRENCY" VAL="1026"/>
|
|
<ID NAME="GRID_CENTS" VAL="1027"/>
|
|
<ID NAME="COMMON_GRID_MEASURMEMENT" VAL="1028"/>
|
|
</DEFINE>
|
|
|
|
<!--
|
|
GRID_PHONE_NUMBER
|
|
Needs to precede GRID_INTEGER so that if there is any ambiguity we
|
|
will fire this rule.
|
|
A phone number is an optional area code, three digits, four digits,
|
|
and an optional extension number
|
|
-->
|
|
<RULE NAME="GRID_PHONE_NUMBER" ID="GRID_PHONE_NUMBER" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<O>
|
|
<O>
|
|
<RULEREF NAME="one_plus" PROPNAME="ONE_PLUS" PROPID="ONE_PLUS"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="area_code" PROPNAME="AREA_CODE" PROPID="AREA_CODE"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="dash_slash"/>
|
|
</O>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="three_digits_phone" PROPNAME="PHONENUM_EXCHANGE" PROPID="PHONENUM_EXCHANGE"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="dash_slash"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="four_digits" PROPNAME="FOURDIGITS" PROPID="FOURDIGITS"/>
|
|
</P>
|
|
<O>
|
|
<L>
|
|
<P>
|
|
ext.
|
|
</P>
|
|
<P>
|
|
extension
|
|
</P>
|
|
<P>
|
|
X.
|
|
</P>
|
|
</L>
|
|
<P>
|
|
<RULEREF NAME="extension" PROPNAME="EXTENSION" PROPID="EXTENSION"/>
|
|
</P>
|
|
</O>
|
|
</RULE>
|
|
|
|
<!--
|
|
INTEGER_99
|
|
Numbers in [0, 100)
|
|
Toplevel inactive but can be imported
|
|
-->
|
|
<RULE NAME="GRID_INTEGER_99" ID="GRID_INTEGER_99" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<RULEREF NAME="cardinal_99" PROPNAME="ONES" PROPID="ONES"/>
|
|
</RULE>
|
|
|
|
<!--
|
|
INTEGER_999
|
|
Numbers in [0, 1000)
|
|
Toplevel inactive but can be imported
|
|
-->
|
|
<RULE NAME="GRID_INTEGER_999" ID="GRID_INTEGER_999" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<RULEREF NAME="cardinal_999" PROPNAME="ONES" PROPID="ONES"/>
|
|
</RULE>
|
|
|
|
<!--
|
|
INTEGER_MILLBILL
|
|
Numbers for which the word "million" or "billion" should be displayed
|
|
-->
|
|
<RULE NAME="GRID_INTEGER_MILLBILL" ID="GRID_INTEGER_MILLBILL" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_99" PROPNAME="GRID_INTEGER_99" PROPID="GRID_INTEGER_99"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER_NONNEG" PROPNAME="GRID_FP_NUMBER_NONNEG" PROPID="GRID_FP_NUMBER_NONNEG"/>
|
|
</P>
|
|
</L>
|
|
<L PROPNAME="MILLBILL" PROPID="MILLBILL">
|
|
<P VAL="MILLIONS" VALSTR="million">million</P>
|
|
<P VAL="BILLIONS" VALSTR="billion">billion</P>
|
|
</L>
|
|
</RULE>
|
|
<!-- Removed ID="GRID_INTEGER_MILLBILL" -->
|
|
<RULE NAME="GRID_INTEGER_20_MILLBILL" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="cardinal_20_999" PROPNAME="GRID_INTEGER_99" PROPID="GRID_INTEGER_99"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER_NONNEG" PROPNAME="GRID_FP_NUMBER_NONNEG" PROPID="GRID_FP_NUMBER_NONNEG"/>
|
|
</P>
|
|
</L>
|
|
<L PROPNAME="MILLBILL" PROPID="MILLBILL">
|
|
<P VAL="MILLIONS" VALSTR="million">million</P>
|
|
<P VAL="BILLIONS" VALSTR="billion">billion</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
INTEGER_STANDALONE
|
|
A INTEGER_STANDALONE can be in the range (-1e12, 1e12) and will always be
|
|
called as a toplevel rule.
|
|
This rule is not referenced by any other rules.
|
|
-->
|
|
<RULE NAME="GRID_INTEGER_STANDALONE" ID="GRID_INTEGER_STANDALONE" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<L>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="NEGATIVE" PROPNAME="NEGATIVE" PROPID="NEGATIVE"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_MILLBILL" PROPNAME="GRID_INTEGER_MILLBILL" PROPID="GRID_INTEGER_MILLBILL"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="integer_base"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
INTEGER
|
|
A INTEGER can be in the range (-1e12, 1e12) and will never be called
|
|
as a toplevel rule
|
|
-->
|
|
<RULE NAME="GRID_INTEGER" ID="GRID_INTEGER" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<RULEREF NAME="integer_base"/>
|
|
</RULE>
|
|
|
|
<!--
|
|
INTEGER_NONNEG
|
|
A INTEGER_NONNEG can be in the range [0, 1e12) and will never be called
|
|
as a toplevel rule
|
|
-->
|
|
<RULE NAME="GRID_INTEGER_NONNEG" ID="GRID_INTEGER_NONNEG" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<RULEREF NAME="integer_base_nonneg"/>
|
|
</RULE>
|
|
|
|
<!--
|
|
DIGIT_NUMBER
|
|
Integers in (0, 1e12), spelled out either one digit at a time or two digits
|
|
at a time.
|
|
This rule is an INACTIVE toplevel rule, since it should go through GRID_INTEGER
|
|
to be formatted.
|
|
Explicitly disallow TWODIGIT DIGIT since that is ambiguous with "twenty five"
|
|
-->
|
|
<RULE NAME="GRID_DIGIT_NUMBER" ID="GRID_DIGIT_NUMBER" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P MIN="3" MAX="12">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit" PROPNAME="ONEDIGIT" PROPID="ONEDIGIT"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="digit" PROPNAME="ONEDIGIT" PROPID="ONEDIGIT"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
</P>
|
|
<P MIN="2" MAX="2">
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<P MIN="2" MAX="2">
|
|
<RULEREF NAME="digit" PROPNAME="ONEDIGIT" PROPID="ONEDIGIT"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
FP_NUMBER
|
|
Floating-point numbers with up to 12 sig figs. Both the stuff to the left of the
|
|
decimal point and the stuff to the right of the decimal point can be either
|
|
NUMBERs or DIGIT_NUMBERs
|
|
-->
|
|
<RULE NAME="GRID_FP_NUMBER" ID="GRID_FP_NUMBER" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<O>
|
|
<RULEREF NAME="NEGATIVE" PROPNAME="NEGATIVE" PROPID="NEGATIVE"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="fp_number_nonneg"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="GRID_FP_NUMBER_NONNEG" ID="GRID_FP_NUMBER_NONNEG" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<RULEREF NAME="fp_number_nonneg"/>
|
|
</RULE>
|
|
|
|
<!--
|
|
ORDINAL
|
|
Ordinal numbers from "zeroth" to "999,999,999,999th"
|
|
Not a toplevel rule; will fire only as part of another rule
|
|
-->
|
|
<RULE NAME="GRID_ORDINAL" ID="GRID_ORDINAL" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<!-- If a cardinal big_part is there, the ordinal ending must be there -->
|
|
<O>
|
|
<RULEREF NAME="big_part"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="ordinal_999" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<!--Something like "three thousandth"-->
|
|
<RULEREF NAME="big_part_ord"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
DENOMINATOR_SINGULAR
|
|
Almost exactly the same as an ORDINAL, but "half" replaces "second"
|
|
-->
|
|
<RULE NAME="GRID_DENOMINATOR_SINGULAR" ID="GRID_DENOMINATOR_SINGULAR" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="big_part"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="ordinal_999_den_singular" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="big_part_ord"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
DENOMINATOR
|
|
Almost exactly the same as ORDINALs. The only difference is the plural
|
|
("thirds" instead of "third")
|
|
-->
|
|
<RULE NAME="GRID_DENOMINATOR" ID="GRID_DENOMINATOR" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="big_part"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="ordinal_999_den" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="big_part_ord_den"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
FRACTION
|
|
Can be expressed as either "three over four" or "three fourths".
|
|
Numerator and denominator both are allowed to be in the range (-1e12, 1e12).
|
|
The ITN-interpreting code must be prepared to handle zero denominators.
|
|
-->
|
|
<RULE NAME="GRID_FRACTION" ID="GRID_FRACTION" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<O>
|
|
<!-- Optional whole part -->
|
|
<RULEREF NAME="GRID_INTEGER" PROPNAME="WHOLE" PROPID="WHOLE"/>
|
|
<P>
|
|
and
|
|
</P>
|
|
</O>
|
|
<L>
|
|
<P>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER" PROPNAME="NUMERATOR" PROPID="NUMERATOR"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_DIGIT_NUMBER" PROPNAME="NUMERATOR" PROPID="NUMERATOR"/>
|
|
</P>
|
|
<P PROPNAME="ZERO" PROPID="ZERO" VAL="0">
|
|
oh
|
|
</P>
|
|
</L>
|
|
<L>
|
|
<P>
|
|
over
|
|
</P>
|
|
<P>
|
|
?forward slash
|
|
</P>
|
|
</L>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER" PROPNAME="DENOMINATOR" PROPID="DENOMINATOR"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_DIGIT_NUMBER" PROPNAME="DENOMINATOR" PROPID="DENOMINATOR"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
<P>
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER" PROPNAME="NUMERATOR" PROPID="NUMERATOR"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_DENOMINATOR" PROPNAME="DENOMINATOR" PROPID="DENOMINATOR"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
one
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_DENOMINATOR_SINGULAR" PROPNAME="GRID_DENOMINATOR_SINGULAR" PROPID="DENOMINATOR"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
DATE
|
|
Spoken dates.
|
|
-->
|
|
<RULE NAME="GRID_DATE" ID="GRID_DATE" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<L>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="day_of_week"/>
|
|
</O>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="month"/>
|
|
<RULEREF NAME="day_of_month"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="day_of_month"/>
|
|
<RULEREF NAME="month_capital_necessary"/>
|
|
</P>
|
|
</L>
|
|
<O>
|
|
<RULEREF NAME="GRID_YEAR" PROPNAME="YEAR" PROPID="YEAR"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="month_year" PROPNAME="MONTHYEAR" PROPID="MONTHYEAR"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="year_month" PROPNAME="YEARMONTH" PROPID="YEARMONTH"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
YEAR
|
|
Spoken year.
|
|
-->
|
|
<RULE NAME="GRID_YEAR" ID="GRID_YEAR" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<O>
|
|
<P>
|
|
hundred
|
|
</P>
|
|
<O>
|
|
and
|
|
</O>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<P MIN="4" MAX="4">
|
|
<RULEREF NAME="digit" PROPNAME="ONEDIGIT" PROPID="ONEDIGIT"/>
|
|
</P>
|
|
<P>
|
|
<P PROPNAME="TWOTHOUSAND" PROPID="TWOTHOUSAND" VAL="2000">
|
|
two thousand
|
|
</P>
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit" PROPNAME="ONEDIGIT" PROPID="ONEDIGIT"/>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
<!--
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<P PROPNAME="DATE_HUNDREDS" PROPID="DATE_HUNDREDS" VAL="100">
|
|
hundred
|
|
</P>
|
|
</P>
|
|
-->
|
|
<P>
|
|
<RULEREF NAME="date_hundreds" PROPNAME="DATE_HUNDREDS" PROPID="DATE_HUNDREDS"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
TIME
|
|
Spoken time.
|
|
-->
|
|
<RULE NAME="GRID_TIME" ID="GRID_TIME" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="clock_hour"/>
|
|
</P>
|
|
<P>
|
|
o'clock
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="am_pm"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="clock_hour"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="GRID_CLOCK_MINSEC" PROPNAME="MINUTE" PROPID="MINUTE"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="am_pm"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_999" PROPNAME="HOUR_COUNT" PROPID="HOUR_COUNT"/>
|
|
</P>
|
|
<L>
|
|
<P>
|
|
hours
|
|
</P>
|
|
<P>
|
|
hour
|
|
</P>
|
|
</L>
|
|
<O>
|
|
and
|
|
</O>
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_MINSEC" PROPNAME="MINUTE" PROPID="MINUTE"/>
|
|
</P>
|
|
<L>
|
|
<P>
|
|
minutes
|
|
</P>
|
|
<P>
|
|
minute
|
|
</P>
|
|
</L>
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="GRID_MINSEC" PROPNAME="SECOND" PROPID="SECOND"/>
|
|
</P>
|
|
<L>
|
|
<P>
|
|
seconds
|
|
</P>
|
|
<P>
|
|
second
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_MINSEC" PROPNAME="SECOND" PROPID="SECOND"/>
|
|
</P>
|
|
<L>
|
|
<P>
|
|
seconds
|
|
</P>
|
|
<P>
|
|
second
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
a
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="clocktime_qualifier"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="clock_hour"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_MINSEC
|
|
Formed as a properly-formed number
|
|
-->
|
|
<RULE NAME="GRID_MINSEC" ID="GRID_MINSEC" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<P>
|
|
<RULEREF NAME="minutes" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_CLOCK_MINSEC
|
|
Formed as a properly-formed number
|
|
-->
|
|
<RULE NAME="GRID_CLOCK_MINSEC" ID="GRID_CLOCK_MINSEC" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<P>
|
|
<RULEREF NAME="clock_minutes" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_STATEZIP
|
|
Names of US states and territories are ITNed only if followed by a zip code.
|
|
-->
|
|
<RULE NAME="GRID_STATEZIP" ID="GRID_STATEZIP" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<O>
|
|
<RULEREF NAME="comma" PROPNAME="COMMA" PROPID="COMMA"/>
|
|
</O>
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="us_state"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_ZIPCODE" PROPNAME="ZIPCODE" PROPID="ZIPCODE"/>
|
|
</P>
|
|
<O>
|
|
<O>
|
|
<RULEREF NAME="dash_slash"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="GRID_ZIP_PLUS_FOUR" PROPNAME="FOURDIGITS" PROPID="FOURDIGITS"/>
|
|
</P>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="can_province"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_CAN_ZIPCODE" PROPNAME="ZIPCODE" PROPID="ZIPCODE"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_ZIPCODE
|
|
Five digits, evaluated as a GRID_DIGIT_NUMBER
|
|
-->
|
|
<RULE NAME="GRID_ZIPCODE" ID="GRID_ZIPCODE" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<P MIN="5" MAX="5">
|
|
<RULEREF NAME="digit"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_CAN_ZIPCODE
|
|
Alpha/Number/Alpha Number/Alpha/Number.
|
|
Those wacky canooks
|
|
-->
|
|
<RULE NAME="GRID_CAN_ZIPCODE" ID="GRID_CAN_ZIPCODE" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<P MIN="3" MAX="3">
|
|
<P>
|
|
<RULEREF NAME="alpha"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit"/>
|
|
</P>
|
|
</P>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_ZIP_PLUS_FOUR
|
|
Four digits
|
|
-->
|
|
<RULE NAME="GRID_ZIP_PLUS_FOUR" ID="GRID_ZIP_PLUS_FOUR" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<RULEREF NAME="four_digits"/>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_DEGREES
|
|
Number and then the word "degree(s)"
|
|
Uses context to figure out what kind of degrees:
|
|
* Temperature: Fahrenheit or Celsius
|
|
* Angle measurement: optional minutes or seconds
|
|
* Directions: followed by NESW
|
|
-->
|
|
<RULE NAME="GRID_DEGREES" ID="GRID_DEGREES" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="number_all"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="degrees"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="temp_units"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_NONNEG" PROPNAME="GRID_INTEGER_NONNEG" PROPID="GRID_INTEGER_NONNEG"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="degrees"/>
|
|
</P>
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="GRID_MINSEC" PROPNAME="MINUTE" PROPID="MINUTE"/>
|
|
</P>
|
|
<L>
|
|
<P>
|
|
minutes
|
|
</P>
|
|
<P>
|
|
minute
|
|
</P>
|
|
</L>
|
|
</O>
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="GRID_MINSEC" PROPNAME="SECOND" PROPID="SECOND"/>
|
|
</P>
|
|
<L>
|
|
<P>
|
|
seconds
|
|
</P>
|
|
<P>
|
|
second
|
|
</P>
|
|
</L>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="direction"/>
|
|
</O>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
GRID_MEASUREMENT
|
|
Any sort of number (NUMBER, FLOAT, or FRACTION) followed by a unit
|
|
-->
|
|
<RULE NAME="GRID_MEASUREMENT" ID="GRID_MEASUREMENT" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FRACTION" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
</L>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="units"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="commonunits"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- <RULE NAME="COMMON_GRID_MEASUREMENT" ID="COMMON_GRID_MEASURMEMENT" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="0">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_20_MILLBILL" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FRACTION" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
</L>
|
|
|
|
<P>
|
|
<RULEREF NAME="commonunits"/>
|
|
</P>
|
|
</RULE>-->
|
|
|
|
<!--
|
|
CURRENCY
|
|
Allows for dollars and optional cents, just cents, or a floating-point number
|
|
of dollars.
|
|
-->
|
|
<RULE NAME="GRID_CURRENCY" ID="GRID_CURRENCY" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="NEGATIVE" PROPNAME="NEGATIVE" PROPID="NEGATIVE"/>
|
|
</O>
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_NONNEG" PROPNAME="DOLLARS" PROPID="DOLLARS"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="currency_type"/>
|
|
</P>
|
|
<O>
|
|
currency
|
|
</O>
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="GRID_CENTS" PROPNAME="CENTS" PROPID="CENTS"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="currency_small_type"/>
|
|
</O>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_NONNEG" PROPNAME="DOLLARS" PROPID="DOLLARS"/>
|
|
</P>
|
|
<P>
|
|
and
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_CENTS" PROPNAME="CENTS" PROPID="CENTS"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="currency_small_type"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_MILLBILL" PROPNAME="DOLLARS" PROPID="DOLLARS"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="currency_type"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_NONNEG" PROPNAME="CENTS" PROPID="CENTS"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="currency_small_type"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER" PROPNAME="DOLLARS" PROPID="DOLLARS"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="currency_type"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER_NONNEG" PROPNAME="CENTS" PROPID="CENTS"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="currency_small_type"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="GRID_CENTS" ID="GRID_CENTS" INTERPRETER="1" TOPLEVEL="INACTIVE" EXPORT="1">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="digit"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
|
|
<!-- ************************************************************************
|
|
CARDINAL QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<!--
|
|
integer_base
|
|
The rule referenced by the number rules above
|
|
-->
|
|
<RULE NAME="integer_base">
|
|
<O>
|
|
<RULEREF NAME="NEGATIVE" PROPNAME="NEGATIVE" PROPID="NEGATIVE"/>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="integer_base_nonneg"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<!--
|
|
integer_base_nonneg
|
|
Same as above except nonnegative
|
|
-->
|
|
<RULE NAME="integer_base_nonneg">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="cardinal"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_DIGIT_NUMBER" PROPNAME="GRID_DIGIT_NUMBER" PROPID="GRID_DIGIT_NUMBER"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
cardinal
|
|
A cardinal is defined here as a number in [0, 1e12), properly
|
|
formed (not spoken digit by digit)
|
|
-->
|
|
<RULE NAME="cardinal">
|
|
<L>
|
|
<P>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="big_part"/>
|
|
</P>
|
|
</L>
|
|
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<P>
|
|
<!-- cardinal_999 part optional if the big_part is present -->
|
|
<RULEREF NAME="cardinal_999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="cardinal_99_nonzero" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
hundred
|
|
</P>
|
|
<O>
|
|
<O>
|
|
and
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="cardinal_99_nonzero" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<!-- cardinal_999 part mandatory if the big_part is not present.
|
|
In this case, the cardinal_999 part must be at least 20 -->
|
|
<RULEREF NAME="cardinal_999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
big_part
|
|
A big_part is the part of a spoken number that is divisible by 1000. It
|
|
has to be in the range (-1e12, 1e12).
|
|
-->
|
|
<RULE NAME="big_part">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P> billion </P>
|
|
<!-- billions are present, so millions and thousands are optional -->
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P> million </P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="THOUSANDS"/>
|
|
<P> thousand </P>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P> million </P>
|
|
<!-- millions are present, so thousands are optional -->
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="THOUSANDS"/>
|
|
<P> thousand </P>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<!-- billions and millions not present, so thousands are mandatory -->
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="THOUSANDS"/>
|
|
<P> thousand </P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
cardinal_999
|
|
This is defined as a number in [0,1000).
|
|
-->
|
|
<RULE NAME="cardinal_999">
|
|
<L>
|
|
<P PROPNAME="ZERO" PROPID="ZERO" VAL="0">
|
|
zero
|
|
</P>
|
|
<P>
|
|
<!-- A number between 1 and 19 -->
|
|
<RULEREF NAME="onesfrag" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<!-- A "tens" number (20, 30,...) -->
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
<O>
|
|
<!-- Can be followed by a nonzero digit -->
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<!-- A number at least 100 -->
|
|
<RULEREF NAME="hundredsfrag" PROPNAME="HUNDREDS" VAL="100"/>
|
|
<!-- optionally followed by tens and ones places -->
|
|
<O>
|
|
<L>
|
|
<P>
|
|
<!-- e.g. six hundred thirteen -->
|
|
<!-- Note that this case is not covered by the later case -->
|
|
<RULEREF NAME="onesfrag" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<!-- e.g. six hundred thirty two -->
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
<O>
|
|
<!-- ones place optional -->
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
<RULE NAME="cardinal_20_999">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="hundredsfrag" PROPNAME="HUNDREDS" VAL="100"/>
|
|
<O>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="onesfrag" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
cardinal_99
|
|
Defined as any integer in [0,100)
|
|
-->
|
|
<RULE NAME="cardinal_99">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="cardinal_99_nonzero"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="zero"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="cardinal_99_nonzero">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
<O><RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/></O>
|
|
</P>
|
|
<P> <RULEREF NAME="onesfrag" PROPNAME="ONES" VAL="1"/> </P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="NEGATIVE">
|
|
<L>
|
|
<P>
|
|
negative
|
|
</P>
|
|
<P>
|
|
minus
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="twodigit">
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_teens" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<L>
|
|
<P>
|
|
zero
|
|
</P>
|
|
<P>
|
|
oh
|
|
</P>
|
|
</L>
|
|
<P>
|
|
<RULEREF NAME="digit" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<RULE NAME="hundredsfrag">
|
|
<L>
|
|
<L PROPNAME="HUNDREDS" PROPID="HUNDREDS">
|
|
<P VAL="1" VALSTR="1">a</P>
|
|
</L>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero"/>
|
|
</P>
|
|
</L>
|
|
<P>
|
|
hundred ?and
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="tensfrag">
|
|
<L PROPNAME="TENS" PROPID="TENS">
|
|
<P VAL="2" VALSTR="2">twenty</P>
|
|
<P VAL="3" VALSTR="3">thirty</P>
|
|
<P VAL="4" VALSTR="4">forty</P>
|
|
<P VAL="5" VALSTR="5">fifty</P>
|
|
<P VAL="6" VALSTR="6">sixty</P>
|
|
<P VAL="7" VALSTR="7">seventy</P>
|
|
<P VAL="8" VALSTR="8">eighty</P>
|
|
<P VAL="9" VALSTR="9">ninety</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="onesfrag">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_teens"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="onesfrag_teens">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="10" VALSTR="10">ten</P>
|
|
<P VAL="11" VALSTR="11">eleven</P>
|
|
<P VAL="12" VALSTR="12">twelve</P>
|
|
<P VAL="13" VALSTR="13">thirteen</P>
|
|
<P VAL="14" VALSTR="14">fourteen</P>
|
|
<P VAL="15" VALSTR="15">fifteen</P>
|
|
<P VAL="16" VALSTR="16">sixteen</P>
|
|
<P VAL="17" VALSTR="17">seventeen</P>
|
|
<P VAL="18" VALSTR="18">eighteen</P>
|
|
<P VAL="19" VALSTR="19">nineteen</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="onesfrag_or_zero">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="zero"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="onesfrag"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="digit_nonzero_or_one">
|
|
<L PROPNAME="DIGIT" PROPID="DIGIT">
|
|
<P VAL="2" VALSTR="2">two</P>
|
|
<P VAL="3" VALSTR="3">three</P>
|
|
<P VAL="4" VALSTR="4">four</P>
|
|
<P VAL="5" VALSTR="5">five</P>
|
|
<P VAL="6" VALSTR="6">six</P>
|
|
<P VAL="7" VALSTR="7">seven</P>
|
|
<P VAL="8" VALSTR="8">eight</P>
|
|
<P VAL="9" VALSTR="9">nine</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="digit_nonzero">
|
|
<L>
|
|
<L PROPNAME="DIGIT" PROPID="DIGIT">
|
|
<P VAL="1" VALSTR="1">one</P>
|
|
</L>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_or_one"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="digit">
|
|
<L>
|
|
<L PROPNAME="DIGIT" PROPID="DIGIT">
|
|
<P VAL="0" VALSTR="0">zero</P>
|
|
<P VAL="0" VALSTR="0">oh</P>
|
|
</L>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="zero">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="0" VALSTR="0">zero</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
ORDINAL QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<!--
|
|
big_part_ord
|
|
This is when the ordinal number ends in something divisible by 100, so
|
|
the last word will be either "billionth", "millionth", "thousandth", or
|
|
"hundredth"
|
|
-->
|
|
<RULE NAME="big_part_ord">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billionth
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billion
|
|
</P>
|
|
</O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P>
|
|
millionth
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billion
|
|
</P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P>
|
|
million
|
|
</P>
|
|
</O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="THOUSANDS"/>
|
|
<P>
|
|
thousandth
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billion
|
|
</P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P>
|
|
million
|
|
</P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="THOUSANDS"/>
|
|
<P>
|
|
thousand
|
|
</P>
|
|
</O>
|
|
<RULEREF NAME="cardinal_99_nonzero" PROPNAME="HUNDREDS" PROPID="HUNDREDS"/>
|
|
<P>
|
|
hundredth
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
ordinal_999
|
|
This is an ordinal number between "zeroth" and "nine hundred ninety ninth"
|
|
-->
|
|
<RULE NAME="ordinal_999">
|
|
<L>
|
|
<P PROPNAME="ZERO" PROPID="ZERO" VAL="0">
|
|
zeroth
|
|
</P>
|
|
<P>
|
|
<!-- A number between 1st and 19th, or 20th, 30th, ...90th -->
|
|
<RULEREF NAME="onesfrag_ord" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<!-- Something like "thirty ninth". Note that "thirtieth" would be covered above -->
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_ord" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="hundredsfrag" PROPNAME="HUNDREDS" VAL="100"/>
|
|
</P>
|
|
<!-- Followed by either a one-word ordinal ("twelfth") or a two-word
|
|
ordinal ("thirty ninth") -->
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_ord" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_ord" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
onesfrag_ord
|
|
These are the words with which an ordinal number less than 1000
|
|
could end
|
|
-->
|
|
<RULE NAME="onesfrag_ord">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<!--<P VAL="0">zero</P>-->
|
|
<P VAL="1">first</P>
|
|
<P VAL="2">second</P>
|
|
<P VAL="3">third</P>
|
|
<P VAL="4">fourth</P>
|
|
<P VAL="5">fifth</P>
|
|
<P VAL="6">sixth</P>
|
|
<P VAL="7">seventh</P>
|
|
<P VAL="8">eighth</P>
|
|
<P VAL="9">ninth</P>
|
|
<P VAL="10">tenth</P>
|
|
<P VAL="11">eleventh</P>
|
|
<P VAL="12">twelfth</P>
|
|
<P VAL="13">thirteenth</P>
|
|
<P VAL="14">fourteenth</P>
|
|
<P VAL="15">fifteenth</P>
|
|
<P VAL="16">sixteenth</P>
|
|
<P VAL="17">seventeenth</P>
|
|
<P VAL="18">eighteenth</P>
|
|
<P VAL="19">nineteenth</P>
|
|
<P VAL="20">twentieth</P>
|
|
<P VAL="30">thirtieth</P>
|
|
<P VAL="40">fortieth</P>
|
|
<P VAL="50">fiftieth</P>
|
|
<P VAL="60">sixtieth</P>
|
|
<P VAL="70">seventieth</P>
|
|
<P VAL="80">eightieth</P>
|
|
<P VAL="90">ninetieth</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<RULE NAME="digit_nonzero_ord">
|
|
<L PROPNAME="DIGIT" PROPID="DIGIT">
|
|
<P VAL="1">first</P>
|
|
<P VAL="2">second</P>
|
|
<P VAL="3">third</P>
|
|
<P VAL="4">fourth</P>
|
|
<P VAL="5">fifth</P>
|
|
<P VAL="6">sixth</P>
|
|
<P VAL="7">seventh</P>
|
|
<P VAL="8">eighth</P>
|
|
<P VAL="9">ninth</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
DENOMINATOR QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<!--
|
|
big_part_ord_den
|
|
Almost exactly the same as big_part_ord, except the ordinal part is plural.
|
|
-->
|
|
<RULE NAME="big_part_ord_den">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billionths
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billion
|
|
</P>
|
|
</O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P>
|
|
millionths
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billion
|
|
</P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P>
|
|
million
|
|
</P>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="THOUSANDS"/>
|
|
<P>
|
|
thousandths
|
|
</P>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="BILLIONS" PROPID="BILLIONS"/>
|
|
<P>
|
|
billion
|
|
</P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="MILLIONS" PROPID="MILLIONS"/>
|
|
<P>
|
|
million
|
|
</P>
|
|
</O>
|
|
<O>
|
|
<RULEREF NAME="cardinal_999" PROPNAME="THOUSANDS" PROPID="MILLIONS"/>
|
|
<P>
|
|
thousand
|
|
</P>
|
|
</O>
|
|
<P>
|
|
<RULEREF NAME="cardinal_99_nonzero" PROPNAME="HUNDREDS" PROPID="HUNDREDS"/>
|
|
<P>
|
|
hundredths
|
|
</P>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
ordinal_999_den
|
|
Same as ordinal_999, except plural, and no zeroths.
|
|
-->
|
|
<RULE NAME="ordinal_999_den">
|
|
<L>
|
|
<P>
|
|
<!-- A number between 1st and 19th, or 20th, 30th, ...90th -->
|
|
<RULEREF NAME="onesfrag_ord_den_or_half_quarter" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<!-- Something like "thirty ninth". Note that "thirtieth" would be covered above -->
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_ord_den" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="hundredsfrag" PROPNAME="HUNDREDS" VAL="100"/>
|
|
</P>
|
|
<!-- Followed by either a one-word ordinal ("twelfth") or a two-word
|
|
ordinal ("thirty ninth") -->
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_ord_den" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_ord_den" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
ordinal_999_den_singular
|
|
Same as ordinal_999_den, except all endings must be singular
|
|
-->
|
|
<RULE NAME="ordinal_999_den_singular">
|
|
<L>
|
|
<P>
|
|
<!-- A number between 1st and 19th, or 20th, 30th, ...90th -->
|
|
<RULEREF NAME="onesfrag_ord_den_singular_or_half_quarter" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<!-- Something like "thirty ninth". Note that "thirtieth" would be covered above -->
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_ord_den_singular" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="hundredsfrag" PROPNAME="HUNDREDS" VAL="100"/>
|
|
</P>
|
|
<!-- Followed by either a one-word ordinal ("twelfth") or a two-word
|
|
ordinal ("thirty ninth") -->
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_ord_den_singular" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="tensfrag" PROPNAME="TENS" VAL="10"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero_ord_den_singular" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!--
|
|
onesfrag_ord_den
|
|
Same as onesfrag_ord except plural.
|
|
-->
|
|
<RULE NAME="onesfrag_ord_den">
|
|
<L>
|
|
<P>
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="3">thirds</P>
|
|
<P VAL="4">fourths</P>
|
|
<P VAL="5">fifths</P>
|
|
<P VAL="6">sixths</P>
|
|
<P VAL="7">sevenths</P>
|
|
<P VAL="8">eighths</P>
|
|
<P VAL="9">ninths</P>
|
|
<P VAL="10">tenths</P>
|
|
<P VAL="11">elevenths</P>
|
|
<P VAL="12">twelfths</P>
|
|
<P VAL="13">thirteenths</P>
|
|
<P VAL="14">fourteenths</P>
|
|
<P VAL="15">fifteenths</P>
|
|
<P VAL="16">sixteenths</P>
|
|
<P VAL="17">seventeenths</P>
|
|
<P VAL="18">eighteenths</P>
|
|
<P VAL="19">nineteenths</P>
|
|
<P VAL="20">twentieths</P>
|
|
<P VAL="30">thirtieths</P>
|
|
<P VAL="40">fortieths</P>
|
|
<P VAL="50">fiftieths</P>
|
|
<P VAL="60">sixtieths</P>
|
|
<P VAL="70">seventieths</P>
|
|
<P VAL="80">eightieths</P>
|
|
<P VAL="90">ninetieths</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="onesfrag_ord_den_or_half_quarter">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_ord_den"/>
|
|
</P>
|
|
<P>
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="2">half</P>
|
|
<P VAL="4">quarter</P>
|
|
<P VAL="2">halves</P>
|
|
<P VAL="4">quarters</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!--
|
|
onesfrag_ord_den_singular
|
|
Same as onesfrag_ord_den except singular.
|
|
-->
|
|
<RULE NAME="onesfrag_ord_den_singular">
|
|
<L>
|
|
<P>
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="2">half</P>
|
|
<P VAL="3">third</P>
|
|
<P VAL="4">fourth</P>
|
|
<P VAL="5">fifth</P>
|
|
<P VAL="6">sixth</P>
|
|
<P VAL="7">seventh</P>
|
|
<P VAL="8">eighth</P>
|
|
<P VAL="9">ninth</P>
|
|
<P VAL="10">tenth</P>
|
|
<P VAL="11">eleventh</P>
|
|
<P VAL="12">twelfth</P>
|
|
<P VAL="13">thirteenth</P>
|
|
<P VAL="14">fourteenth</P>
|
|
<P VAL="15">fifteenth</P>
|
|
<P VAL="16">sixteenth</P>
|
|
<P VAL="17">seventeenth</P>
|
|
<P VAL="18">eighteenth</P>
|
|
<P VAL="19">nineteenth</P>
|
|
<P VAL="20">twentieth</P>
|
|
<P VAL="30">thirtieth</P>
|
|
<P VAL="40">fortieth</P>
|
|
<P VAL="50">fiftieth</P>
|
|
<P VAL="60">sixtieth</P>
|
|
<P VAL="70">seventieth</P>
|
|
<P VAL="80">eightieth</P>
|
|
<P VAL="90">ninetieth</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="onesfrag_ord_den_singular_or_half_quarter">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_ord_den_singular"/>
|
|
</P>
|
|
<P>
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="2">half</P>
|
|
<P VAL="4">quarter</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<RULE NAME="digit_nonzero_ord_den">
|
|
<L>
|
|
<P>
|
|
<L PROPNAME="DIGIT" PROPID="DIGIT">
|
|
<P VAL="1">firsts</P>
|
|
<P VAL="2">seconds</P>
|
|
<P VAL="3">thirds</P>
|
|
<P VAL="4">fourths</P>
|
|
<P VAL="4">quarters</P>
|
|
<P VAL="5">fifths</P>
|
|
<P VAL="6">sixths</P>
|
|
<P VAL="7">sevenths</P>
|
|
<P VAL="8">eighths</P>
|
|
<P VAL="9">ninths</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="digit_nonzero_ord_den_singular">
|
|
<L>
|
|
<P>
|
|
<L PROPNAME="DIGIT" PROPID="DIGIT">
|
|
<P VAL="1">first</P>
|
|
<P VAL="2">second</P>
|
|
<P VAL="3">third</P>
|
|
<P VAL="4">fourth</P>
|
|
<P VAL="5">fifth</P>
|
|
<P VAL="6">sixth</P>
|
|
<P VAL="7">seventh</P>
|
|
<P VAL="8">eighth</P>
|
|
<P VAL="9">ninth</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
FLOATING-POINT NUMBER QUANTITIES
|
|
************************************************************************ -->
|
|
<!--
|
|
fp_number_nonneg
|
|
Floating-point numbers with up to 12 sig figs. Both the stuff to the left of the
|
|
decimal point and the stuff to the right of the decimal point can be either
|
|
NUMBERs or DIGIT_NUMBERs
|
|
-->
|
|
<RULE NAME="fp_number_nonneg">
|
|
<O>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_NONNEG" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
<P PROPNAME="ZERO" PROPID="ZERO" VAL="0">
|
|
oh
|
|
</P>
|
|
</L>
|
|
</O>
|
|
<L>
|
|
<P>
|
|
point
|
|
</P>
|
|
<P>
|
|
decimal
|
|
</P>
|
|
</L>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_DIGIT_NUMBER" PROPNAME="FP_PART" PROPID="FP_PART"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER_999" PROPNAME="FP_PART" PROPID="FP_PART"/>
|
|
</P>
|
|
<P PROPNAME="POINT_ZERO" PROPID="POINT_ZERO" VAL="0">
|
|
oh
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
DATE QUANTITIES
|
|
************************************************************************ -->
|
|
<RULE NAME="day_of_week">
|
|
<L PROPNAME="DAY_OF_WEEK" PROPID="DAY_OF_WEEK">
|
|
<P VAL="1">Monday</P>
|
|
<P VAL="2">Tuesday</P>
|
|
<P VAL="3">Wednesday</P>
|
|
<P VAL="4">Thursday</P>
|
|
<P VAL="5">Friday</P>
|
|
<P VAL="6">Saturday</P>
|
|
<P VAL="7">Sunday</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="month">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="month_capital_necessary"/>
|
|
</P>
|
|
<P>
|
|
<L PROPNAME="MONTH" PROPID="MONTH">
|
|
<P VAL="3">march</P>
|
|
<P VAL="5">may</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
|
|
</RULE>
|
|
|
|
<RULE NAME="month_capital_necessary">
|
|
<L PROPNAME="MONTH" PROPID="MONTH">
|
|
<P VAL="1">January</P>
|
|
<P VAL="2">February</P>
|
|
<P VAL="3">March</P>
|
|
<P VAL="4">April</P>
|
|
<P VAL="5">May</P>
|
|
<P VAL="6">June</P>
|
|
<P VAL="7">July</P>
|
|
<P VAL="8">August</P>
|
|
<P VAL="9">September</P>
|
|
<P VAL="10">October</P>
|
|
<P VAL="11">November</P>
|
|
<P VAL="12">December</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="day_of_month">
|
|
<L PROPNAME="DAY_OF_MONTH" PROPID="DAY_OF_MONTH">
|
|
<P VAL="1">one</P>
|
|
<P VAL="1">first</P>
|
|
<P VAL="2">two</P>
|
|
<P VAL="2">second</P>
|
|
<P VAL="3">three</P>
|
|
<P VAL="3">third</P>
|
|
<P VAL="4">four</P>
|
|
<P VAL="4">fourth</P>
|
|
<P VAL="5">five</P>
|
|
<P VAL="5">fifth</P>
|
|
<P VAL="6">six</P>
|
|
<P VAL="6">sixth</P>
|
|
<P VAL="7">seven</P>
|
|
<P VAL="7">seventh</P>
|
|
<P VAL="8">eight</P>
|
|
<P VAL="8">eighth</P>
|
|
<P VAL="9">nine</P>
|
|
<P VAL="9">ninth</P>
|
|
<P VAL="10">ten</P>
|
|
<P VAL="10">tenth</P>
|
|
<P VAL="11">eleven</P>
|
|
<P VAL="11">eleventh</P>
|
|
<P VAL="12">twelve</P>
|
|
<P VAL="12">twelfth</P>
|
|
<P VAL="13">thirteen</P>
|
|
<P VAL="13">thirteenth</P>
|
|
<P VAL="14">fourteen</P>
|
|
<P VAL="14">fourteenth</P>
|
|
<P VAL="15">fifteen</P>
|
|
<P VAL="15">fifteenth</P>
|
|
<P VAL="16">sixteen</P>
|
|
<P VAL="16">sixteenth</P>
|
|
<P VAL="17">seventeen</P>
|
|
<P VAL="17">seventeenth</P>
|
|
<P VAL="18">eighteen</P>
|
|
<P VAL="18">eighteenth</P>
|
|
<P VAL="19">nineteen</P>
|
|
<P VAL="19">nineteenth</P>
|
|
<P VAL="20">twenty</P>
|
|
<P VAL="20">twentieth</P>
|
|
<P VAL="21">twenty one</P>
|
|
<P VAL="21">twenty first</P>
|
|
<P VAL="22">twenty two</P>
|
|
<P VAL="22">twenty second</P>
|
|
<P VAL="23">twenty three</P>
|
|
<P VAL="23">twenty third</P>
|
|
<P VAL="24">twenty four</P>
|
|
<P VAL="24">twenty fourth</P>
|
|
<P VAL="25">twenty five</P>
|
|
<P VAL="25">twenty fifth</P>
|
|
<P VAL="26">twenty six</P>
|
|
<P VAL="26">twenty sixth</P>
|
|
<P VAL="27">twenty seven</P>
|
|
<P VAL="27">twenty seventh</P>
|
|
<P VAL="28">twenty eight</P>
|
|
<P VAL="28">twenty eighth</P>
|
|
<P VAL="29">twenty nine</P>
|
|
<P VAL="29">twenty ninth</P>
|
|
<P VAL="30">thirty</P>
|
|
<P VAL="30">thirtieth</P>
|
|
<P VAL="31">thirty one</P>
|
|
<P VAL="31">thirty first</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<RULE NAME="year">
|
|
<L>
|
|
<P>
|
|
<!-- stuff like "two thousand one" -->
|
|
<RULEREF NAME="GRID_INTEGER"/>
|
|
</P>
|
|
<P>
|
|
<!-- stuff like "nineteen seventy seven" -->
|
|
<RULEREF NAME="GRID_DIGIT_NUMBER"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="month_year">
|
|
<P>
|
|
<RULEREF NAME="month"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_YEAR" PROPNAME="YEAR" PROPID="YEAR"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="year_month">
|
|
<P>
|
|
<RULEREF NAME="GRID_YEAR" PROPNAME="YEAR" PROPID="YEAR"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="month_capital_necessary"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="date_hundreds">
|
|
<P>
|
|
<RULEREF NAME="twodigit" PROPNAME="TWODIGIT" PROPID="TWODIGIT"/>
|
|
</P>
|
|
<P>
|
|
hundred
|
|
</P>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
TIME QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<RULE NAME="clock_hour">
|
|
<L PROPNAME="HOUR_CLOCK" PROPID="HOUR_CLOCK">
|
|
<P VAL="1">one</P>
|
|
<P VAL="2">two</P>
|
|
<P VAL="3">three</P>
|
|
<P VAL="4">four</P>
|
|
<P VAL="5">five</P>
|
|
<P VAL="6">six</P>
|
|
<P VAL="7">seven</P>
|
|
<P VAL="8">eight</P>
|
|
<P VAL="9">nine</P>
|
|
<P VAL="10">ten</P>
|
|
<P VAL="11">eleven</P>
|
|
<P VAL="12">twelve</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="clocktime_qualifier">
|
|
<L PROPNAME="CLOCKTIME_QUALIFIER" PROPID="CLOCKTIME_QUALIFIER">
|
|
<P VAL="QUARTER_TO">quarter to</P>
|
|
<P VAL="QUARTER_TO">quarter til</P>
|
|
<P VAL="QUARTER_PAST">quarter past</P>
|
|
<P VAL="QUARTER_PAST">quarter after</P>
|
|
<P VAL="HALF_PAST">half past</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="minutes">
|
|
<P PROPNAME="ONES" PROPID="ONES">
|
|
<L>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_or_zero" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="clock_minutes"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="clock_minutes">
|
|
<L>
|
|
<P>
|
|
<L>
|
|
<P>
|
|
oh
|
|
</P>
|
|
<P>
|
|
zero
|
|
</P>
|
|
</L>
|
|
<P>
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="onesfrag_teens" PROPNAME="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<P>
|
|
<RULEREF NAME="tensfrag_minutes" PROPNAME="TENS" PROPID="TENS" VAL="10"/>
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="digit_nonzero" PROPNAME="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="tensfrag_minutes">
|
|
<L PROPNAME="TENS" PROPID="TENS">
|
|
<P VAL="2">twenty</P>
|
|
<P VAL="3">thirty</P>
|
|
<P VAL="4">forty</P>
|
|
<P VAL="5">fifty</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="am_pm">
|
|
<L PROPNAME="AMPM" PROPID="AMPM">
|
|
<P VAL="AM">AM</P>
|
|
<P VAL="PM">PM</P>
|
|
</L>
|
|
<!--
|
|
<P PROPNAME="AM" PROPID="AM">
|
|
A.M.
|
|
</P>
|
|
<P PROPNAME="PM" PROPID="PM">
|
|
P.M.
|
|
</P>
|
|
</L>
|
|
-->
|
|
</RULE>
|
|
|
|
|
|
<!-- ************************************************************************
|
|
STATEZIP QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<RULE NAME="us_state">
|
|
<L PROPNAME="US_STATE" PROPID="US_STATE">
|
|
<P VAL="0" VALSTR="AL">Alabama</P>
|
|
<P VAL="1" VALSTR="AK">Alaska</P>
|
|
<P VAL="2" VALSTR="AS">American Samoa</P>
|
|
<P VAL="3" VALSTR="AZ">Arizona</P>
|
|
<P VAL="4" VALSTR="AR">Arkansas</P>
|
|
<P VAL="5" VALSTR="CA">California</P>
|
|
<P VAL="6" VALSTR="CO">Colorado</P>
|
|
<P VAL="7" VALSTR="CT">Connecticut</P>
|
|
<P VAL="8" VALSTR="DE">Delaware</P>
|
|
<P VAL="9" VALSTR="DC">District of Columbia</P>
|
|
<P VAL="9" VALSTR="DC">DC</P>
|
|
<P VAL="10" VALSTR="FM">Federated States of Micronesia</P>
|
|
<P VAL="11" VALSTR="FL">Florida</P>
|
|
<P VAL="12" VALSTR="GA">Georgia</P>
|
|
<P VAL="13" VALSTR="GU">Guam</P>
|
|
<P VAL="14" VALSTR="HI">Hawaii</P>
|
|
<P VAL="15" VALSTR="ID">Idaho</P>
|
|
<P VAL="16" VALSTR="IL">Illinois</P>
|
|
<P VAL="17" VALSTR="IN">Indiana</P>
|
|
<P VAL="18" VALSTR="IA">Iowa</P>
|
|
<P VAL="19" VALSTR="KS">Kansas</P>
|
|
<P VAL="20" VALSTR="KY">Kentucky</P>
|
|
<P VAL="21" VALSTR="LA">Louisiana</P>
|
|
<P VAL="22" VALSTR="ME">Maine</P>
|
|
<P VAL="23" VALSTR="MH">Marshall Islands</P>
|
|
<P VAL="24" VALSTR="MD">Maryland</P>
|
|
<P VAL="25" VALSTR="MA">Massachusetts</P>
|
|
<P VAL="26" VALSTR="MI">Michigan</P>
|
|
<P VAL="27" VALSTR="MN">Minnesota</P>
|
|
<P VAL="28" VALSTR="MS">Mississippi</P>
|
|
<P VAL="29" VALSTR="MO">Missouri</P>
|
|
<P VAL="30" VALSTR="MT">Montana</P>
|
|
<P VAL="31" VALSTR="NE">Nebraska</P>
|
|
<P VAL="32" VALSTR="NV">Nevada</P>
|
|
<P VAL="33" VALSTR="NH">New Hampshire</P>
|
|
<P VAL="34" VALSTR="NJ">New Jersey</P>
|
|
<P VAL="35" VALSTR="NM">New Mexico</P>
|
|
<P VAL="36" VALSTR="NY">New York</P>
|
|
<P VAL="37" VALSTR="NC">North Carolina</P>
|
|
<P VAL="38" VALSTR="ND">North Dakota</P>
|
|
<P VAL="39" VALSTR="MP">Northern Mariana Island</P>
|
|
<P VAL="40" VALSTR="OH">Ohio</P>
|
|
<P VAL="41" VALSTR="OK">Oklahoma</P>
|
|
<P VAL="42" VALSTR="OR">Oregon</P>
|
|
<P VAL="43" VALSTR="PA">Pennsylvania</P>
|
|
<P VAL="44" VALSTR="PR">Puerto Rico</P>
|
|
<P VAL="45" VALSTR="RI">Rhode Island</P>
|
|
<P VAL="46" VALSTR="SC">South Carolina</P>
|
|
<P VAL="47" VALSTR="SD">South Dakota</P>
|
|
<P VAL="48" VALSTR="TX">Texas</P>
|
|
<P VAL="49" VALSTR="UT">Utah</P>
|
|
<P VAL="50" VALSTR="VT">Vermont</P>
|
|
<P VAL="51" VALSTR="VA">Virginia</P>
|
|
<P VAL="52" VALSTR="VI">Virgin Islands</P>
|
|
<P VAL="53" VALSTR="WA">Washington</P>
|
|
<P VAL="54" VALSTR="WV">West Virginia</P>
|
|
<P VAL="55" VALSTR="WI">Wisconsin</P>
|
|
<P VAL="56" VALSTR="WY">Wyoming</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="can_province">
|
|
<L PROPNAME="CAN_PROVINCE" PROPID="CAN_PROVINCE">
|
|
<P VAL="0" VALSTR="AL">Alberta</P>
|
|
<P VAL="1" VALSTR="BC">British Columbia</P>
|
|
<P VAL="2" VALSTR="MB">Manitoba</P>
|
|
<P VAL="3" VALSTR="NB">new Brunswick</P>
|
|
<P VAL="3" VALSTR="NB">New Brunswick</P>
|
|
<P VAL="4" VALSTR="NF">Newfoundland and Labrador</P>
|
|
<P VAL="4" VALSTR="NF">Newfoundland</P>
|
|
<P VAL="4" VALSTR="NF">Labrador</P>
|
|
<P VAL="5" VALSTR="NT">Northwest Territories</P>
|
|
<P VAL="5" VALSTR="NT">northwest territories</P>
|
|
<P VAL="6" VALSTR="ON">Ontario</P>
|
|
<P VAL="7" VALSTR="PE">Prince Edward Island</P>
|
|
<P VAL="7" VALSTR="PE">Prince Edward island</P>
|
|
<P VAL="8" VALSTR="PQ">Quebec</P>
|
|
<P VAL="9" VALSTR="SK">Saskatchewan</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="alpha">
|
|
<L PROPNAME="ALPHA" PROPID="ALPHA">
|
|
<P VAL="0" VALSTR="A">A.</P>
|
|
<P VAL="1" VALSTR="B">B.</P>
|
|
<P VAL="2" VALSTR="C">C.</P>
|
|
<P VAL="3" VALSTR="D">D.</P>
|
|
<P VAL="4" VALSTR="E">E.</P>
|
|
<P VAL="5" VALSTR="F">F.</P>
|
|
<P VAL="6" VALSTR="G">G.</P>
|
|
<P VAL="7" VALSTR="H">H.</P>
|
|
<P VAL="8" VALSTR="I">I.</P>
|
|
<P VAL="9" VALSTR="J">J.</P>
|
|
<P VAL="10" VALSTR="K">K.</P>
|
|
<P VAL="11" VALSTR="L">L.</P>
|
|
<P VAL="12" VALSTR="M">M.</P>
|
|
<P VAL="13" VALSTR="N">N.</P>
|
|
<P VAL="14" VALSTR="O">O.</P>
|
|
<P VAL="15" VALSTR="P">P.</P>
|
|
<P VAL="16" VALSTR="Q">Q.</P>
|
|
<P VAL="17" VALSTR="R">R.</P>
|
|
<P VAL="18" VALSTR="S">S.</P>
|
|
<P VAL="19" VALSTR="T">T.</P>
|
|
<P VAL="20" VALSTR="U">U.</P>
|
|
<P VAL="21" VALSTR="V">V.</P>
|
|
<P VAL="22" VALSTR="W">W.</P>
|
|
<P VAL="23" VALSTR="X">X.</P>
|
|
<P VAL="24" VALSTR="Y">Y.</P>
|
|
<P VAL="25" VALSTR="Z">Z.</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="comma">
|
|
<L>
|
|
<P>
|
|
comma
|
|
</P>
|
|
<P>
|
|
,
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
PHONE NUMBER QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<!--
|
|
three_digits_phone
|
|
Area codes and exchanges never start with zero or one
|
|
-->
|
|
<RULE NAME="three_digits_phone">
|
|
<RULEREF NAME="digit_nonzero_or_one"/>
|
|
<P MIN="2" MAX="2">
|
|
<RULEREF NAME="digit"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="four_digits">
|
|
<P MIN="4" MAX="4">
|
|
<RULEREF NAME="digit"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<RULE NAME="dash_slash">
|
|
<L>
|
|
<P>
|
|
-
|
|
</P>
|
|
<P>
|
|
dash
|
|
</P>
|
|
<P>
|
|
slash
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="one_plus">
|
|
<P>
|
|
one
|
|
</P>
|
|
<O>
|
|
<RULEREF NAME="dash_slash"/>
|
|
</O>
|
|
</RULE>
|
|
|
|
<RULE NAME="area_code">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="three_digits_phone"/>
|
|
</P>
|
|
<L PROPNAME="AREA_CODE" PROPID="AREA_CODE">
|
|
<P VAL="800" VALSTR="800">
|
|
eight hundred
|
|
</P>
|
|
<P VAL="900" VALSTR="900">
|
|
nine hundred
|
|
</P>
|
|
</L>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="extension">
|
|
<P MIN="1" MAX="8">
|
|
<RULEREF NAME="digit"/>
|
|
</P>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
DEGREES QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<RULE NAME="degrees">
|
|
<L>
|
|
<P>
|
|
degrees
|
|
</P>
|
|
<P>
|
|
degree
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="temp_units">
|
|
<L PROPNAME="TEMP_UNITS" PROPID="TEMP_UNITS">
|
|
<P VALSTR="F">Fahrenheit</P>
|
|
<P VALSTR="C">Celsius</P>
|
|
<P VALSTR="C">Centigrade</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="direction">
|
|
<L PROPNAME="DIRECTION" PROPID="DIRECTION">
|
|
<P VALSTR="N">north</P>
|
|
<P VALSTR="E">east</P>
|
|
<P VALSTR="S">south</P>
|
|
<P VALSTR="W">west</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
MEASUREMENTS QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<!--
|
|
number_all
|
|
A number_all is any type of number recognized by ITN and will never be called
|
|
as a toplevel rule
|
|
-->
|
|
<RULE NAME="number_all">
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_INTEGER" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FP_NUMBER" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="GRID_FRACTION" PROPNAME="NUMBER" PROPID="NUMBER"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<RULE NAME="units">
|
|
<L PROPNAME="UNITS" PROPID="UNITS">
|
|
|
|
<P VALSTR="ml">milliliter</P>
|
|
<P VALSTR="ml">milliliters</P>
|
|
<P VALSTR="kg">kilogram</P>
|
|
<P VALSTR="kg">kilograms</P>
|
|
<P VALSTR="kg">kilo</P>
|
|
<P VALSTR="kg">kilo</P>
|
|
<P VALSTR="kg">of a kilogram</P>
|
|
<P VALSTR="km">kilometer</P>
|
|
<P VALSTR="km">kilometers</P>
|
|
<P VALSTR="km">of a kilometer</P>
|
|
<P VALSTR="cm">centimeter</P>
|
|
<P VALSTR="cm">centimeters</P>
|
|
<P VALSTR="cm">of a centimeter</P>
|
|
<P VALSTR="mm">millimeter</P>
|
|
<P VALSTR="mm">millimeters</P>
|
|
<P VALSTR="nm">nanometer</P>
|
|
<P VALSTR="nm">nanometers</P>
|
|
<P VALSTR="mu">micron</P>
|
|
<P VALSTR="mu">microns</P>
|
|
<P VALSTR="tsp.">teaspoon</P>
|
|
<P VALSTR="tsp.">teaspoons</P>
|
|
<P VALSTR="tsp.">of a teaspoon</P>
|
|
<P VALSTR="tbsp.">tablespoon</P>
|
|
<P VALSTR="tbsp.">tablespoons</P>
|
|
<P VALSTR="tbsp.">of a tablespoon</P>
|
|
<P VALSTR="fl. oz.">fluid ounce</P>
|
|
<P VALSTR="fl. oz.">fluid ounces</P>
|
|
<P VALSTR="mg">milligram</P>
|
|
<P VALSTR="mg">milligrams</P>
|
|
<P VALSTR="mph">mile per hour</P>
|
|
<P VALSTR="mph">miles per hour</P>
|
|
<P VALSTR="kph">kilometer per hour</P>
|
|
<P VALSTR="kph">kilometers per hour</P>
|
|
<P VALSTR="ms">millisecond</P>
|
|
<P VALSTR="ms">milliseconds</P>
|
|
|
|
<P VALSTR="K">K.</P>
|
|
<P VALSTR="KB">kilobyte</P>
|
|
<P VALSTR="KB">kilobytes</P>
|
|
<P VALSTR="KB">K.B.</P>
|
|
<P VALSTR="KB">K. byte</P>
|
|
<P VALSTR="KB">K. bytes</P>
|
|
<P VALSTR="MB">megabyte</P>
|
|
<P VALSTR="MB">megabytes</P>
|
|
<P VALSTR="MB">M.B.</P>
|
|
<P VALSTR="MB">meg</P>
|
|
<P VALSTR="MB">megs</P>
|
|
<P VALSTR="GB">gigabyte</P>
|
|
<P VALSTR="GB">gigabytes</P>
|
|
<P VALSTR="GB">G.B.</P>
|
|
<P VALSTR="GB">gig</P>
|
|
<P VALSTR="GB">gigs</P>
|
|
<P VALSTR="TB">terabyte</P>
|
|
<P VALSTR="TB">terabytes</P>
|
|
<P VALSTR="TB">T.B.</P>
|
|
|
|
<P VALSTR="Hz">hertz</P>
|
|
<P VALSTR="MHz">megahertz</P>
|
|
|
|
<P VALSTR="W">watt</P>
|
|
<P VALSTR="W">watts</P>
|
|
<P VALSTR="kW">kilowatt</P>
|
|
<P VALSTR="kW">kilowatts</P>
|
|
<P VALSTR="kWh">kilowatt hour</P>
|
|
<P VALSTR="kWh">kilowatt hours</P>
|
|
|
|
</L>
|
|
</RULE>
|
|
<RULE NAME="commonunits">
|
|
<L PROPNAME="UNITS" PROPID="UNITS">
|
|
|
|
<P VALSTR="yd.">yard</P>
|
|
<P VALSTR="yds.">yards</P>
|
|
<P VALSTR="yd.">of a yard</P>
|
|
<P VALSTR="ft.">foot</P>
|
|
<P VALSTR="ft.">feet</P>
|
|
<P VALSTR="ft.">of a foot</P>
|
|
<P VALSTR="in.">inch</P>
|
|
<P VALSTR="in.">inches</P>
|
|
<P VALSTR="in.">of an inch</P>
|
|
<P VALSTR="m">meter</P>
|
|
<P VALSTR="m">meters</P>
|
|
<P VALSTR="m">of a meter</P>
|
|
<P VALSTR="qt.">quart</P>
|
|
<P VALSTR="qt.">quarts</P>
|
|
<P VALSTR="qt.">of a quart</P>
|
|
<P VALSTR="l">liter</P>
|
|
<P VALSTR="l">liters</P>
|
|
<P VALSTR="l">of a liter</P>
|
|
<P VALSTR="lb.">pound</P>
|
|
<P VALSTR="lbs.">pounds</P>
|
|
<P VALSTR="lb.">of a pound</P>
|
|
<P VALSTR="oz.">ounce</P>
|
|
<P VALSTR="oz.">ounces</P>
|
|
<P VALSTR="oz.">of an ounce</P>
|
|
<P VALSTR="g">gram</P>
|
|
<P VALSTR="g">grams</P>
|
|
<P VALSTR="g">of a gram</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!-- ************************************************************************
|
|
CURRENCY QUANTITIES
|
|
************************************************************************ -->
|
|
|
|
<RULE NAME="currency_type">
|
|
<L PROPNAME="CURRENCY_TYPE" PROPID="CURRENCY_TYPE">
|
|
<P VALSTR="$">dollar</P>
|
|
<P VALSTR="$">dollars</P>
|
|
<P VALSTR="£">pound</P>
|
|
<P VALSTR="£">pounds</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<RULE NAME="currency_small_type">
|
|
<L PROPNAME="CURRENCY_SMALL_TYPE" PROPID="CURRENCY_SMALL_TYPE">
|
|
<P VALSTR="¢">cent</P>
|
|
<P VALSTR="¢">cents</P>
|
|
<P VALSTR="p">penny</P>
|
|
<P VALSTR="p">pence</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
</GRAMMAR>
|