You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
844 lines
73 KiB
844 lines
73 KiB
<!-- ************************************************************************
|
|
CHS ITN Grammars
|
|
|
|
Microsoft Corporation 2000
|
|
|
|
CHS ITN rules depends on CHS SR dictionary. All the items here should
|
|
be a word in CHS SR dictionary
|
|
|
|
Currently we support:
|
|
Integer
|
|
Decimal
|
|
Percent
|
|
Ratio
|
|
Fraction
|
|
Minus number
|
|
Time
|
|
|
|
************************************************************************* -->
|
|
|
|
<GRAMMAR LANGID="804">
|
|
|
|
<!-- ************************************************************************
|
|
Definations that will appear in header file
|
|
|
|
************************************************************************* -->
|
|
<DEFINE>
|
|
<ID NAME="HUNDREDMILLIONS" VAL="1"/>
|
|
<ID NAME="TENTHOUSANDS" VAL="2"/>
|
|
<ID NAME="TENTHOUSANDS_" VAL="3"/>
|
|
<ID NAME="THOUSANDS" VAL="4"/>
|
|
<ID NAME="HUNDREDS" VAL="5"/>
|
|
<ID NAME="HUNDREDS_" VAL="6"/>
|
|
<ID NAME="ONES" VAL="7"/>
|
|
<ID NAME="INTEGER" VAL="8"/>
|
|
<ID NAME="DECIMAL" VAL="9"/>
|
|
<ID NAME="FRACTION" VAL="10"/>
|
|
<ID NAME="RATIO" VAL="20"/>
|
|
<ID NAME="RATIO1" VAL="21"/>
|
|
<ID NAME="RATIO2" VAL="22"/>
|
|
<ID NAME="PERIOD" VAL="23"/>
|
|
<ID NAME="DIGITS" VAL="24"/>
|
|
<ID NAME="NUMERATOR" VAL="25"/>
|
|
<ID NAME="DENOMINATOR" VAL="26"/>
|
|
<ID NAME="POS_OF_MINUS" VAL="27"/>
|
|
<ID NAME="ONES_THOUSANDS" VAL="28"/>
|
|
|
|
<ID NAME="GRID_NUMBER" VAL="1001"/>
|
|
<ID NAME="GRID_NUMBER_MINUS" VAL="1002"/>
|
|
<ID NAME="GRID_DECIMAL" VAL="1003"/>
|
|
<ID NAME="PERCENT" VAL="1004"/>
|
|
<ID NAME="PERCENT100" VAL="1005"/>
|
|
<ID NAME="TIME" VAL="1006"/>
|
|
<ID NAME="HOUR" VAL="1007"/>
|
|
<ID NAME="MINUTE" VAL="1008"/>
|
|
</DEFINE>
|
|
|
|
<!-- ************************************************************************
|
|
Grid number(positive integers from 0 - 9999,9999,9999(Chs spelling rules) or 999,999,999,999
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="GRID_NUMBER" ID="GRID_NUMBER" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<L>
|
|
<P> <!-- ******************** begining with '亿' section ******************* -->
|
|
<RULEREF NAME="GRID_NUMBER_9999" PROPNAME="HUNDREDMILLIONS" PROPID="HUNDREDMILLIONS"/>
|
|
<P>亿</P>
|
|
<O>
|
|
<L>
|
|
<P> <!-- ******************** has '万' section ******************* -->
|
|
<L>
|
|
<RULEREF NAME="GRID_NUMBER_9999" PROPNAME="TENTHOUSANDS" PROPID="TENTHOUSANDS"/>
|
|
<RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="TENTHOUSANDS" PROPID="TENTHOUSANDS"/>
|
|
</L>
|
|
<P>万</P>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_ONE_DIGIT_THOUSANDS" PROPNAME="ONES_THOUSANDS" PROPID="ONES_THOUSANDS"/> </P>
|
|
<RULEREF NAME="GRID_NUMBER_9990" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
<RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <!-- ******************** does not have '万' section and directly has '个' section ******************* -->
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="DIGITS" PROPID="DIGITS" VAL="0"/>
|
|
<RULEREF NAME="GRID_NUMBER_9999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <!-- ******************** begining with '万' section ******************* -->
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="GRID_NUMBER_9999" PROPNAME="TENTHOUSANDS" PROPID="TENTHOUSANDS"/>
|
|
<P>万</P>
|
|
</P>
|
|
|
|
<P>
|
|
<L PROPNAME="TENTHOUSANDS_" PROPID="TENTHOUSANDS_">
|
|
<P VAL= "1" VALSTR="1">一万</P>
|
|
<P VAL= "2" VALSTR="2">二万</P>
|
|
<P VAL= "2" VALSTR="2">两 万</P>
|
|
<P VAL= "3" VALSTR="3">三万</P>
|
|
<P VAL= "4" VALSTR="4">四万</P>
|
|
<P VAL= "5" VALSTR="5">五万</P>
|
|
<P VAL= "6" VALSTR="6">六万</P>
|
|
<P VAL= "7" VALSTR="7">七万</P>
|
|
<P VAL= "8" VALSTR="8">八万</P>
|
|
<P VAL= "9" VALSTR="9">九万</P>
|
|
<P VAL= "10" VALSTR="10">十万</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_ONE_DIGIT_THOUSANDS" PROPNAME="ONES_THOUSANDS" PROPID="ONES_THOUSANDS"/> </P>
|
|
<RULEREF NAME="GRID_NUMBER_9990" PROPNAME="ONES" PROPID="ONES"/>
|
|
<RULEREF NAME="ZERO_GRID_NUMBER_0999" PROPNAME="ONES" PROPID="ONES"/>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <!-- ******************** begining with '个' section ******************* -->
|
|
<RULEREF NAME="GRID_NUMBER_9999" PROPNAME="ONES" PROPID="ONES"/>
|
|
</P>
|
|
|
|
<P> <!-- ******************** zero itself ******************* -->
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Grid number 9999, integers from [1 - 9999], no leading zero
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="GRID_NUMBER_9999">
|
|
<L>
|
|
<P> <!--- ******************** begining with '千' section *************** -->
|
|
<RULEREF NAME="THOUSANDSFRAG" PROPNAME="THOUSANDS" PROPID="THOUSANDS" VAL="1000"/>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="100"/> </P>
|
|
<P> <!-- ******************** has hundreds frag ******************* -->
|
|
<P><RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/></P>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
<P> <!-- ******************** no hundreds frag ******************* -->
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<L>
|
|
<RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <!--- ******************** begining with '百' section *************** -->
|
|
<RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Grid number 9990, integers from [10 - 9999], no leading zero
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="GRID_NUMBER_9990">
|
|
<L>
|
|
<P> <!--- ******************** begining with '千' section *************** -->
|
|
<RULEREF NAME="THOUSANDSFRAG" PROPNAME="THOUSANDS" PROPID="THOUSANDS" VAL="1000"/>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="100"/> </P>
|
|
<P> <!-- ******************** has hundreds frag ******************* -->
|
|
<P><RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/></P>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
<P> <!-- ******************** no hundreds frag ******************* -->
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<L>
|
|
<RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <!--- ******************** begining with '百' section *************** -->
|
|
<RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
<P> <RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Grid number 0999, positive integers from [1 - 999], with leading zero
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="ZERO_GRID_NUMBER_0999">
|
|
<P> <RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/> </P>
|
|
<L>
|
|
<P>
|
|
<RULEREF NAME="HUNDREDSFRAG" PROPNAME="HUNDREDS" PROPID="HUNDREDS" VAL="100"/>
|
|
<O>
|
|
<L>
|
|
<P> <RULEREF NAME="ONESFRAG_TWO_DIGITS" PROPNAME="ONES" PROPID="ONES" VAL="1"/> </P>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<O>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</O>
|
|
</P>
|
|
<P>
|
|
<RULEREF NAME="ZERODIGITS" PROPNAME="ONES" PROPID="ONES" VAL="0"/>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</O>
|
|
</P>
|
|
|
|
<P>
|
|
<L>
|
|
<RULEREF NAME="ONESFRAG" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
<P>
|
|
<RULEREF NAME="ONESFRAG_ONE_DIGIT" PROPNAME="ONES" PROPID="ONES" VAL="10"/>
|
|
<RULEREF NAME="ONESFRAG_TWO_DIGITS_TRAIL" PROPNAME="ONES" PROPID="ONES" VAL="1"/>
|
|
</P>
|
|
</L>
|
|
</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Thousands frag
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="THOUSANDSFRAG">
|
|
<L PROPNAME="THOUSANDS" PROPID="THOUSANDS">
|
|
<P VAL="1" VALSTR="1">一千</P>
|
|
<P VAL="2" VALSTR="2">二千</P>
|
|
<P VAL="2" VALSTR="2">两 千</P>
|
|
<P VAL="3" VALSTR="3">三千</P>
|
|
<P VAL="4" VALSTR="4">四千</P>
|
|
<P VAL="5" VALSTR="5">五千</P>
|
|
<P VAL="6" VALSTR="6">六千</P>
|
|
<P VAL="7" VALSTR="7">七千</P>
|
|
<P VAL="8" VALSTR="8">八千</P>
|
|
<P VAL="9" VALSTR="9">九千</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Hundreds frag
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="HUNDREDSFRAG">
|
|
<L PROPNAME="HUNDREDS_" PROPID="HUNDREDS_">
|
|
<P VAL="1" VALSTR="1">一百</P>
|
|
<P VAL="2" VALSTR="2">二百</P>
|
|
<P VAL="2" VALSTR="2">两 百</P>
|
|
<P VAL="3" VALSTR="3">三百</P>
|
|
<P VAL="4" VALSTR="4">四百</P>
|
|
<P VAL="5" VALSTR="5">五百</P>
|
|
<P VAL="6" VALSTR="6">六百</P>
|
|
<P VAL="7" VALSTR="7">七百</P>
|
|
<P VAL="8" VALSTR="8">八百</P>
|
|
<P VAL="9" VALSTR="9">九百</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
One digit frag
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="ONESFRAG_ONE_DIGIT">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="1" VALSTR="1">一</P>
|
|
<P VAL="1" VALSTR="1">1</P>
|
|
<P VAL="2" VALSTR="2">二</P>
|
|
<P VAL="2" VALSTR="2">两</P>
|
|
<P VAL="2" VALSTR="2">2</P>
|
|
<P VAL="3" VALSTR="3">三</P>
|
|
<P VAL="3" VALSTR="3">3</P>
|
|
<P VAL="4" VALSTR="4">四</P>
|
|
<P VAL="4" VALSTR="4">4</P>
|
|
<P VAL="5" VALSTR="5">五</P>
|
|
<P VAL="5" VALSTR="5">5</P>
|
|
<P VAL="6" VALSTR="6">六</P>
|
|
<P VAL="6" VALSTR="6">6</P>
|
|
<P VAL="7" VALSTR="7">七</P>
|
|
<P VAL="7" VALSTR="7">7</P>
|
|
<P VAL="8" VALSTR="8">八</P>
|
|
<P VAL="8" VALSTR="8">8</P>
|
|
<P VAL="9" VALSTR="9">九</P>
|
|
<P VAL="9" VALSTR="9">9</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
One digit frag for thousands
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="ONESFRAG_ONE_DIGIT_THOUSANDS">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="1000" VALSTR="1">一</P>
|
|
<P VAL="1000" VALSTR="1">1</P>
|
|
<P VAL="2000" VALSTR="2">二</P>
|
|
<P VAL="2000" VALSTR="2">两</P>
|
|
<P VAL="2000" VALSTR="2">2</P>
|
|
<P VAL="3000" VALSTR="3">三</P>
|
|
<P VAL="3000" VALSTR="3">3</P>
|
|
<P VAL="4000" VALSTR="4">四</P>
|
|
<P VAL="4000" VALSTR="4">4</P>
|
|
<P VAL="5000" VALSTR="5">五</P>
|
|
<P VAL="5000" VALSTR="5">5</P>
|
|
<P VAL="6000" VALSTR="6">六</P>
|
|
<P VAL="6000" VALSTR="6">6</P>
|
|
<P VAL="7000" VALSTR="7">七</P>
|
|
<P VAL="7000" VALSTR="7">7</P>
|
|
<P VAL="8000" VALSTR="8">八</P>
|
|
<P VAL="8000" VALSTR="8">8</P>
|
|
<P VAL="9000" VALSTR="9">九</P>
|
|
<P VAL="9000" VALSTR="9">9</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Two digits frag
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="ONESFRAG_TWO_DIGITS">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="10" VALSTR="10">一十</P>
|
|
<P VAL="11" VALSTR="11">十一</P>
|
|
<P VAL="11" VALSTR="11">一十一</P>
|
|
<P VAL="12" VALSTR="12">十二</P>
|
|
<P VAL="12" VALSTR="12">一十二</P>
|
|
<P VAL="13" VALSTR="13">十三</P>
|
|
<P VAL="13" VALSTR="13">一十三</P>
|
|
<P VAL="14" VALSTR="14">十四</P>
|
|
<P VAL="14" VALSTR="14">一十四</P>
|
|
<P VAL="15" VALSTR="15">十五</P>
|
|
<P VAL="15" VALSTR="15">一十五</P>
|
|
<P VAL="16" VALSTR="16">十六</P>
|
|
<P VAL="16" VALSTR="16">一十六</P>
|
|
<P VAL="17" VALSTR="17">十七</P>
|
|
<P VAL="17" VALSTR="17">一十七</P>
|
|
<P VAL="18" VALSTR="18">十八</P>
|
|
<P VAL="18" VALSTR="18">一十八</P>
|
|
<P VAL="19" VALSTR="19">十九</P>
|
|
<P VAL="19" VALSTR="19">一十九</P>
|
|
|
|
<P VAL="20" VALSTR="20">二十</P>
|
|
<P VAL="21" VALSTR="21">二十一</P>
|
|
<P VAL="22" VALSTR="22">二十二</P>
|
|
<P VAL="23" VALSTR="23">二十三</P>
|
|
<P VAL="24" VALSTR="24">二十四</P>
|
|
<P VAL="25" VALSTR="25">二十五</P>
|
|
<P VAL="26" VALSTR="26">二十六</P>
|
|
<P VAL="27" VALSTR="27">二十七</P>
|
|
<P VAL="28" VALSTR="28">二十八</P>
|
|
<P VAL="29" VALSTR="29">二十九</P>
|
|
|
|
<P VAL="30" VALSTR="30">三十</P>
|
|
<P VAL="31" VALSTR="31">三十一</P>
|
|
<P VAL="32" VALSTR="32">三十二</P>
|
|
<P VAL="33" VALSTR="33">三十三</P>
|
|
<P VAL="34" VALSTR="34">三十四</P>
|
|
<P VAL="35" VALSTR="35">三十五</P>
|
|
<P VAL="36" VALSTR="36">三十六</P>
|
|
<P VAL="37" VALSTR="37">三十七</P>
|
|
<P VAL="38" VALSTR="38">三十八</P>
|
|
<P VAL="39" VALSTR="39">三十九</P>
|
|
|
|
<P VAL="40" VALSTR="40">四十</P>
|
|
<P VAL="41" VALSTR="41">四十一</P>
|
|
<P VAL="42" VALSTR="42">四十二</P>
|
|
<P VAL="43" VALSTR="43">四十三</P>
|
|
<P VAL="44" VALSTR="44">四十四</P>
|
|
<P VAL="45" VALSTR="45">四十五</P>
|
|
<P VAL="46" VALSTR="46">四十六</P>
|
|
<P VAL="47" VALSTR="47">四十七</P>
|
|
<P VAL="48" VALSTR="48">四十八</P>
|
|
<P VAL="49" VALSTR="49">四十九</P>
|
|
|
|
<P VAL="50" VALSTR="50">五十</P>
|
|
<P VAL="51" VALSTR="51">五十一</P>
|
|
<P VAL="52" VALSTR="52">五十二</P>
|
|
<P VAL="53" VALSTR="53">五十三</P>
|
|
<P VAL="54" VALSTR="54">五十四</P>
|
|
<P VAL="55" VALSTR="55">五十五</P>
|
|
<P VAL="56" VALSTR="56">五十六</P>
|
|
<P VAL="57" VALSTR="57">五十七</P>
|
|
<P VAL="58" VALSTR="58">五十八</P>
|
|
<P VAL="59" VALSTR="59">五十九</P>
|
|
|
|
<P VAL="60" VALSTR="60">六十</P>
|
|
<P VAL="61" VALSTR="61">六十一</P>
|
|
<P VAL="62" VALSTR="62">六十二</P>
|
|
<P VAL="63" VALSTR="63">六十三</P>
|
|
<P VAL="64" VALSTR="64">六十四</P>
|
|
<P VAL="65" VALSTR="65">六十五</P>
|
|
<P VAL="66" VALSTR="66">六十六</P>
|
|
<P VAL="67" VALSTR="67">六十七</P>
|
|
<P VAL="68" VALSTR="68">六十八</P>
|
|
<P VAL="69" VALSTR="69">六十九</P>
|
|
|
|
<P VAL="70" VALSTR="70">七十</P>
|
|
<P VAL="71" VALSTR="71">七十一</P>
|
|
<P VAL="72" VALSTR="72">七十二</P>
|
|
<P VAL="73" VALSTR="73">七十三</P>
|
|
<P VAL="74" VALSTR="74">七十四</P>
|
|
<P VAL="75" VALSTR="75">七十五</P>
|
|
<P VAL="76" VALSTR="76">七十六</P>
|
|
<P VAL="77" VALSTR="77">七十七</P>
|
|
<P VAL="78" VALSTR="78">七十八</P>
|
|
<P VAL="79" VALSTR="79">七十九</P>
|
|
|
|
<P VAL="80" VALSTR="80">八十</P>
|
|
<P VAL="81" VALSTR="81">八十一</P>
|
|
<P VAL="82" VALSTR="82">八十二</P>
|
|
<P VAL="83" VALSTR="83">八十三</P>
|
|
<P VAL="84" VALSTR="84">八十四</P>
|
|
<P VAL="85" VALSTR="85">八十五</P>
|
|
<P VAL="86" VALSTR="86">八十六</P>
|
|
<P VAL="87" VALSTR="87">八十七</P>
|
|
<P VAL="88" VALSTR="88">八十八</P>
|
|
<P VAL="89" VALSTR="89">八十九</P>
|
|
|
|
<P VAL="90" VALSTR="90">九十</P>
|
|
<P VAL="91" VALSTR="91">九十一</P>
|
|
<P VAL="92" VALSTR="92">九十二</P>
|
|
<P VAL="93" VALSTR="93">九十三</P>
|
|
<P VAL="94" VALSTR="94">九十四</P>
|
|
<P VAL="95" VALSTR="95">九十五</P>
|
|
<P VAL="96" VALSTR="96">九十六</P>
|
|
<P VAL="97" VALSTR="97">九十七</P>
|
|
<P VAL="98" VALSTR="98">九十八</P>
|
|
<P VAL="99" VALSTR="99">九十九</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Including the above two tables and '十'
|
|
|
|
************************************************************************ -->
|
|
<RULE NAME="ONESFRAG">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="1" VALSTR="1">一</P>
|
|
<P VAL="1" VALSTR="1">1</P>
|
|
<P VAL="2" VALSTR="2">二</P>
|
|
<P VAL="2" VALSTR="2">两</P>
|
|
<P VAL="2" VALSTR="2">2</P>
|
|
<P VAL="3" VALSTR="3">三</P>
|
|
<P VAL="3" VALSTR="3">3</P>
|
|
<P VAL="4" VALSTR="4">四</P>
|
|
<P VAL="4" VALSTR="4">4</P>
|
|
<P VAL="5" VALSTR="5">五</P>
|
|
<P VAL="5" VALSTR="5">5</P>
|
|
<P VAL="6" VALSTR="6">六</P>
|
|
<P VAL="6" VALSTR="6">6</P>
|
|
<P VAL="7" VALSTR="7">七</P>
|
|
<P VAL="7" VALSTR="7">7</P>
|
|
<P VAL="8" VALSTR="8">八</P>
|
|
<P VAL="8" VALSTR="8">8</P>
|
|
<P VAL="9" VALSTR="9">九</P>
|
|
<P VAL="9" VALSTR="9">9</P>
|
|
|
|
<P VAL="10" VALSTR="10">十</P>
|
|
<P VAL="10" VALSTR="10">一十</P>
|
|
<P VAL="11" VALSTR="11">十一</P>
|
|
<P VAL="11" VALSTR="11">一十一</P>
|
|
<P VAL="12" VALSTR="12">十二</P>
|
|
<P VAL="12" VALSTR="12">一十二</P>
|
|
<P VAL="13" VALSTR="13">十三</P>
|
|
<P VAL="13" VALSTR="13">一十三</P>
|
|
<P VAL="14" VALSTR="14">十四</P>
|
|
<P VAL="14" VALSTR="14">一十四</P>
|
|
<P VAL="15" VALSTR="15">十五</P>
|
|
<P VAL="15" VALSTR="15">一十五</P>
|
|
<P VAL="16" VALSTR="16">十六</P>
|
|
<P VAL="16" VALSTR="16">一十六</P>
|
|
<P VAL="17" VALSTR="17">十七</P>
|
|
<P VAL="17" VALSTR="17">一十七</P>
|
|
<P VAL="18" VALSTR="18">十八</P>
|
|
<P VAL="18" VALSTR="18">一十八</P>
|
|
<P VAL="19" VALSTR="19">十九</P>
|
|
<P VAL="19" VALSTR="19">一十九</P>
|
|
|
|
<P VAL="20" VALSTR="20">二十</P>
|
|
<P VAL="21" VALSTR="21">二十一</P>
|
|
<P VAL="22" VALSTR="22">二十二</P>
|
|
<P VAL="23" VALSTR="23">二十三</P>
|
|
<P VAL="24" VALSTR="24">二十四</P>
|
|
<P VAL="25" VALSTR="25">二十五</P>
|
|
<P VAL="26" VALSTR="26">二十六</P>
|
|
<P VAL="27" VALSTR="27">二十七</P>
|
|
<P VAL="28" VALSTR="28">二十八</P>
|
|
<P VAL="29" VALSTR="29">二十九</P>
|
|
|
|
<P VAL="30" VALSTR="30">三十</P>
|
|
<P VAL="31" VALSTR="31">三十一</P>
|
|
<P VAL="32" VALSTR="32">三十二</P>
|
|
<P VAL="33" VALSTR="33">三十三</P>
|
|
<P VAL="34" VALSTR="34">三十四</P>
|
|
<P VAL="35" VALSTR="35">三十五</P>
|
|
<P VAL="36" VALSTR="36">三十六</P>
|
|
<P VAL="37" VALSTR="37">三十七</P>
|
|
<P VAL="38" VALSTR="38">三十八</P>
|
|
<P VAL="39" VALSTR="39">三十九</P>
|
|
|
|
<P VAL="40" VALSTR="40">四十</P>
|
|
<P VAL="41" VALSTR="41">四十一</P>
|
|
<P VAL="42" VALSTR="42">四十二</P>
|
|
<P VAL="43" VALSTR="43">四十三</P>
|
|
<P VAL="44" VALSTR="44">四十四</P>
|
|
<P VAL="45" VALSTR="45">四十五</P>
|
|
<P VAL="46" VALSTR="46">四十六</P>
|
|
<P VAL="47" VALSTR="47">四十七</P>
|
|
<P VAL="48" VALSTR="48">四十八</P>
|
|
<P VAL="49" VALSTR="49">四十九</P>
|
|
|
|
<P VAL="50" VALSTR="50">五十</P>
|
|
<P VAL="51" VALSTR="51">五十一</P>
|
|
<P VAL="52" VALSTR="52">五十二</P>
|
|
<P VAL="53" VALSTR="53">五十三</P>
|
|
<P VAL="54" VALSTR="54">五十四</P>
|
|
<P VAL="55" VALSTR="55">五十五</P>
|
|
<P VAL="56" VALSTR="56">五十六</P>
|
|
<P VAL="57" VALSTR="57">五十七</P>
|
|
<P VAL="58" VALSTR="58">五十八</P>
|
|
<P VAL="59" VALSTR="59">五十九</P>
|
|
|
|
<P VAL="60" VALSTR="60">六十</P>
|
|
<P VAL="61" VALSTR="61">六十一</P>
|
|
<P VAL="62" VALSTR="62">六十二</P>
|
|
<P VAL="63" VALSTR="63">六十三</P>
|
|
<P VAL="64" VALSTR="64">六十四</P>
|
|
<P VAL="65" VALSTR="65">六十五</P>
|
|
<P VAL="66" VALSTR="66">六十六</P>
|
|
<P VAL="67" VALSTR="67">六十七</P>
|
|
<P VAL="68" VALSTR="68">六十八</P>
|
|
<P VAL="69" VALSTR="69">六十九</P>
|
|
|
|
<P VAL="70" VALSTR="70">七十</P>
|
|
<P VAL="71" VALSTR="71">七十一</P>
|
|
<P VAL="72" VALSTR="72">七十二</P>
|
|
<P VAL="73" VALSTR="73">七十三</P>
|
|
<P VAL="74" VALSTR="74">七十四</P>
|
|
<P VAL="75" VALSTR="75">七十五</P>
|
|
<P VAL="76" VALSTR="76">七十六</P>
|
|
<P VAL="77" VALSTR="77">七十七</P>
|
|
<P VAL="78" VALSTR="78">七十八</P>
|
|
<P VAL="79" VALSTR="79">七十九</P>
|
|
|
|
<P VAL="80" VALSTR="80">八十</P>
|
|
<P VAL="81" VALSTR="81">八十一</P>
|
|
<P VAL="82" VALSTR="82">八十二</P>
|
|
<P VAL="83" VALSTR="83">八十三</P>
|
|
<P VAL="84" VALSTR="84">八十四</P>
|
|
<P VAL="85" VALSTR="85">八十五</P>
|
|
<P VAL="86" VALSTR="86">八十六</P>
|
|
<P VAL="87" VALSTR="87">八十七</P>
|
|
<P VAL="88" VALSTR="88">八十八</P>
|
|
<P VAL="89" VALSTR="89">八十九</P>
|
|
|
|
<P VAL="90" VALSTR="90">九十</P>
|
|
<P VAL="91" VALSTR="91">九十一</P>
|
|
<P VAL="92" VALSTR="92">九十二</P>
|
|
<P VAL="93" VALSTR="93">九十三</P>
|
|
<P VAL="94" VALSTR="94">九十四</P>
|
|
<P VAL="95" VALSTR="95">九十五</P>
|
|
<P VAL="96" VALSTR="96">九十六</P>
|
|
<P VAL="97" VALSTR="97">九十七</P>
|
|
<P VAL="98" VALSTR="98">九十八</P>
|
|
<P VAL="99" VALSTR="99">九十九</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
two digits from 11 to 19, which only have the value 1 to 9
|
|
to deal with "三百 四 十五", or "二百 一 十", due to the result from engine
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="ONESFRAG_TWO_DIGITS_TRAIL">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="0" VALSTR="11">十</P>
|
|
<P VAL="1" VALSTR="11">十一</P>
|
|
<P VAL="2" VALSTR="12">十二</P>
|
|
<P VAL="3" VALSTR="13">十三</P>
|
|
<P VAL="4" VALSTR="14">十四</P>
|
|
<P VAL="5" VALSTR="15">十五</P>
|
|
<P VAL="6" VALSTR="16">十六</P>
|
|
<P VAL="7" VALSTR="17">十七</P>
|
|
<P VAL="8" VALSTR="18">十八</P>
|
|
<P VAL="9" VALSTR="19">十九</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
|
|
<!-- ************************************************************************
|
|
digit 0
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="ZERODIGITS">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="0" VALSTR="0">零</P>
|
|
<P VAL="0" VALSTR="0">0</P>
|
|
<P VAL="0" VALSTR="0">○</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
digits 1, 2, 3, 4, 5, 6, 7, 8, 9
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="NONEZERODIGITS">
|
|
<L PROPNAME="ONES" PROPID="ONES">
|
|
<P VAL="1" VALSTR="1">一</P>
|
|
<P VAL="1" VALSTR="1">1</P>
|
|
<P VAL="2" VALSTR="2">二</P>
|
|
<P VAL="2" VALSTR="2">两</P>
|
|
<P VAL="2" VALSTR="2">2</P>
|
|
<P VAL="3" VALSTR="3">三</P>
|
|
<P VAL="3" VALSTR="3">3</P>
|
|
<P VAL="4" VALSTR="4">四</P>
|
|
<P VAL="4" VALSTR="4">4</P>
|
|
<P VAL="5" VALSTR="5">五</P>
|
|
<P VAL="5" VALSTR="5">5</P>
|
|
<P VAL="6" VALSTR="6">六</P>
|
|
<P VAL="6" VALSTR="6">6</P>
|
|
<P VAL="7" VALSTR="7">七</P>
|
|
<P VAL="7" VALSTR="7">7</P>
|
|
<P VAL="8" VALSTR="8">八</P>
|
|
<P VAL="8" VALSTR="8">8</P>
|
|
<P VAL="9" VALSTR="9">九</P>
|
|
<P VAL="9" VALSTR="9">9</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
All digits
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="DIGITS">
|
|
<L PROPNAME="DIGITS" PROPID="DIGITS">
|
|
<P VAL="0" VALSTR="0">零</P>
|
|
<P VAL="0" VALSTR="0">0</P>
|
|
<P VAL="0" VALSTR="0">○</P>
|
|
<P VAL="1" VALSTR="1">一</P>
|
|
<P VAL="1" VALSTR="1">1</P>
|
|
<P VAL="2" VALSTR="2">二</P>
|
|
<P VAL="2" VALSTR="2">两</P>
|
|
<P VAL="2" VALSTR="2">2</P>
|
|
<P VAL="3" VALSTR="3">三</P>
|
|
<P VAL="3" VALSTR="3">3</P>
|
|
<P VAL="4" VALSTR="4">四</P>
|
|
<P VAL="4" VALSTR="4">4</P>
|
|
<P VAL="5" VALSTR="5">五</P>
|
|
<P VAL="5" VALSTR="5">5</P>
|
|
<P VAL="6" VALSTR="6">六</P>
|
|
<P VAL="6" VALSTR="6">6</P>
|
|
<P VAL="7" VALSTR="7">七</P>
|
|
<P VAL="7" VALSTR="7">7</P>
|
|
<P VAL="8" VALSTR="8">八</P>
|
|
<P VAL="8" VALSTR="8">8</P>
|
|
<P VAL="9" VALSTR="9">九</P>
|
|
<P VAL="9" VALSTR="9">9</P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
Decimal
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="GRID_DECIMAL" ID="GRID_DECIMAL" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="INTEGER" PROPID="INTEGER"/> </P>
|
|
<P PROPNAME="PERIOD" PROPID="PERIOD">
|
|
<L>
|
|
<P>点</P>
|
|
<P>.</P>
|
|
</L>
|
|
</P>
|
|
<P MIN="1" MAX="20"> <RULEREF NAME="DIGITS"/> </P>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
percentage
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="PERCENT" ID="PERCENT" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<P>百分之</P>
|
|
<L>
|
|
<P> <RULEREF NAME="GRID_DECIMAL" PROPNAME="DECIMAL" PROPID="DECIMAL"/> </P>
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="INTEGER" PROPID="INTEGER"/> </P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
100%, since it is a word in our SR lexicon
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="PERCENT100" ID="PERCENT100" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<P>百分之百</P>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
ratio
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="RATIO" ID="RATIO" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<L>
|
|
<P> <RULEREF NAME="GRID_DECIMAL" PROPNAME="RATIO1" PROPID="RATIO1"/> </P>
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="RATIO1" PROPID="RATIO1"/> </P>
|
|
</L>
|
|
<L>
|
|
<P>比</P>
|
|
<P>/</P>
|
|
</L>
|
|
<L>
|
|
<P> <RULEREF NAME="GRID_DECIMAL" PROPNAME="RATIO2" PROPID="RATIO2"/> </P>
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="RATIO2" PROPID="RATIO2"/> </P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
fraction
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="FRACTION" ID="FRACTION" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="DENOMINATOR" PROPID="DENOMINATOR"/> </P>
|
|
<P>分之</P>
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="NUMERATOR" PROPID="NUMERATOR"/> </P>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
minus
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="GRID_NUMBER_MINUS" ID="GRID_NUMBER_MINUS" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<P>负</P>
|
|
<L>
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="POS_OF_MINUS" PROPID="POS_OF_MINUS"/> </P>
|
|
<P> <RULEREF NAME="GRID_DECIMAL" PROPNAME="POS_OF_MINUS" PROPID="POS_OF_MINUS"/> </P>
|
|
<P> <RULEREF NAME="FRACTION" PROPNAME="POS_OF_MINUS" PROPID="POS_OF_MINUS"/> </P>
|
|
<P> <RULEREF NAME="PERCENT" PROPNAME="POS_OF_MINUS" PROPID="POS_OF_MINUS"/> </P>
|
|
</L>
|
|
</RULE>
|
|
|
|
<!-- ************************************************************************
|
|
time
|
|
|
|
************************************************************************* -->
|
|
<RULE NAME="TIME" ID="TIME" INTERPRETER="1" TOPLEVEL="ACTIVE" EXPORT="1">
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="INTEGER" PROPID="HOUR"/> </P>
|
|
<P PROPNAME="HOUR" PROPID="HOUR">
|
|
<L>
|
|
<P>时</P>
|
|
<P>点</P>
|
|
<P>.</P>
|
|
</L>
|
|
</P>
|
|
<P> <RULEREF NAME="GRID_NUMBER" PROPNAME="INTEGER" PROPID="MINUTE"/> </P>
|
|
<P>分</P>
|
|
</RULE>
|
|
|
|
</GRAMMAR>
|