7_DIGIT_PHONE [ VLIB_US_7_DIGIT_PHONE_NUMBER:z {} ] VLIB_US_7_DIGIT_PHONE_NUMBER ( VSUB_PHONE_FIRST_THREE:a VSUB_NATURAL_FOUR_DIGITS_STRING:b ) {return(strcat($a $b))} VSUB_PHONE_FIRST_THREE [ ( VSUB_DIGIT_TWO_THRU_NINE_STRING:a VSUB_DIGIT_STRING:b VSUB_DIGIT_STRING:c ) {return(strcat($a strcat($b $c)))} ( VSUB_DIGIT_TWO_THRU_NINE_STRING:a ten ) {return(strcat($a "10"))} ( VSUB_DIGIT_TWO_THRU_NINE_STRING:a VSUB_DECADE_STRING:b ) {return(strcat($a strcat($b "0")))} ] VSUB_NATURAL_FOUR_DIGITS_STRING [ ( VSUB_DIGIT_STRING:a VSUB_DIGIT_STRING:b VSUB_DIGIT_STRING:c VSUB_DIGIT_STRING:d ) {return(strcat(strcat($a $b) strcat($c $d)))} ( VSUB_DIGIT_ONE_THRU_NINE_STRING:n thousand ) {return(strcat($n "000"))} ( VSUB_TEEN_STRING:n hundred ) {return(strcat($n "00"))} ( VSUB_DECADE_STRING:a VSUB_DIGIT_ONE_THRU_NINE_STRING:b hundred ) {return(strcat(strcat($a $b) "00"))} ( [ oh zero ] VSUB_DIGIT_ONE_THRU_NINE_STRING:a hundred ) {return(strcat(strcat("0" $a) "00"))} ( triple [ oh zero ] VSUB_DIGIT_ONE_THRU_NINE_STRING:a ) {return(strcat("000" $a))} ( VSUB_NATURAL_TWO_DIGITS_STRING:a VSUB_NATURAL_TWO_DIGITS_STRING:b ) {return(strcat($a $b))} ] VSUB_NATURAL_TWO_DIGITS_STRING [ ( [ oh zero ] VSUB_DIGIT_STRING:a ) {return(strcat("0" $a))} VSUB_TEEN_STRING:n {return($n)} ten {return("10")} VSUB_DECADE_STRING:t {return(strcat($t "0"))} ( VSUB_DECADE_STRING:t VSUB_DIGIT_ONE_THRU_NINE_STRING:u ) {return(strcat($t $u))} ] 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)} ]