DOM_ORD [ VLIB_DAY_OF_MONTH_ORDINAL:z {< choice $z>} ] VLIB_DAY_OF_MONTH_ORDINAL [ VSUB_DAY_OF_MONTH_ORDINALX:d ] { return (strcat ("" $d)) } VSUB_DAY_OF_MONTH_ORDINALX (?the [ VSUB_FIRST_THRU_NINTH:n {return($n)} tenth {return(10)} eleventh {return(11)} twelfth {return(12)} thirteenth {return(13)} fourteenth {return(14)} fifteenth {return(15)} sixteenth {return(16)} seventeenth {return(17)} eighteenth {return(18)} nineteenth {return(19)} twentieth {return(20)} ( twenty VSUB_FIRST_THRU_NINTH:n ) {return(add(20 $n))} thirtieth {return(30)} ( thirty first ) {return(31)} ]) VSUB_FIRST_THRU_NINTH [ first {return(1)} second {return(2)} third {return(3)} fourth {return(4)} fifth {return(5)} sixth {return(6)} seventh {return(7)} eighth {return(8)} ninth {return(9)} ] VSUB_DIGIT_TWO_THRU_NINE [ two {return(2)} three {return(3)} four {return(4)} five {return(5)} six {return(6)} seven {return(7)} eight {return(8)} nine {return(9)} ] VSUB_DIGIT_ONE_THRU_NINE [ one {return(1)} VSUB_DIGIT_TWO_THRU_NINE:n {return($n)} ] VSUB_DIGIT [ [ zero oh ] {return(0)} VSUB_DIGIT_ONE_THRU_NINE:n {return($n)} ] ; Single-digit grammars that return string values VSUB_DIGIT_TWO_THRU_NINE_STRING [ two {return("2")} three {return("3")} four {return("4")} five {return("5")} six {return("6")} seven {return("7")} eight {return("8")} nine {return("9")} ] VSUB_DIGIT_ONE_THRU_NINE_STRING [ one {return("1")} VSUB_DIGIT_TWO_THRU_NINE_STRING:n {return($n)} ] VSUB_DIGIT_STRING [ [ zero oh ] {return("0")} VSUB_DIGIT_ONE_THRU_NINE_STRING:n {return($n)} ] VSUB_TEEN_STRING [ eleven {return("11")} twelve {return("12")} thirteen {return("13")} fourteen {return("14")} fifteen {return("15")} sixteen {return("16")} seventeen {return("17")} eighteen {return("18")} nineteen {return("19")} ] VSUB_DECADE_STRING [ twenty {return("2")} thirty {return("3")} forty {return("4")} fifty {return("5")} sixty {return("6")} seventy {return("7")} eighty {return("8")} ninety {return("9")} ] VSUB_TEEN [ eleven {return(11)} twelve {return(12)} thirteen {return(13)} fourteen {return(14)} fifteen {return(15)} sixteen {return(16)} seventeen {return(17)} eighteen {return(18)} nineteen {return(19)} ] VSUB_DECADE [ twenty {return(20)} thirty {return(30)} forty {return(40)} fifty {return(50)} sixty {return(60)} seventy {return(70)} eighty {return(80)} ninety {return(90)} ]