Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

844 lines
73 KiB

<!-- ************************************************************************
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"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="9" VALSTR="9"></P>
<P VAL="9" VALSTR="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"></P>
<P VAL="2000" VALSTR="2"></P>
<P VAL="2000" VALSTR="2"></P>
<P VAL="2000" VALSTR="2"></P>
<P VAL="3000" VALSTR="3"></P>
<P VAL="3000" VALSTR="3"></P>
<P VAL="4000" VALSTR="4"></P>
<P VAL="4000" VALSTR="4"></P>
<P VAL="5000" VALSTR="5"></P>
<P VAL="5000" VALSTR="5"></P>
<P VAL="6000" VALSTR="6"></P>
<P VAL="6000" VALSTR="6"></P>
<P VAL="7000" VALSTR="7"></P>
<P VAL="7000" VALSTR="7"></P>
<P VAL="8000" VALSTR="8"></P>
<P VAL="8000" VALSTR="8"></P>
<P VAL="9000" VALSTR="9"></P>
<P VAL="9000" VALSTR="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"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="9" VALSTR="9"></P>
<P VAL="9" VALSTR="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"></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"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="9" VALSTR="9"></P>
<P VAL="9" VALSTR="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"></P>
<P VAL="0" VALSTR="0"></P>
<P VAL="1" VALSTR="1"></P>
<P VAL="1" VALSTR="1"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="2" VALSTR="2"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="3" VALSTR="3"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="4" VALSTR="4"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="5" VALSTR="5"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="6" VALSTR="6"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="7" VALSTR="7"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="8" VALSTR="8"></P>
<P VAL="9" VALSTR="9"></P>
<P VAL="9" VALSTR="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>