|
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 */