version 1.1, 1995/10/18 08:47:06 |
version 1.2, 1996/02/04 08:37:02 |
|
|
return (UNION); |
return (UNION); |
if (strcmp(cache, "ident") == 0) |
if (strcmp(cache, "ident") == 0) |
return (IDENT); |
return (IDENT); |
|
if (strcmp(cache, "expect") == 0) |
|
return (EXPECT); |
} |
} |
else |
else |
{ |
{ |
|
|
} |
} |
|
|
|
|
|
/* |
|
* %expect requires special handling |
|
* as it really isn't part of the yacc |
|
* grammar only a flag for yacc proper. |
|
*/ |
|
declare_expect(assoc) |
|
int assoc; |
|
{ |
|
register int c; |
|
|
|
if (assoc != EXPECT) ++prec; |
|
|
|
/* |
|
* Stay away from nextc - doesn't |
|
* detect EOL and will read to EOF. |
|
*/ |
|
c = *++cptr; |
|
if (c == EOF) unexpected_EOF(); |
|
|
|
for(;;) |
|
{ |
|
if (isdigit(c)) |
|
{ |
|
SRexpect = get_number(); |
|
break; |
|
} |
|
/* |
|
* Looking for number before EOL. |
|
* Spaces, tabs, and numbers are ok, |
|
* words, punc., etc. are syntax errors. |
|
*/ |
|
else if (c == '\n' || isalpha(c) || !isspace(c)) |
|
{ |
|
syntax_error(lineno, line, cptr); |
|
} |
|
else |
|
{ |
|
c = *++cptr; |
|
if (c == EOF) unexpected_EOF(); |
|
} |
|
} |
|
} |
|
|
|
|
declare_types() |
declare_types() |
{ |
{ |
register int c; |
register int c; |
|
|
case NONASSOC: |
case NONASSOC: |
declare_tokens(k); |
declare_tokens(k); |
break; |
break; |
|
|
|
case EXPECT: |
|
declare_expect(k); |
|
break; |
|
|
case TYPE: |
case TYPE: |
declare_types(); |
declare_types(); |