590 |
size_t arg_offset = 0; |
size_t arg_offset = 0; |
591 |
|
|
592 |
int c = getc (finput); |
int c = getc (finput); |
593 |
|
obstack_1grow (&token_obstack, '%'); |
594 |
|
obstack_1grow (&token_obstack, c); |
595 |
|
|
596 |
switch (c) |
switch (c) |
597 |
{ |
{ |
598 |
case '%': |
case '%': |
599 |
|
token_buffer = obstack_finish (&token_obstack); |
600 |
return tok_two_percents; |
return tok_two_percents; |
601 |
|
|
602 |
case '{': |
case '{': |
603 |
|
token_buffer = obstack_finish (&token_obstack); |
604 |
return tok_percent_left_curly; |
return tok_percent_left_curly; |
605 |
|
|
606 |
/* FIXME: Who the heck are those 5 guys!?! `%<' = `%left'!!! |
/* The following guys are here for backward compatibility with |
607 |
Let's ask for there removal. */ |
very ancient Yacc versions. The paper of Johnson mentions |
608 |
|
them (as ancient :). */ |
609 |
case '<': |
case '<': |
610 |
|
token_buffer = obstack_finish (&token_obstack); |
611 |
return tok_left; |
return tok_left; |
612 |
|
|
613 |
case '>': |
case '>': |
614 |
|
token_buffer = obstack_finish (&token_obstack); |
615 |
return tok_right; |
return tok_right; |
616 |
|
|
617 |
case '2': |
case '2': |
618 |
|
token_buffer = obstack_finish (&token_obstack); |
619 |
return tok_nonassoc; |
return tok_nonassoc; |
620 |
|
|
621 |
case '0': |
case '0': |
622 |
|
token_buffer = obstack_finish (&token_obstack); |
623 |
return tok_token; |
return tok_token; |
624 |
|
|
625 |
case '=': |
case '=': |
626 |
|
token_buffer = obstack_finish (&token_obstack); |
627 |
return tok_prec; |
return tok_prec; |
628 |
} |
} |
629 |
|
|
630 |
if (!isalpha (c)) |
if (!isalpha (c)) |
631 |
return tok_illegal; |
{ |
632 |
|
token_buffer = obstack_finish (&token_obstack); |
633 |
|
return tok_illegal; |
634 |
|
} |
635 |
|
|
636 |
obstack_1grow (&token_obstack, '%'); |
while (c = getc (finput), isalpha (c) || c == '_' || c == '-') |
|
while (isalpha (c) || c == '_' || c == '-') |
|
637 |
{ |
{ |
638 |
if (c == '_') |
if (c == '_') |
639 |
c = '-'; |
c = '-'; |
640 |
obstack_1grow (&token_obstack, c); |
obstack_1grow (&token_obstack, c); |
|
c = getc (finput); |
|
641 |
} |
} |
642 |
|
|
643 |
/* %DIRECTIVE="ARG". Separate into |
/* %DIRECTIVE="ARG". Separate into |