These are the default rules for English.
[Space]
"" "." ""
"" "," ""
"" "/" ""
"" "\\" ""
"" ":" ""
"" ";" ""
"" "%" ""
"" "?" ""
"" "!" ""
"\" " "" ""
"" "\"" " " {E"\""}
"" "\"" "" {O"\""}
"* " "" ""
"" "*" " " {E"*"}
"" "*" "" {O"*"}
.\period "" " " {1}
.\period "" " " {!1}
"?" "" " " {1}
"?" "" " " {!1}
"!" "" " " {1}
"!" "" " " {!1}
"-" "-" ""
"--" "" " "
"" "--" " "
"-A" "" ""
"A" "-" ""
"(" "" ""
"A" ")" ""
"[" "" ""
"A" "]" ""
"{" "" ""
"A" "}" ""
"<" "" ""
"A" ">" ""
"\n" "" ""
"\r" "" ""
"\t" "" ""
[Capital]
.\period
!\exclamation-point
?\question-mark
Mr.
Mrs.
Ms.
Dr.
Mme.
"\n"
"\r"
"\t"
"\"\n"
"\"\r"
"\"\t"
"\"."
"\"?"
"\"!"
[Switch]
1= 1 "Spaces Between Sentences" "Places two spaces between sentences ending with a period, question mark, and exclamation point."
[Rules]
// Start
<Start> = <Integer19>
// Natural Numbers
<Natural> = <Less1000000000000000Not>
<Natural> = <Less1000000000000Not>
<Natural> = <Less1000000000Not>
<Natural> = <Less1000000Not>
<Natural> = <Less1000Not>
<Natural> = <Less100Not>
// Natural Numbers, zero through 19 are written out whole
<Natural19> = <Less1000000000000000Not>
<Natural19> = <Less1000000000000Not>
<Natural19> = <Less1000000000Not>
<Natural19> = <Less1000000Not>
<Natural19> = <Less1000Not>
<Natural19> = <Less100Not19>
// Integer, 0..19 not included
<Integer19> = <Natural19>
<Integer19> = <MinusNegative> "-" <Natural>
// 1..9
<1..9> = one "1"
<1..9> = two "2"
<1..9> = three "3"
<1..9> = four "4"
<1..9> = five "5"
<1..9> = six "6"
<1..9> = seven "7"
<1..9> = eight "8"
<1..9> = nine "9"
// Zero through nine
<0..9> = zero "0"
<0..9> = oh "0"
<0..9> = <1..9>
// 10..19
<10.19> = ten "10"
<10.19> = eleven "11"
<10.19> = twelve "12"
<10.19> = thirteen "13"
<10.19> = fourteen "14"
<10.19> = fifteen "15"
<10.19> = sixteen "16"
<10.19> = seventeen "17"
<10.19> = eighteen "18"
<10.19> = nineteen "19"
// 20..99
<20.99> = twenty "20"
<20.99> = twenty-one "21"
<20.99> = twenty-two "22"
<20.99> = twenty-three "23"
<20.99> = twenty-four "24"
<20.99> = twenty-five "25"
<20.99> = twenty-six "26"
<20.99> = twenty-seven "27"
<20.99> = twenty-eight "28"
<20.99> = twenty-nine "29"
<20.99> = twenty "2" <1..9>
<20.99> = thirty "30"
<20.99> = thirty-one "31"
<20.99> = thirty-two "32"
<20.99> = thirty-three "33"
<20.99> = thirty-four "34"
<20.99> = thirty-five "35"
<20.99> = thirty-six "36"
<20.99> = thirty-seven "37"
<20.99> = thirty-eight "38"
<20.99> = thirty-nine "39"
<20.99> = thirty "3" <1..9>
<20.99> = forty "40"
<20.99> = forty-one "41"
<20.99> = forty-two "42"
<20.99> = forty-three "43"
<20.99> = forty-four "44"
<20.99> = forty-five "45"
<20.99> = forty-six "46"
<20.99> = forty-seven "47"
<20.99> = forty-eight "48"
<20.99> = forty-nine "49"
<20.99> = forty "4" <1..9>
<20.99> = fifty "50"
<20.99> = fifty-one "51"
<20.99> = fifty-two "52"
<20.99> = fifty-three "53"
<20.99> = fifty-four "54"
<20.99> = fifty-five "55"
<20.99> = fifty-six "56"
<20.99> = fifty-seven "57"
<20.99> = fifty-eight "58"
<20.99> = fifty-nine "59"
<20.99> = fifty "5" <1..9>
<20.99> = sixty "60"
<20.99> = sixty-one "61"
<20.99> = sixty-two "62"
<20.99> = sixty-three "63"
<20.99> = sixty-four "64"
<20.99> = sixty-five "65"
<20.99> = sixty-six "66"
<20.99> = sixty-seven "67"
<20.99> = sixty-eight "68"
<20.99> = sixty-nine "69"
<20.99> = sixty "6" <1..9>
<20.99> = seventy "70"
<20.99> = seventy-one "71"
<20.99> = seventy-two "72"
<20.99> = seventy-three "73"
<20.99> = seventy-four "74"
<20.99> = seventy-five "75"
<20.99> = seventy-six "76"
<20.99> = seventy-seven "77"
<20.99> = seventy-eight "78"
<20.99> = seventy-nine "79"
<20.99> = seventy "7" <1..9>
<20.99> = eighty "80"
<20.99> = eighty-one "81"
<20.99> = eighty-two "82"
<20.99> = eighty-three "83"
<20.99> = eighty-four "84"
<20.99> = eighty-five "85"
<20.99> = eighty-six "86"
<20.99> = eighty-seven "87"
<20.99> = eighty-eight "88"
<20.99> = eighty-nine "89"
<20.99> = eighty "8" <1..9>
<20.99> = ninety "90"
<20.99> = ninety-one "91"
<20.99> = ninety-two "92"
<20.99> = ninety-three "93"
<20.99> = ninety-four "94"
<20.99> = ninety-five "95"
<20.99> = ninety-six "96"
<20.99> = ninety-seven "97"
<20.99> = ninety-eight "98"
<20.99> = ninety-nine "99"
<20.99> = ninety "9" <1..9>
// Double digit
<DoubleDigit> = <20.99>
<DoubleDigit> = <10.19>
// Three digit number
<TripleDigit> = hundred "1" <Less100Pad>
<TripleDigit> = <1..9> hundred [opt] and <Less100Pad>
<TripleDigit> = <1..9> hundred "00"
// Less that 100, not padded with zeros
<Less100Not> = <1..9>
<Less100Not> = <DoubleDigit>
<Less100Not> = zero "0"
// Less that 100, not padded with zeros, don't do 0..19
<Less100Not19> = <20.99>
// Less that 100, padded with zeros
<Less100Pad> = "0" <1..9>
<Less100Pad> = <DoubleDigit>
<Less100Pad> = zero "00"
// Less than 1000, not padded with zeros
<Less1000Not> = <TripleDigit>
// Less than 1000, padded with zeros
//<Less1000Pad> = "000"
<Less1000Pad> = "0" <Less100Pad>
<Less1000Pad> = <TripleDigit>
// Less than 1,000,000, not padded with zeros
<Less1000000Not> = <1..9> thousand ",000"
<Less1000000Not> = <1..9> thousand [opt] and "," <Less1000Pad>
<Less1000000Not> = <DoubleDigit> thousand ",000"
<Less1000000Not> = <DoubleDigit> thousand [opt] and "," <Less1000Pad>
<Less1000000Not> = <TripleDigit> thousand ",000"
<Less1000000Not> = <TripleDigit> thousand [opt] and "," <Less1000Pad>
// Less than 1,000,000, padded with zeros
<Less1000000Pad> = "000," <Less1000Pad>
<Less1000000Pad> = thousand [opt] and "001," <Less1000Pad>
<Less1000000Pad> = <Less1000Pad> thousand ",000"
<Less1000000Pad> = <Less1000Pad> thousand [opt] and "," <Less1000Pad>
// Less than 1,000,000,000, not padded with zeros
// Disable cause revamp natural: <Less1000000000Not> = <Less1000000Not>
// "million" by itself is not converted - <Less1000000000Not> = million "1,000,000"
// "million" by itself is not converted - <Less1000000000Not> = million [opt] and "1," <Less1000000Pad>
<Less1000000000Not> = <Less100Not> million ",000,000"
<Less1000000000Not> = <Less100Not> million [opt] and "," <Less1000000Pad>
<Less1000000000Not> = <Less1000Not> million ",000,000"
<Less1000000000Not> = <Less1000Not> million [opt] and "," <Less1000000Pad>
// Less than 1,000,000,000, padded with zeros
<Less1000000000Pad> = "000," <Less1000000Pad>
<Less1000000000Pad> = million [opt] and "001," <Less1000000Pad>
<Less1000000000Pad> = <Less1000Pad> million ",000,000"
<Less1000000000Pad> = <Less1000Pad> million [opt] and "," <Less1000000Pad>
// Less than 1,000,000,000,000, not padded with zeros
// Disable cause revamp natural: <Less1000000000000Not> = <Less1000000000Not>
// "billion" by itself is not converted - <Less1000000000000Not> = billion "1,000,000,000"
// "billion" by itself is not converted - <Less1000000000000Not> = billion [opt] and "1," <Less1000000000Pad>
<Less1000000000000Not> = <Less100Not> billion ",000,000,000"
<Less1000000000000Not> = <Less100Not> billion [opt] and "," <Less1000000000Pad>
<Less1000000000000Not> = <Less1000Not> billion ",000,000,000"
<Less1000000000000Not> = <Less1000Not> billion [opt] and "," <Less1000000000Pad>
// Less than 1,000,000,000,000, padded with zeros
<Less1000000000000Pad> = "000," <Less1000000000Pad>
<Less1000000000000Pad> = billion [opt] and "001," <Less1000000000Pad>
<Less1000000000000Pad> = <Less1000Pad> billion ",000,000,000"
<Less1000000000000Pad> = <Less1000Pad> billion [opt] and "," <Less1000000000Pad>
// Less than 1,000,000,000,000,000, not padded with zeros
// Disable cause revamp natural: <Less1000000000000000Not> = <Less1000000000000Not>
// "trillion" by itself is not converted - <Less1000000000000000Not> = trillion "1,000,000,000,000"
// "trillion" by itself is not converted - <Less1000000000000000Not> = trillion [opt] and "1," <Less1000000000000Pad>
<Less1000000000000000Not> = <Less100Not> trillion ",000,000,000,000"
<Less1000000000000000Not> = <Less100Not> trillion [opt] and "," <Less1000000000000Pad>
<Less1000000000000000Not> = <Less1000Not> trillion ",000,000,000,000"
<Less1000000000000000Not> = <Less1000Not> trillion [opt] and "," <Less1000000000000Pad>
// Less than 1,000,000,000,000,000, padded with zeros
<Less1000000000000000Pad> = "000," <Less1000000000000Pad>
<Less1000000000000000Pad> = trillion [opt] and "001," <Less1000000000000Pad>
<Less1000000000000000Pad> = <Less1000Pad> trillion ",000,000,000,000"
<Less1000000000000000Pad> = <Less1000Pad> trillion [opt] and "," <Less1000000000000Pad>