# Numeral.script

# Copyright (C) 2004  Lauri Karttunen
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.

#
# This xfst script constructs the language of English numerals from
# "one" to "ninety-nine".

# From "one" through "nine":

define OneToNine [{one} | {two}   | {three} | {four}  | {five} |
                  {six} | {seven} | {eight} | {nine}];

# It is convenient to define a set of prefixes that can be
# followed either by "teen" or by "ty".

define TeenTen [{thir}  | {fif}  | {six}   |
                {seven} | {eigh} | {nine}];

# From "ten" to "nineteen"

define Teens [{ten} | {eleven} | {twelve} |
              [TeenTen | {four}] {teen}];

# Let's define a set of prefixes that can be followed by "ty".

define TenStem [TeenTen | {twen} | {for}];

# TenStem is followed either by "ty" or by ty-"
# and a number from OneToNine.

define Tens [TenStem {ty} ({-} OneToNine)];

define OneToNinetyNine [ OneToNine | Teens | Tens ];

# Done. Let's push the result on the stack and print
# some examples.

push OneToNinetyNine

echo
echo Printing random examples ...
print random-words