|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T p
Length: 23805 (0x5cfd)
Types: TextFile
Names: »phoneme.h«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Autopun/phoneme.h«
/*
* phoneme.h - definitions/declarations for phonemic translation
*
* Derived from:
*
* AUTOMATIC TRANSLATION OF ENGLISH TEXT TO PHONETICS
* BY MEANS OF LETTER-TO-SOUND RULES
*
* NRL Report 7948
*
* January 21st, 1976
* Naval Research Laboratory, Washington, D.C.
*
*
* Published by the National Technical Information Service as
* document "AD/A021 929".
*/
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
#define MAXPHONES 301 /* max # of phonemes in a phrase (+P_end)*/
/*
* P_* - internal representation of phoneme codes.
*/
#define P_end 0 /* <<no sound>> used as an invalid code */
#define P_IY 1 /* bEEt */
#define P_IH 2 /* bIt */
#define P_EY 3 /* gAte */
#define P_EH 4 /* gEt */
#define P_AE 5 /* fAt */
#define P_AA 6 /* fAther */
#define P_AO 7 /* lAWn */
#define P_OW 8 /* lOne */
#define P_UH 9 /* fUll */
#define P_UW 10 /* fOOl */
#define P_ER 11 /* mURdER */
#define P_AX 12 /* About */
#define P_AH 13 /* bUt */
#define P_AY 14 /* hIde */
#define P_AW 15 /* hOW */
#define P_OY 16 /* tOY */
#define P_p 17 /* Pack */
#define P_b 18 /* Back */
#define P_t 19 /* Time */
#define P_d 20 /* Dime */
#define P_k 21 /* Coat */
#define P_g 22 /* Goat */
#define P_f 23 /* Fault */
#define P_v 24 /* Vault */
#define P_TH 25 /* eTHer */
#define P_DH 26 /* eiTHer */
#define P_s 27 /* Sue */
#define P_z 28 /* Zoo */
#define P_SH 29 /* leaSH */
#define P_ZH 30 /* leiSure */
#define P_HH 31 /* How */
#define P_m 32 /* suM */
#define P_n 33 /* suN */
#define P_NG 34 /* suNG */
#define P_l 35 /* Laugh */
#define P_w 36 /* Wear */
#define P_y 37 /* Young */
#define P_r 38 /* Rate */
#define P_CH 39 /* CHar */
#define P_j 40 /* Jar */
#define P_WH 41 /* WHere */
#define P_PAS 42 /* <short pause> */
#define P_NUM 43 /* number of phonemic codes (including P_end) */
/*
* phochars[] - table for translating a phoneme code into ascii
* Indexed by a P_* code, phochars[] gives the ascii translation.
*/
#ifdef DATA
char *phochars[P_NUM] = {
"",
"IY", "IH", "EY", "EH", "AE", "AA", "AO", "OW", "UH",
"UW", "ER", "AX", "AH", "AY", "AW", "OY",
"p", "b", "t", "d", "k", "g", "f", "v", "TH", "DH",
"s", "z", "SH", "ZH", "HH", "m", "n", "NG", "l",
"w", "y", "r", "CH", "j", "WH",
" "
};
#else
extern char *phochars[];
#endif
#define MAXCOUT 6 /* max # of output phonemes in a rule (+ terminator) */
struct rule {
char *prefix; /* left context */
char *match; /* characters to match */
char *suffix; /* right context */
short outsyms[MAXCOUT]; /* P_end-terminated list of codes to output */
short preflen; /* strlen() of prefix - set at runtime */
short sufflen; /* ditto for suffix */
};
#ifdef DATA /* definitions of the English rules */
static char Anything[] = ""; /* No context requirement */
static char Nothing[] = " "; /* Context is beginning or end of word */
/*
* Special Context Symbols in rules:
*
* # One or more vowels
* : Zero or more consonants
* ^ One consonant.
* . One of B, D, V, G, J, L, M, N, R, W or Z (voiced
* consonants)
* % One of ER, E, ES, ED, ING, ELY (a suffix)
* (Found in right context only)
* + One of E, I or Y (a "front" vowel)
*
*/
static struct rule punct_rules[] = {
{Anything, " ", Anything, {P_PAS, P_end} },
{Anything, "-", Anything, {P_end} },
{".", "'S", Anything, {P_z, P_end} },
{"#:.E", "'S", Anything, {P_z, P_end} },
{"#", "'S", Anything, {P_z, P_end} },
{Anything, "'", Anything, {P_end} },
{Anything, ",", Anything, {P_PAS, P_end} },
{Anything, ".", Anything, {P_PAS, P_end} },
{Anything, "?", Anything, {P_PAS, P_end} },
{Anything, "!", Anything, {P_PAS, P_end} },
{Anything, 0, Anything, {P_end} },
};
static struct rule A_rules[] = {
{Anything, "A", Nothing, {P_AX, P_end} },
{Nothing, "ARE", Nothing, {P_AA, P_r, P_end} },
{Nothing, "AR", "O", {P_AX, P_r, P_end} },
{Anything, "AR", "#", {P_EH, P_r, P_end} },
{"^", "AS", "#", {P_EY, P_s, P_end} },
{Anything, "A", "WA", {P_AX, P_end} },
{Anything, "AW", Anything, {P_AO, P_end} },
{" :", "ANY", Anything, {P_EH, P_n, P_IY, P_end} },
{Anything, "A", "^+#", {P_EY, P_end} },
{"#:", "ALLY", Anything, {P_AX, P_l, P_IY, P_end} },
{Nothing, "AL", "#", {P_AX, P_l, P_end} },
{Anything, "AGAIN",Anything, {P_AX, P_g, P_EH, P_n, P_end} },
{"#:", "AG", "E", {P_IH, P_j, P_end} },
{Anything, "A", "^+:#", {P_AE, P_end} },
{" :", "A", "^+ ", {P_EY, P_end} },
{Anything, "A", "^%", {P_EY, P_end} },
{Nothing, "ARR", Anything, {P_AX, P_r, P_end} },
{Anything, "ARR", Anything, {P_AE, P_r, P_end} },
{" :", "AR", Nothing, {P_AA, P_r, P_end} },
{Anything, "AR", Nothing, {P_ER, P_end} },
{Anything, "AR", Anything, {P_AA, P_r, P_end} },
{Anything, "AIR", Anything, {P_EH, P_r, P_end} },
{Anything, "AI", Anything, {P_EY, P_end} },
{Anything, "AY", Anything, {P_EY, P_end} },
{Anything, "AU", Anything, {P_AO, P_end} },
{"#:", "AL", Nothing, {P_AX, P_l, P_end} },
{"#:", "ALS", Nothing, {P_AX, P_l, P_z, P_end} },
{Anything, "ALK", Anything, {P_AO, P_k, P_end} },
{Anything, "AL", "^", {P_AO, P_l, P_end} },
{" :", "ABLE", Anything, {P_EY, P_b, P_AX, P_l, P_end} },
{Anything, "ABLE", Anything, {P_AX, P_b, P_AX, P_l, P_end} },
{Anything, "ANG", "+", {P_EY, P_n, P_j, P_end} },
{Anything, "A", Anything, {P_AE, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule B_rules[] = {
{Nothing, "BE", "^#", {P_b, P_IH, P_end} },
{Anything, "BEING",Anything, {P_b, P_IY, P_IH, P_NG, P_end} },
{Nothing, "BOTH", Nothing, {P_b, P_OW, P_TH, P_end} },
{Nothing, "BUS", "#", {P_b, P_IH, P_z, P_end} },
{Anything, "BUIL", Anything, {P_b, P_IH, P_l, P_end} },
{Anything, "B", Anything, {P_b, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule C_rules[] = {
{Nothing, "CH", "^", {P_k, P_end} },
{"^E", "CH", Anything, {P_k, P_end} },
{Anything, "CH", Anything, {P_CH, P_end} },
{" S", "CI", "#", {P_s, P_AY, P_end} },
{Anything, "CI", "A", {P_SH, P_end} },
{Anything, "CI", "O", {P_SH, P_end} },
{Anything, "CI", "EN", {P_SH, P_end} },
{Anything, "C", "+", {P_s, P_end} },
{Anything, "CK", Anything, {P_k, P_end} },
{Anything, "COM", "%", {P_k, P_AH, P_m, P_end} },
{Anything, "C", Anything, {P_k, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule D_rules[] = {
{"#:", "DED", Nothing, {P_d, P_IH, P_d, P_end} },
{".E", "D", Nothing, {P_d, P_end} },
{"#:^E", "D", Nothing, {P_t, P_end} },
{Nothing, "DE", "^#", {P_d, P_IH, P_end} },
{Nothing, "DO", Nothing, {P_d, P_UW, P_end} },
{Nothing, "DOES", Anything, {P_d, P_AH, P_z, P_end} },
{Nothing, "DOING",Anything, {P_d, P_UW, P_IH, P_NG, P_end} },
{Nothing, "DOW", Anything, {P_d, P_AW, P_end} },
{Anything, "DU", "A", {P_j, P_UW, P_end} },
{Anything, "D", Anything, {P_d, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule E_rules[] = {
{"#:", "E", Nothing, {P_end} },
{"':^", "E", Nothing, {P_end} },
{" :", "E", Nothing, {P_IY, P_end} },
{"#", "ED", Nothing, {P_d, P_end} },
{"#:", "E", "D ", {P_end} },
{Anything, "EV", "ER", {P_EH, P_v, P_end} },
{Anything, "E", "^%", {P_IY, P_end} },
{Anything, "ERI", "#", {P_IY, P_r, P_IY, P_end} },
{Anything, "ERI", Anything, {P_EH, P_r, P_IH, P_end} },
{"#:", "ER", "#", {P_ER, P_end} },
{Anything, "ER", "#", {P_EH, P_r, P_end} },
{Anything, "ER", Anything, {P_ER, P_end} },
{Nothing, "EVEN", Anything, {P_IY, P_v, P_EH, P_n, P_end} },
{"#:", "E", "W", {P_end} },
{"T", "EW", Anything, {P_UW, P_end} },
{"S", "EW", Anything, {P_UW, P_end} },
{"R", "EW", Anything, {P_UW, P_end} },
{"D", "EW", Anything, {P_UW, P_end} },
{"L", "EW", Anything, {P_UW, P_end} },
{"Z", "EW", Anything, {P_UW, P_end} },
{"N", "EW", Anything, {P_UW, P_end} },
{"J", "EW", Anything, {P_UW, P_end} },
{"TH", "EW", Anything, {P_UW, P_end} },
{"CH", "EW", Anything, {P_UW, P_end} },
{"SH", "EW", Anything, {P_UW, P_end} },
{Anything, "EW", Anything, {P_y, P_UW, P_end} },
{Anything, "E", "O", {P_IY, P_end} },
{"#:S", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:C", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:G", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:Z", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:X", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:J", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:CH", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:SH", "ES", Nothing, {P_IH, P_z, P_end} },
{"#:", "E", "S ", {P_end} },
{"#:", "ELY", Nothing, {P_l, P_IY, P_end} },
{"#:", "EMENT",Anything, {P_m, P_EH, P_n, P_t, P_end} },
{Anything, "EFUL", Anything, {P_f, P_UH, P_l, P_end} },
{Anything, "EE", Anything, {P_IY, P_end} },
{Anything, "EARN", Anything, {P_ER, P_n, P_end} },
{Nothing, "EAR", "^", {P_ER, P_end} },
{Anything, "EAD", Anything, {P_EH, P_d, P_end} },
{"#:", "EA", Nothing, {P_IY, P_AX, P_end} },
{Anything, "EA", "SU", {P_EH, P_end} },
{Anything, "EA", Anything, {P_IY, P_end} },
{Anything, "EIGH", Anything, {P_EY, P_end} },
{Anything, "EI", Anything, {P_IY, P_end} },
{Nothing, "EYE", Anything, {P_AY, P_end} },
{Anything, "EY", Anything, {P_IY, P_end} },
{Anything, "EU", Anything, {P_y, P_UW, P_end} },
{Anything, "E", Anything, {P_EH, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule F_rules[] = {
{Anything, "FUL", Anything, {P_f, P_UH, P_l, P_end} },
{Anything, "F", Anything, {P_f, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule G_rules[] = {
{Anything, "GIV", Anything, {P_g, P_IH, P_v, P_end} },
{Nothing, "G", "I^", {P_g, P_end} },
{Anything, "GE", "T", {P_g, P_EH, P_end} },
{"SU", "GGES", Anything, {P_g, P_j, P_EH, P_s, P_end} },
{Anything, "GG", Anything, {P_g, P_end} },
{" B#", "G", Anything, {P_g, P_end} },
{Anything, "G", "+", {P_j, P_end} },
{Anything, "GREAT",Anything, {P_g, P_r, P_EY, P_t, P_end} },
{"#", "GH", Anything, {P_end} },
{Anything, "G", Anything, {P_g, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule H_rules[] = {
{Nothing, "HAV", Anything, {P_HH, P_AE, P_v, P_end} },
{Nothing, "HERE", Anything, {P_HH, P_IY, P_r, P_end} },
{Nothing, "HOUR", Anything, {P_AW, P_ER, P_end} },
{Anything, "HOW", Anything, {P_HH, P_AW, P_end} },
{Anything, "H", "#", {P_HH, P_end} },
{Anything, "H", Anything, {P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule I_rules[] = {
{Nothing, "IN", Anything, {P_IH, P_n, P_end} },
{Nothing, "I", Nothing, {P_AY, P_end} },
{Anything, "IN", "D", {P_AY, P_n, P_end} },
{Anything, "IER", Anything, {P_IY, P_ER, P_end} },
{"#:R", "IED", Anything, {P_IY, P_d, P_end} },
{Anything, "IED", Nothing, {P_AY, P_d, P_end} },
{Anything, "IEN", Anything, {P_IY, P_EH, P_n, P_end} },
{Anything, "IE", "T", {P_AY, P_EH, P_end} },
{" :", "I", "%", {P_AY, P_end} },
{Anything, "I", "%", {P_IY, P_end} },
{Anything, "IE", Anything, {P_IY, P_end} },
{Anything, "I", "^+:#", {P_IH, P_end} },
{Anything, "IR", "#", {P_AY, P_r, P_end} },
{Anything, "IZ", "%", {P_AY, P_z, P_end} },
{Anything, "IS", "%", {P_AY, P_z, P_end} },
{Anything, "I", "D%", {P_AY, P_end} },
{"+^", "I", "^+", {P_IH, P_end} },
{Anything, "I", "T%", {P_AY, P_end} },
{"#:^", "I", "^+", {P_IH, P_end} },
{Anything, "I", "^+", {P_AY, P_end} },
{Anything, "IR", Anything, {P_ER, P_end} },
{Anything, "IGH", Anything, {P_AY, P_end} },
{Anything, "ILD", Anything, {P_AY, P_l, P_d, P_end} },
{Anything, "IGN", Nothing, {P_AY, P_n, P_end} },
{Anything, "IGN", "^", {P_AY, P_n, P_end} },
{Anything, "IGN", "%", {P_AY, P_n, P_end} },
{Anything, "IQUE", Anything, {P_IY, P_k, P_end} },
{Anything, "I", Anything, {P_IH, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule J_rules[] = {
{Anything, "J", Anything, {P_j, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule K_rules[] = {
{Nothing, "K", "N", {P_end} },
{Anything, "K", Anything, {P_k, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule L_rules[] = {
{Anything, "LO", "C#", {P_l, P_OW, P_end} },
{"L", "L", Anything, {P_end} },
{"#:^", "L", "%", {P_AX, P_l, P_end} },
{Anything, "LEAD", Anything, {P_l, P_IY, P_d, P_end} },
{Anything, "L", Anything, {P_l, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule M_rules[] = {
{Anything, "MOV", Anything, {P_m, P_UW, P_v, P_end} },
{Anything, "M", Anything, {P_m, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule N_rules[] = {
{"E", "NG", "+", {P_n, P_j, P_end} },
{Anything, "NG", "R", {P_NG, P_g, P_end} },
{Anything, "NG", "#", {P_NG, P_g, P_end} },
{Anything, "NGL", "%", {P_NG, P_g, P_AX, P_l, P_end} },
{Anything, "NG", Anything, {P_NG, P_end} },
{Anything, "NK", Anything, {P_NG, P_k, P_end} },
{Nothing, "NOW", Nothing, {P_n, P_AW, P_end} },
{Anything, "N", Anything, {P_n, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule O_rules[] = {
{Anything, "OF", Nothing, {P_AX, P_v, P_end} },
{Anything, "OROUGH",Anything, {P_ER, P_OW, P_end} },
{"#:", "OR", Nothing, {P_ER, P_end} },
{"#:", "ORS", Nothing, {P_ER, P_z, P_end} },
{Anything, "OR", Anything, {P_AO, P_r, P_end} },
{Nothing, "ONE", Anything, {P_w, P_AH, P_n, P_end} },
{Anything, "OW", Anything, {P_OW, P_end} },
{Nothing, "OVER", Anything, {P_OW, P_v, P_ER, P_end} },
{Anything, "OV", Anything, {P_AH, P_v, P_end} },
{Anything, "O", "^%", {P_OW, P_end} },
{Anything, "O", "^EN", {P_OW, P_end} },
{Anything, "O", "^I#", {P_OW, P_end} },
{Anything, "OL", "D", {P_OW, P_l, P_end} },
{Anything, "OUGHT",Anything, {P_AO, P_t, P_end} },
{Anything, "OUGH", Anything, {P_AH, P_f, P_end} },
{Nothing, "OU", Anything, {P_AW, P_end} },
{"H", "OU", "S#", {P_AW, P_end} },
{Anything, "OUS", Anything, {P_AX, P_s, P_end} },
{Anything, "OUR", Anything, {P_AO, P_r, P_end} },
{Anything, "OULD", Anything, {P_UH, P_d, P_end} },
{"^", "OU", "^L", {P_AH, P_end} },
{Anything, "OUP", Anything, {P_UW, P_p, P_end} },
{Anything, "OU", Anything, {P_AW, P_end} },
{Anything, "OY", Anything, {P_OY, P_end} },
{Anything, "OING", Anything, {P_OW, P_IH, P_NG, P_end} },
{Anything, "OI", Anything, {P_OY, P_end} },
{Anything, "OOR", Anything, {P_AO, P_r, P_end} },
{Anything, "OOK", Anything, {P_UH, P_k, P_end} },
{Anything, "OOD", Anything, {P_UH, P_d, P_end} },
{Anything, "OO", Anything, {P_UW, P_end} },
{Anything, "O", "E", {P_OW, P_end} },
{Anything, "O", Nothing, {P_OW, P_end} },
{Anything, "OA", Anything, {P_OW, P_end} },
{Nothing, "ONLY", Anything, {P_OW, P_n, P_l, P_IY, P_end} },
{Nothing, "ONCE", Anything, {P_w, P_AH, P_n, P_s, P_end} },
{Anything, "ON'T", Anything, {P_OW, P_n, P_t, P_end} },
{"C", "O", "N", {P_AA, P_end} },
{Anything, "O", "NG", {P_AO, P_end} },
{" :^", "O", "N", {P_AH, P_end} },
{"I", "ON", Anything, {P_AX, P_n, P_end} },
{"#:", "ON", Nothing, {P_AX, P_n, P_end} },
{"#^", "ON", Anything, {P_AX, P_n, P_end} },
{Anything, "O", "ST ", {P_OW, P_end} },
{Anything, "OF", "^", {P_AO, P_f, P_end} },
{Anything, "OTHER",Anything, {P_AH, P_DH, P_ER, P_end} },
{Anything, "OSS", Nothing, {P_AO, P_s, P_end} },
{"#:^", "OM", Anything, {P_AH, P_m, P_end} },
{Anything, "O", Anything, {P_AA, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule P_rules[] = {
{Anything, "PH", Anything, {P_f, P_end} },
{Anything, "PEOP", Anything, {P_p, P_IY, P_p, P_end} },
{Anything, "POW", Anything, {P_p, P_AW, P_end} },
{Anything, "PUT", Nothing, {P_p, P_UH, P_t, P_end} },
{Anything, "P", Anything, {P_p, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule Q_rules[] = {
{Anything, "QUAR", Anything, {P_k, P_w, P_AO, P_r, P_end} },
{Anything, "QU", Anything, {P_k, P_w, P_end} },
{Anything, "Q", Anything, {P_k, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule R_rules[] = {
{Nothing, "RE", "^#", {P_r, P_IY, P_end} },
{Anything, "R", Anything, {P_r, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule S_rules[] = {
{Anything, "SH", Anything, {P_SH, P_end} },
{"#", "SION", Anything, {P_ZH, P_AX, P_n, P_end} },
{Anything, "SOME", Anything, {P_s, P_AH, P_m, P_end} },
{"#", "SUR", "#", {P_ZH, P_ER, P_end} },
{Anything, "SUR", "#", {P_SH, P_ER, P_end} },
{"#", "SU", "#", {P_ZH, P_UW, P_end} },
{"#", "SSU", "#", {P_SH, P_UW, P_end} },
{"#", "SED", Nothing, {P_z, P_d, P_end} },
{"#", "S", "#", {P_z, P_end} },
{Anything, "SAID", Anything, {P_s, P_EH, P_d, P_end} },
{"^", "SION", Anything, {P_SH, P_AX, P_n, P_end} },
{Anything, "S", "S", {P_end} },
{".", "S", Nothing, {P_z, P_end} },
{"#:.E", "S", Nothing, {P_z, P_end} },
{"#:^##", "S", Nothing, {P_z, P_end} },
{"#:^#", "S", Nothing, {P_s, P_end} },
{"U", "S", Nothing, {P_s, P_end} },
{" :#", "S", Nothing, {P_z, P_end} },
{Nothing, "SCH", Anything, {P_s, P_k, P_end} },
{Anything, "S", "C+", {P_end} },
{"#", "SM", Anything, {P_z, P_m, P_end} },
{"#", "SN", "'", {P_z, P_AX, P_n, P_end} },
{Anything, "S", Anything, {P_s, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule T_rules[] = {
{Nothing, "THE", Nothing, {P_DH, P_AX, P_end} },
{Anything, "TO", Nothing, {P_t, P_UW, P_end} },
{Anything, "THAT", Nothing, {P_DH, P_AE, P_t, P_end} },
{Nothing, "THIS", Nothing, {P_DH, P_IH, P_s, P_end} },
{Nothing, "THEY", Anything, {P_DH, P_EY, P_end} },
{Nothing, "THERE",Anything, {P_DH, P_EH, P_r, P_end} },
{Anything, "THER", Anything, {P_DH, P_ER, P_end} },
{Anything, "THEIR",Anything, {P_DH, P_EH, P_r, P_end} },
{Nothing, "THAN", Nothing, {P_DH, P_AE, P_n, P_end} },
{Nothing, "THEM", Nothing, {P_DH, P_EH, P_m, P_end} },
{Anything, "THESE",Nothing, {P_DH, P_IY, P_z, P_end} },
{Nothing, "THEN", Anything, {P_DH, P_EH, P_n, P_end} },
{Anything, "THROUGH",Anything, {P_TH, P_r, P_UW, P_end} },
{Anything, "THOSE",Anything, {P_DH, P_OW, P_z, P_end} },
{Anything, "THOUGH",Nothing, {P_DH, P_OW, P_end} },
{Nothing, "THUS", Anything, {P_DH, P_AH, P_s, P_end} },
{Anything, "TH", Anything, {P_TH, P_end} },
{"#:", "TED", Nothing, {P_t, P_IH, P_d, P_end} },
{"S", "TI", "#N", {P_CH, P_end} },
{Anything, "TI", "O", {P_SH, P_end} },
{Anything, "TI", "A", {P_SH, P_end} },
{Anything, "TIEN", Anything, {P_SH, P_AX, P_n, P_end} },
{Anything, "TUR", "#", {P_CH, P_ER, P_end} },
{Anything, "TU", "A", {P_CH, P_UW, P_end} },
{Nothing, "TWO", Anything, {P_t, P_UW, P_end} },
{Anything, "T", Anything, {P_t, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule U_rules[] = {
{Nothing, "UN", "I", {P_y, P_UW, P_n, P_end} },
{Nothing, "UN", Anything, {P_AH, P_n, P_end} },
{Nothing, "UPON", Anything, {P_AX, P_p, P_AO, P_n, P_end} },
{"T", "UR", "#", {P_UH, P_r, P_end} },
{"S", "UR", "#", {P_UH, P_r, P_end} },
{"R", "UR", "#", {P_UH, P_r, P_end} },
{"D", "UR", "#", {P_UH, P_r, P_end} },
{"L", "UR", "#", {P_UH, P_r, P_end} },
{"Z", "UR", "#", {P_UH, P_r, P_end} },
{"N", "UR", "#", {P_UH, P_r, P_end} },
{"J", "UR", "#", {P_UH, P_r, P_end} },
{"TH", "UR", "#", {P_UH, P_r, P_end} },
{"CH", "UR", "#", {P_UH, P_r, P_end} },
{"SH", "UR", "#", {P_UH, P_r, P_end} },
{Anything, "UR", "#", {P_y, P_UH, P_r, P_end} },
{Anything, "UR", Anything, {P_ER, P_end} },
{Anything, "U", "^ ", {P_AH, P_end} },
{Anything, "U", "^^", {P_AH, P_end} },
{Anything, "UY", Anything, {P_AY, P_end} },
{" G", "U", "#", {P_end} },
{"G", "U", "%", {P_end} },
{"G", "U", "#", {P_w, P_end} },
{"#N", "U", Anything, {P_y, P_UW, P_end} },
{"T", "U", Anything, {P_UW, P_end} },
{"S", "U", Anything, {P_UW, P_end} },
{"R", "U", Anything, {P_UW, P_end} },
{"D", "U", Anything, {P_UW, P_end} },
{"L", "U", Anything, {P_UW, P_end} },
{"Z", "U", Anything, {P_UW, P_end} },
{"N", "U", Anything, {P_UW, P_end} },
{"J", "U", Anything, {P_UW, P_end} },
{"TH", "U", Anything, {P_UW, P_end} },
{"CH", "U", Anything, {P_UW, P_end} },
{"SH", "U", Anything, {P_UW, P_end} },
{Anything, "U", Anything, {P_y, P_UW, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule V_rules[] = {
{Anything, "VIEW", Anything, {P_v, P_y, P_UW, P_end} },
{Anything, "V", Anything, {P_v, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule W_rules[] = {
{Nothing, "WERE", Anything, {P_w, P_ER, P_end} },
{Anything, "WA", "S", {P_w, P_AA, P_end} },
{Anything, "WA", "T", {P_w, P_AA, P_end} },
{Anything, "WHERE",Anything, {P_WH, P_EH, P_r, P_end} },
{Anything, "WHAT", Anything, {P_WH, P_AA, P_t, P_end} },
{Anything, "WHOL", Anything, {P_HH, P_OW, P_l, P_end} },
{Anything, "WHO", Anything, {P_HH, P_UW, P_end} },
{Anything, "WH", Anything, {P_WH, P_end} },
{Anything, "WAR", Anything, {P_w, P_AO, P_r, P_end} },
{Anything, "WOR", "^", {P_w, P_ER, P_end} },
{Anything, "WR", Anything, {P_r, P_end} },
{Anything, "W", Anything, {P_w, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule X_rules[] = {
{Anything, "X", Anything, {P_k, P_s, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule Y_rules[] = {
{Anything, "YOUNG",Anything, {P_y, P_AH, P_NG, P_end} },
{Nothing, "YOU", Anything, {P_y, P_UW, P_end} },
{Nothing, "YES", Anything, {P_y, P_EH, P_s, P_end} },
{Nothing, "Y", Anything, {P_y, P_end} },
{"#:^", "Y", Nothing, {P_IY, P_end} },
{"#:^", "Y", "I", {P_IY, P_end} },
{" :", "Y", Nothing, {P_AY, P_end} },
{" :", "Y", "#", {P_AY, P_end} },
{" :", "Y", "^+:#", {P_IH, P_end} },
{" :", "Y", "^#", {P_AY, P_end} },
{Anything, "Y", Anything, {P_IH, P_end} },
{Anything, 0, Anything, {P_end} }
};
static struct rule Z_rules[] = {
{Anything, "Z", Anything, {P_z, P_end} },
{Anything, 0, Anything, {P_end} }
};
struct rule *Rules[] =
{
punct_rules,
A_rules, B_rules, C_rules, D_rules, E_rules, F_rules, G_rules,
H_rules, I_rules, J_rules, K_rules, L_rules, M_rules, N_rules,
O_rules, P_rules, Q_rules, R_rules, S_rules, T_rules, U_rules,
V_rules, W_rules, X_rules, Y_rules, Z_rules
};
#else /* DATA */
extern struct rule rules[];
#endif
#define RIDX_PUNC 0 /* Rules[] index of punctuation rules */
#define RIDX_A 1 /* Rules[] index of A_rules */
#define RULECNT (sizeof(Rules) / sizeof(Rules[0])) /* # of Rule tables */