% File: enn_interpreter.pro % Description: a DCG for the names of numbers in English enn(0) --> [zero]. enn(V) --> enn5(V). enn5(V) --> enn4(V5), [million], enn4(V6), {V is ((V5*1000000)+V6)}. enn5(V) --> enn4(V5), [million], {V is (V5*1000000)}. enn5(V) --> enn4(V). enn4(V) --> enn3(V3), [thousand], enn3(V4), {V is ((V3*1000)+V4)}. enn4(V) --> enn3(V3), [thousand], {V is (V3*1000)}. enn4(V) --> enn3(V). enn3(V) --> enn1(V1), [hundred], enn2(V2), {V is ((V1*100)+V2)}. enn3(V) --> enn1(V1), [hundred], {V is (V1*100)}. enn3(V) --> enn2(V). enn2(V) --> ety(Ty), {V=Ty}. enn2(V) --> eteen(Teen), {V=Teen}. enn2(V) --> enn1(V). ety(V) --> etybase(V). ety(V) --> etybase(Ty), enn1(U), {V is ((Ty*1)+U)}. etybase(20) --> [twenty]. etybase(30) --> [thirty]. etybase(40) --> [forty]. etybase(50) --> [fifty]. etybase(60) --> [sixty]. etybase(70) --> [seventy]. etybase(80) --> [eighty]. etybase(90) --> [ninety]. eteen(10) --> [ten]. eteen(11) --> [eleven]. eteen(12) --> [twelve]. eteen(13) --> [thirteen]. eteen(14) --> [fourteen]. eteen(15) --> [fifteen]. eteen(16) --> [sixteen]. eteen(17) --> [seventeen]. eteen(18) --> [eighteen]. eteen(19) --> [nineteen]. enn1(1) --> [one]. enn1(2) --> [two]. enn1(3) --> [three]. enn1(4) --> [four]. enn1(5) --> [five]. enn1(6) --> [six]. enn1(7) --> [seven]. enn1(8) --> [eight]. enn1(9) --> [nine].