/* S Y N T A X E R R O R R E P O R T I N G */ #ifndef NORCSID static char *RcsId = "$Header$"; #endif /* Defines the LLmessage routine. LLgen-generated parsers require the existence of a routine of that name. The routine must do syntax-error reporting and must be able to insert tokens in the token stream. */ #include #include #include #include "idf.h" #include "LLlex.h" #include "Lpars.h" extern char *symbol2str(); extern struct idf *gen_anon_idf(); extern int err_occurred; LLmessage(tk) int tk; { if (tk) { /* if (tk != 0), it represents the token to be inserted. otherwize, the current token is deleted */ error("%s missing", symbol2str(tk)); insert_token(tk); } else error("%s deleted", symbol2str(dot.tk_symb)); } insert_token(tk) int tk; { aside = dot; dot.tk_symb = tk; switch (tk) { /* The operands need some body */ case IDENT: dot.TOK_IDF = gen_anon_idf(); break; case STRING: dot.TOK_SLE = 1; dot.TOK_STR = Salloc("", 1); break; case INTEGER: dot.TOK_INT = 1; break; case REAL: dot.TOK_REL = Salloc("0.0", 4); break; } }