| 706 | } |
| 707 | |
| 708 | char *get_tag() |
| 709 | { |
| 710 | register int c; |
| 711 | int t_lineno = lineno; |
| 712 | char *t_line = dup_line(); |
| 713 | char *t_cptr = t_line + (cptr - line); |
| 714 | |
| 715 | ++cptr; |
| 716 | c = nextc(); |
| 717 | if (c == EOF) unexpected_EOF(); |
| 718 | if (!isalpha(c) && c != '_' && c != '$') |
| 719 | illegal_tag(t_lineno, t_line, t_cptr); |
| 720 | |
| 721 | cinc = 0; |
| 722 | do { cachec(c); c = *++cptr; } while (IS_IDENT(c)); |
| 723 | |
| 724 | c = nextc(); |
| 725 | if (c == EOF) unexpected_EOF(); |
| 726 | if (c != '>') |
| 727 | illegal_tag(t_lineno, t_line, t_cptr); |
| 728 | ++cptr; |
| 729 | |
| 730 | FREE(t_line); |
| 731 | havetags = 1; |
| 732 | return cache_tag(cache, cinc); |
| 733 | } |
| 734 | |
| 735 | static char *scan_id(void) |
| 736 | { |
no test coverage detected