UNPKG

voice-recognition

Version:
500 lines (475 loc) 12.9 kB
<?xml version="1.0" encoding="UTF-8" ?> <grammar version="1.0" xml:lang="en-US" xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0" root="Main"> <rule id="Main"> <one-of> <item> I am <ruleref uri="#Cardinal_0_to_100"/> years old <tag> out.ages = rules.latest(); </tag> </item> </one-of> </rule> <!-- Cardinal._value: integer [0...1,000,000] --> <rule id="Cardinal" scope="public"> <example> one </example> <example> nine thousand </example> <example> four hundred and fifty six thousand three hundred and sixty two </example> <one-of> <item> <ruleref uri="#Cardinal_0" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_1_to_999" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_1000_to_999999" /> <tag> out = rules.latest(); </tag> </item> <item> <item repeat="0-1"> <one-of> <item> a </item> <item> one </item> </one-of> </item> million <tag> out._value = 1000000;</tag> </item> </one-of> </rule> <!-- Cardinal_0._value: integer [0] --> <rule id="Cardinal_0" scope="public"> <example> zero </example> <one-of> <item>zero</item> <item>oh</item> </one-of> <tag> out._value = 0; </tag> </rule> <!-- Cardinal_0_to_9._value: integer [0...9] --> <rule id="Cardinal_0_to_9" scope="public"> <example> one </example> <example> two </example> <example> five </example> <example> nine </example> <one-of> <item> <ruleref uri="#Cardinal_0" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_1_to_9" /> <tag> out = rules.latest(); </tag> </item> </one-of> </rule> <!-- Cardinal_0_to_10._value: integer [0...10] --> <rule id="Cardinal_0_to_10" scope="public"> <example> one </example> <example> two </example> <example> five </example> <example> ten </example> <one-of> <item> <ruleref uri="#Cardinal_0_to_9" /> <tag> out = rules.latest(); </tag> </item> <item> ten <tag> out._value = 10; </tag> </item> </one-of> </rule> <!-- Cardinal_0_to_100._value: integer [0...100] --> <rule id="Cardinal_0_to_100" scope="public"> <example> one </example> <example> twenty three </example> <example> ninety five </example> <example> one hundred </example> <one-of> <item> <ruleref uri="#Cardinal_0" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_1_to_99" /> <tag> out = rules.latest(); </tag> </item> <item> <item repeat="0-1"> <one-of> <item> a </item> <item> one </item> </one-of> </item> hundred <tag> out._value = 100; </tag> </item> </one-of> </rule> <!-- Cardinal_0_to_1000._value: integer [0...1000] --> <rule id="Cardinal_0_to_1000" scope="public"> <example> one </example> <example> twenty three </example> <example> two hundred and thirty </example> <example> one thousand </example> <one-of> <item> <ruleref uri="#Cardinal_0" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_1_to_999" /> <tag> out = rules.latest(); </tag> </item> <item> <item repeat="0-1"> <one-of> <item> a </item> <item> one </item> </one-of> </item> thousand <tag> out._value = 1000; </tag> </item> </one-of> </rule> <!-- Cardinal_0_to_10000._value: integer [0...10000] --> <rule id="Cardinal_0_to_10000" scope="public"> <example> one </example> <example> twenty three </example> <example> two hundred and thirty </example> <example> ten thousand </example> <one-of> <item> <ruleref uri="#Cardinal_0" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_1_to_9999" /> <tag> out = rules.latest(); </tag> </item> <item> ten thousand <tag> out._value = 10000; </tag> </item> </one-of> </rule> <!-- Cardinal_1_to_9._value: integer [1...9] --> <rule id="Cardinal_1_to_9" scope="public"> <example> one </example> <example> two </example> <example> five </example> <example> nine </example> <one-of> <item> one <tag> out._value = 1; </tag> </item> <item> two <tag> out._value = 2; </tag> </item> <item> three <tag> out._value = 3; </tag> </item> <item> four <tag> out._value = 4; </tag> </item> <item> five <tag> out._value = 5; </tag> </item> <item> six <tag> out._value = 6; </tag> </item> <item> seven <tag> out._value = 7; </tag> </item> <item> eight <tag> out._value = 8; </tag> </item> <item> nine <tag> out._value = 9; </tag> </item> </one-of> </rule> <!-- Cardinal_1_to_99._value: integer [1...99] --> <rule id="Cardinal_1_to_99" scope="public"> <example> one </example> <example> thirteen </example> <example> fifty nine </example> <one-of> <item> <ruleref uri="#Cardinal_1_to_9" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_10_to_19" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_20_to_99" /> <tag> out = rules.latest(); </tag> </item> </one-of> </rule> <!-- Cardinal_1_to_999._value: integer [1...999] --> <rule id="Cardinal_1_to_999" scope="public"> <example> one </example> <example> thirteen </example> <example> fifty nine </example> <example> eight hundred sixty seven </example> <one-of> <item> <ruleref uri="#Cardinal_1_to_99" /> <tag> out = rules.latest(); </tag> </item> <item> <ruleref uri="#Cardinal_100_to_999" /> <tag> out = rules.latest(); </tag> </item> </one-of> </rule> <!-- Cardinal_1_to_9999._value: integer [1...9999] --> <rule id="Cardinal_1_to_9999" scope="public"> <example> one </example> <example> thirteen </example> <example> fifty nine </example> <example> eight hundred sixty seven </example> <example> two thousand eight hundred sixty seven </example> <tag> out._value = 1; </tag> <one-of> <item> <ruleref uri="#Cardinal_1_to_999" /> <tag> out = rules.latest(); </tag> </item> <item> <item repeat="0-1"> <one-of> <item> a <tag> out._value = 1; </tag> </item> <item> <ruleref uri="#Cardinal_1_to_9" /> <tag> out = rules.latest(); </tag> </item> </one-of> </item> thousand <tag> out._value = out._value * 1000; </tag> <item repeat="0-1"> <item repeat="0-1"> and </item> <ruleref uri="#Cardinal_1_to_999" /> <tag> out._value = out._value + rules.latest()._value; </tag> </item> </item> </one-of> </rule> <!-- Cardinal_2_to_9._value: integer [2...9] --> <rule id="Cardinal_2_to_9" scope="public"> <example> two </example> <example> five </example> <example> nine </example> <one-of> <item> two <tag> out._value = 2; </tag> </item> <item> three <tag> out._value = 3; </tag> </item> <item> four <tag> out._value = 4; </tag> </item> <item> five <tag> out._value = 5; </tag> </item> <item> six <tag> out._value = 6; </tag> </item> <item> seven <tag> out._value = 7; </tag> </item> <item> eight <tag> out._value = 8; </tag> </item> <item> nine <tag> out._value = 9; </tag> </item> </one-of> </rule> <!-- Cardinal_10_to_19._value: integer [10...19] --> <rule id="Cardinal_10_to_19" scope="public"> <example> ten </example> <example> eleven </example> <example> nineteen </example> <one-of> <item> ten <tag> out._value = 10; </tag> </item> <item> eleven <tag> out._value = 11; </tag> </item> <item> twelve <tag> out._value = 12; </tag> </item> <item> thirteen <tag> out._value = 13; </tag> </item> <item> fourteen <tag> out._value = 14; </tag> </item> <item> fifteen <tag> out._value = 15; </tag> </item> <item> sixteen <tag> out._value = 16; </tag> </item> <item> seventeen <tag> out._value = 17; </tag> </item> <item> eighteen <tag> out._value = 18; </tag> </item> <item> nineteen <tag> out._value = 19; </tag> </item> </one-of> </rule> <!-- Cardinal_10_to_99._value: integer [10...99] --> <rule id="Cardinal_10_to_99" scope="public"> <example> twelve </example> <example> seventy nine </example> <one-of> <item> <ruleref uri="#Cardinal_10_to_19" /> </item> <item> <ruleref uri="#Cardinal_20_to_99" /> </item> </one-of> <tag> out._value = rules.latest()._value; </tag> </rule> <!-- Cardinal_20_to_29._value: integer [20...29] --> <rule id="Cardinal_20_to_29" scope="public"> <example> twenty </example> <example> twenty nine </example> twenty <tag> out._value = 20; </tag> <item repeat="0-1"> <one-of> <item> one <tag> out._value = 21; </tag> </item> <item> two <tag> out._value = 22; </tag> </item> <item> three <tag> out._value = 23; </tag> </item> <item> four <tag> out._value = 24; </tag> </item> <item> five <tag> out._value = 25; </tag> </item> <item> six <tag> out._value = 26; </tag> </item> <item> seven <tag> out._value = 27; </tag> </item> <item> eight <tag> out._value = 28; </tag> </item> <item> nine <tag> out._value = 29; </tag> </item> </one-of> </item> </rule> <!-- Cardinal_20_to_99._value: integer [20...99] --> <rule id="Cardinal_20_to_99" scope="public"> <example> twenty one </example> <example> fifty seven </example> <example> ninety </example> <one-of> <item> twenty <tag> out._value = 20; </tag> </item> <item> thirty <tag> out._value = 30; </tag> </item> <item> forty <tag> out._value = 40; </tag> </item> <item> fifty <tag> out._value = 50; </tag> </item> <item> sixty <tag> out._value = 60; </tag> </item> <item> seventy <tag> out._value = 70; </tag> </item> <item> eighty <tag> out._value = 80; </tag> </item> <item> ninety <tag> out._value = 90; </tag> </item> </one-of> <item repeat="0-1"> <ruleref uri="#Cardinal_1_to_9" /> <tag> out._value = out._value + rules.latest()._value </tag> </item> </rule> <!-- Cardinal_100_to_999._value: integer [100...999] --> <rule id="Cardinal_100_to_999" scope="public"> <example> one hundred fifty seven </example> <example> eight hundred and thirty nine </example> <example> nine hundred </example> <tag> out._value = 1; </tag> <item repeat="0-1"> <one-of> <item> a <tag> out._value = 1; </tag> </item> <item> <ruleref uri="#Cardinal_1_to_9" /> <tag> out = rules.latest(); </tag> </item> </one-of> </item> hundred <tag> out._value = out._value * 100; </tag> <item repeat="0-1"> <item repeat="0-1"> and </item> <ruleref uri="#Cardinal_1_to_99" /> <tag> out._value = out._value + rules.latest()._value; </tag> </item> </rule> <!-- Cardinal_1000_to_999999._value: integer [1000...999999] --> <rule id="Cardinal_1000_to_999999" scope="public"> <example> one hundred fifty seven thousand three hundred and twenty seven</example> <example> eight hundred and thirty nine thousand </example> <example> ten thousand and fifty </example> <tag> out._value = 1; </tag> <item repeat="0-1"> <one-of> <item> a <tag> out._value = 1; </tag> </item> <item> <ruleref uri="#Cardinal_1_to_999" /> <tag> out = rules.latest(); </tag> </item> </one-of> </item> thousand <tag> out._value = out._value * 1000; </tag> <item repeat="0-1"> <item repeat="0-1"> and </item> <ruleref uri="#Cardinal_1_to_999" /> <tag> out._value = out._value + rules.latest()._value; </tag> </item> </rule> </grammar>