#define MAX_GRAMMAR 175 #define PHRASE_BASE 515 int gram[MAX_GRAMMAR] = { 2, 3, 516, 518, 512, 3, 518, 517, 512, 3, 1, 256, 2, 257, 258, 0, 2, 1, 256, 0, 6, 1, 519, 1, 520, 1, 521, 1, 529, 1, 523, 1, 524, 3, 4, 259, 260, 261, 262, 3, 263, 264, 260, 1, 260, 3, 3, 259, 264, 265, 3, 263, 266, 265, 1, 265, 4, 4, 259, 267, 261, 522, 3, 259, 268, 522, 4, 267, 269, 264, 270, 1, 267, 3, 1, 262, 1, 271, 1, 272, 1, 4, 273, 274, 275, 526, 1, 2, 525, 276, 1, 2, 514, 277, 6, 2, 514, 278, 4, 514, 279, 280, 527, 4, 514, 281, 280, 527, 4, 514, 282, 264, 528, 3, 514, 283, 528, 1, 514, 3, 1, 272, 1, 283, 0, 3, 1, 284, 1, 285, 1, 286, 4, 2, 513, 531, 4, 287, 264, 513, 531, 4, 287, 531, 264, 513, 1, 530, 3, 2, 513, 532, 3, 288, 264, 513, 2, 288, 513, 2, 1, 289, 1, 290, 5, 1, 291, 1, 292, 1, 288, 1, 293, 1, 294, }; #define MAX_KEYWORD 39 char *keyword[MAX_KEYWORD] = { // Keywords are based at 256 "please", "would", "you", "what", "time", "is", "it", "whats", "the", "date", "todays", "day", "days", "of", "week", "this", "today", "set", "alarm", "for", "timer", "minute", "oclock", "a", "m", "p", "in", "tomorrow", "morning", "afternoon", "evening", "turn", "dim", "off", "on", "up", "down", "low", "bright", }; #define K_please 1 #define K_would 2 #define K_you 3 #define K_what 4 #define K_time 5 #define K_is 6 #define K_it 7 #define K_whats 8 #define K_the 9 #define K_date 10 #define K_todays 11 #define K_day 12 #define K_days 13 #define K_of 14 #define K_week 15 #define K_this 16 #define K_today 17 #define K_set 18 #define K_alarm 19 #define K_for 20 #define K_timer 21 #define K_minute 22 #define K_oclock 23 #define K_a 24 #define K_m 25 #define K_p 26 #define K_in 27 #define K_tomorrow 28 #define K_morning 29 #define K_afternoon 30 #define K_evening 31 #define K_turn 32 #define K_dim 33 #define K_off 34 #define K_on 35 #define K_up 36 #define K_down 37 #define K_low 38 #define K_bright 39 #define MAX_BIP 3 int BIP[MAX_BIP] = { // BIPs precede PHRASEs at 512 upwards 0, 1, 2, }; #define MAX_PHRASE 21 #ifdef DEBUG_PARSER // FOR DEBUGGING ONLY char *phrasename[MAX_PHRASE] = { // Based at 512 upwards "EOF", "IDENT", "NUM", "PROGRAM", "PREFIX_PLEASE", "POSTFIX_PLEASE", "SIMPLE", "TIME", "DATE", "DAY", "THISDAY", "ALARM", "TIMER", "DELTATIME", "ABSTIME", "TODAYTOMORROW", "TIMEPERIOD", "LIGHTS", "DIM", "OFF_OR_ON", "UP_OR_DOWN", }; #endif /* DEBUG_PARSER */ int phrase_start[MAX_PHRASE-MAX_BIP] = { 0, 9, 16, 20, 33, 45, 56, 73, 80, 86, 90, 94, 119, 125, 132, 148, 159, 164, }; #define P_EOF 512 #define P_IDENT 513 #define P_NUM 514 #define P_PROGRAM 515 #define P_PREFIX_PLEASE 516 #define P_POSTFIX_PLEASE 517 #define P_SIMPLE 518 #define P_TIME 519 #define P_DATE 520 #define P_DAY 521 #define P_THISDAY 522 #define P_ALARM 523 #define P_TIMER 524 #define P_DELTATIME 525 #define P_ABSTIME 526 #define P_TODAYTOMORROW 527 #define P_TIMEPERIOD 528 #define P_LIGHTS 529 #define P_DIM 530 #define P_OFF_OR_ON 531 #define P_UP_OR_DOWN 532