version 1.8, 2001/07/16 06:29:45 |
version 1.9, 2001/11/19 19:02:18 |
|
|
void |
void |
get_line() |
get_line() |
{ |
{ |
register FILE *f = input_file; |
FILE *f = input_file; |
register int c; |
int c; |
register int i; |
int i; |
|
|
if (saw_eof || (c = getc(f)) == EOF) |
if (saw_eof || (c = getc(f)) == EOF) |
{ |
{ |
|
|
char * |
char * |
dup_line() |
dup_line() |
{ |
{ |
register char *p, *s, *t; |
char *p, *s, *t; |
|
|
if (line == 0) return (0); |
if (line == 0) return (0); |
s = line; |
s = line; |
|
|
void |
void |
skip_comment() |
skip_comment() |
{ |
{ |
register char *s; |
char *s; |
|
|
int st_lineno = lineno; |
int st_lineno = lineno; |
char *st_line = dup_line(); |
char *st_line = dup_line(); |
|
|
int |
int |
nextc() |
nextc() |
{ |
{ |
register char *s; |
char *s; |
|
|
if (line == 0) |
if (line == 0) |
{ |
{ |
|
|
int |
int |
keyword() |
keyword() |
{ |
{ |
register int c; |
int c; |
char *t_cptr = cptr; |
char *t_cptr = cptr; |
|
|
c = *++cptr; |
c = *++cptr; |
|
|
void |
void |
copy_ident() |
copy_ident() |
{ |
{ |
register int c; |
int c; |
register FILE *f = output_file; |
FILE *f = output_file; |
|
|
c = nextc(); |
c = nextc(); |
if (c == EOF) unexpected_EOF(); |
if (c == EOF) unexpected_EOF(); |
|
|
void |
void |
copy_text() |
copy_text() |
{ |
{ |
register int c; |
int c; |
int quote; |
int quote; |
register FILE *f = text_file; |
FILE *f = text_file; |
int need_newline = 0; |
int need_newline = 0; |
int t_lineno = lineno; |
int t_lineno = lineno; |
char *t_line = dup_line(); |
char *t_line = dup_line(); |
|
|
void |
void |
copy_union() |
copy_union() |
{ |
{ |
register int c; |
int c; |
int quote; |
int quote; |
int depth; |
int depth; |
int u_lineno = lineno; |
int u_lineno = lineno; |
|
|
bucket * |
bucket * |
get_literal() |
get_literal() |
{ |
{ |
register int c, quote; |
int c, quote; |
register int i; |
int i; |
register int n; |
int n; |
register char *s; |
char *s; |
register bucket *bp; |
bucket *bp; |
int s_lineno = lineno; |
int s_lineno = lineno; |
char *s_line = dup_line(); |
char *s_line = dup_line(); |
char *s_cptr = s_line + (cptr - line); |
char *s_cptr = s_line + (cptr - line); |
|
|
bucket * |
bucket * |
get_name() |
get_name() |
{ |
{ |
register int c; |
int c; |
|
|
cinc = 0; |
cinc = 0; |
for (c = *cptr; IS_IDENT(c); c = *++cptr) |
for (c = *cptr; IS_IDENT(c); c = *++cptr) |
|
|
int |
int |
get_number() |
get_number() |
{ |
{ |
register int c; |
int c; |
register int n; |
int n; |
|
|
n = 0; |
n = 0; |
for (c = *cptr; isdigit(c); c = *++cptr) |
for (c = *cptr; isdigit(c); c = *++cptr) |
|
|
char * |
char * |
get_tag() |
get_tag() |
{ |
{ |
register int c; |
int c; |
register int i; |
int i; |
register char *s; |
char *s; |
int t_lineno = lineno; |
int t_lineno = lineno; |
char *t_line = dup_line(); |
char *t_line = dup_line(); |
char *t_cptr = t_line + (cptr - line); |
char *t_cptr = t_line + (cptr - line); |
|
|
declare_tokens(assoc) |
declare_tokens(assoc) |
int assoc; |
int assoc; |
{ |
{ |
register int c; |
int c; |
register bucket *bp; |
bucket *bp; |
int value; |
int value; |
char *tag = 0; |
char *tag = 0; |
|
|
|
|
declare_expect(assoc) |
declare_expect(assoc) |
int assoc; |
int assoc; |
{ |
{ |
register int c; |
int c; |
|
|
if (assoc != EXPECT) ++prec; |
if (assoc != EXPECT) ++prec; |
|
|
|
|
void |
void |
declare_types() |
declare_types() |
{ |
{ |
register int c; |
int c; |
register bucket *bp; |
bucket *bp; |
char *tag; |
char *tag; |
|
|
c = nextc(); |
c = nextc(); |
|
|
void |
void |
declare_start() |
declare_start() |
{ |
{ |
register int c; |
int c; |
register bucket *bp; |
bucket *bp; |
|
|
c = nextc(); |
c = nextc(); |
if (c == EOF) unexpected_EOF(); |
if (c == EOF) unexpected_EOF(); |
|
|
void |
void |
read_declarations() |
read_declarations() |
{ |
{ |
register int c, k; |
int c, k; |
|
|
cache_size = 256; |
cache_size = 256; |
cache = MALLOC(cache_size); |
cache = MALLOC(cache_size); |
|
|
void |
void |
advance_to_start() |
advance_to_start() |
{ |
{ |
register int c; |
int c; |
register bucket *bp; |
bucket *bp; |
char *s_cptr; |
char *s_cptr; |
int s_lineno; |
int s_lineno; |
|
|
|
|
|
|
void |
void |
start_rule(bp, s_lineno) |
start_rule(bp, s_lineno) |
register bucket *bp; |
bucket *bp; |
int s_lineno; |
int s_lineno; |
{ |
{ |
if (bp->class == TERM) |
if (bp->class == TERM) |
|
|
void |
void |
end_rule() |
end_rule() |
{ |
{ |
register int i; |
int i; |
|
|
if (!last_was_action && plhs[nrules]->tag) |
if (!last_was_action && plhs[nrules]->tag) |
{ |
{ |
|
|
void |
void |
insert_empty_rule() |
insert_empty_rule() |
{ |
{ |
register bucket *bp, **bpp; |
bucket *bp, **bpp; |
|
|
assert(cache); |
assert(cache); |
sprintf(cache, "$$%d", ++gensym); |
sprintf(cache, "$$%d", ++gensym); |
|
|
void |
void |
add_symbol() |
add_symbol() |
{ |
{ |
register int c; |
int c; |
register bucket *bp; |
bucket *bp; |
int s_lineno = lineno; |
int s_lineno = lineno; |
|
|
c = *cptr; |
c = *cptr; |
|
|
void |
void |
copy_action() |
copy_action() |
{ |
{ |
register int c; |
int c; |
register int i, n; |
int i, n; |
int depth; |
int depth; |
int quote; |
int quote; |
char *tag; |
char *tag; |
register FILE *f = action_file; |
FILE *f = action_file; |
int a_lineno = lineno; |
int a_lineno = lineno; |
char *a_line = dup_line(); |
char *a_line = dup_line(); |
char *a_cptr = a_line + (cptr - line); |
char *a_cptr = a_line + (cptr - line); |
|
|
int |
int |
mark_symbol() |
mark_symbol() |
{ |
{ |
register int c; |
int c; |
register bucket *bp; |
bucket *bp; |
|
|
c = cptr[1]; |
c = cptr[1]; |
if (c == '%' || c == '\\') |
if (c == '%' || c == '\\') |
|
|
void |
void |
read_grammar() |
read_grammar() |
{ |
{ |
register int c; |
int c; |
|
|
initialize_grammar(); |
initialize_grammar(); |
advance_to_start(); |
advance_to_start(); |
|
|
void |
void |
free_tags() |
free_tags() |
{ |
{ |
register int i; |
int i; |
|
|
if (tag_table == 0) return; |
if (tag_table == 0) return; |
|
|
|
|
void |
void |
pack_names() |
pack_names() |
{ |
{ |
register bucket *bp; |
bucket *bp; |
register char *p, *s, *t; |
char *p, *s, *t; |
|
|
name_pool_size = 13; /* 13 == sizeof("$end") + sizeof("$accept") */ |
name_pool_size = 13; /* 13 == sizeof("$end") + sizeof("$accept") */ |
for (bp = first_symbol; bp; bp = bp->next) |
for (bp = first_symbol; bp; bp = bp->next) |
|
|
void |
void |
check_symbols() |
check_symbols() |
{ |
{ |
register bucket *bp; |
bucket *bp; |
|
|
if (goal->class == UNKNOWN) |
if (goal->class == UNKNOWN) |
undefined_goal(goal->name); |
undefined_goal(goal->name); |
|
|
void |
void |
pack_symbols() |
pack_symbols() |
{ |
{ |
register bucket *bp; |
bucket *bp; |
register bucket **v; |
bucket **v; |
register int i, j, k, n; |
int i, j, k, n; |
|
|
nsyms = 2; |
nsyms = 2; |
ntokens = 1; |
ntokens = 1; |
|
|
void |
void |
pack_grammar() |
pack_grammar() |
{ |
{ |
register int i, j; |
int i, j; |
int assoc, prec; |
int assoc, prec; |
|
|
ritem = (short *) MALLOC(nitems*sizeof(short)); |
ritem = (short *) MALLOC(nitems*sizeof(short)); |
|
|
void |
void |
print_grammar() |
print_grammar() |
{ |
{ |
register int i, j, k; |
int i, j, k; |
int spacing; |
int spacing; |
register FILE *f = verbose_file; |
FILE *f = verbose_file; |
|
|
if (!vflag) return; |
if (!vflag) return; |
|
|