Default Rules

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>