From 3b7ed377bc950fdd33ccb7d40fac6fc6a8fbc932 Mon Sep 17 00:00:00 2001 From: dcw <dcw> Date: Fri, 24 Nov 1989 16:12:32 +0000 Subject: [PATCH] fixed print list and print item stuff. --- parser.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/parser.c b/parser.c index 2e8df50..8f4a6e3 100644 --- a/parser.c +++ b/parser.c @@ -13,10 +13,10 @@ * declns = ne-list( decln ) tEOF * decln = tID tEQ shapes tSEMI * shapes = ne-sep-list( shape, tOR ) - * shape = tID [ tOPENBR params tCLOSEBR ] [ list( printitem ) ] + * shape = tID [ tOPENBR params tCLOSEBR ] printlist * params = ne-sep-list( param, tCOMMA ) * param = tID tID - * printitem = tSTR | tNUM + * printlist = list( tSTR | tNUM ) */ @@ -108,7 +108,7 @@ static BOOL parse_shapes( sp ) shapelist *sp; } -/* shape = tID [ tOPENBR params tCLOSEBR ] [ printlist ] */ +/* shape = tID [ tOPENBR params tCLOSEBR ] printlist */ static BOOL parse_shape( tagname, pl, print ) char **tagname; paramlist *pl; printlist *print; { @@ -118,19 +118,17 @@ static BOOL parse_shape( tagname, pl, print ) char **tagname; paramlist *pl; pri MUSTBE( tID, "shape name" ); COPYOF( *tagname, lexidval ); - if( nexttok() != tOPENBR ) + if( nexttok() == tOPENBR ) + { + if( ! parse_params( pl ) ) return FALSE; + + MUSTBE( tCLOSEBR, "')'" ); + } else { ungettok(); - return TRUE; } - if( ! parse_params( pl ) ) return FALSE; - - MUSTBE( tCLOSEBR, "')'" ); - - if( ! parse_printlist( print ) ) return FALSE; - - return TRUE; + return parse_printlist( print ); } @@ -174,9 +172,12 @@ static BOOL parse_printlist( pp ) printlist *pp; static BOOL parse_printitem( item ) printitem *item; { + char *temp; + switch( nexttok() ) { case tSTR: - *item = build_printitem_str( lexidval ); + COPYOF( temp, lexidval ); + *item = build_printitem_str( temp ); return TRUE; case tNUM: *item = build_printitem_num( lexintval ); -- GitLab