change 'format' to 'label', add character type, track bookmark level.

Tue, 01 Jan 2002 03:46:08 +0000

author
eric
date
Tue, 01 Jan 2002 03:46:08 +0000
changeset 27
7a28031fe457
parent 26
4368c5fd9242
child 28
ba8313d18bd3

change 'format' to 'label', add character type, track bookmark level.

parser.y file | annotate | diff | revisions
scanner.l file | annotate | diff | revisions
     1.1 diff -r 4368c5fd9242 -r 7a28031fe457 parser.y
     1.2 --- a/parser.y	Tue Jan 01 03:44:40 2002 +0000
     1.3 +++ b/parser.y	Tue Jan 01 03:46:08 2002 +0000
     1.4 @@ -6,15 +6,18 @@
     1.5  
     1.6  %union {
     1.7    int integer;
     1.8 +  char character;
     1.9    double fp;
    1.10    char *string;
    1.11    page_size_t size;
    1.12    range_t range;
    1.13 +  page_label_t page_label;
    1.14  }
    1.15  
    1.16  %token <integer> INTEGER
    1.17  %token <fp> FLOAT
    1.18  %token <string> STRING
    1.19 +%token <character> CHARACTER
    1.20  %token <size> PAGE_SIZE
    1.21  
    1.22  %token ELIPSIS
    1.23 @@ -38,7 +41,7 @@
    1.24  %token RESOLUTION
    1.25  %token INPUT
    1.26  
    1.27 -%token FORMAT
    1.28 +%token LABEL
    1.29  %token PAGE
    1.30  %token PAGES
    1.31  %token BOOKMARK
    1.32 @@ -151,8 +154,11 @@
    1.33  output_file_clause:
    1.34  	FILE_KEYWORD STRING  ';' { output_set_file ($2) } ;
    1.35  
    1.36 -format_clause:
    1.37 -	FORMAT STRING ';' { output_set_page_number_format ($2) } ;
    1.38 +label_clause:
    1.39 +	LABEL ';' { page_label_t label = { NULL, '\0' }; output_set_page_label (label); }
    1.40 +	| LABEL STRING ';' { page_label_t label = { $2, '\0' }; output_set_page_label (label); }
    1.41 +	| LABEL CHARACTER ';' { page_label_t label = { NULL, $2 }; output_set_page_label (label); }
    1.42 +	| LABEL STRING ',' CHARACTER ';' { page_label_t label = { $2, $4 }; output_set_page_label (label); } ;
    1.43  
    1.44  page_ranges:
    1.45  	range { output_pages ($1); }
    1.46 @@ -172,13 +178,13 @@
    1.47  	| bookmark_name_list ',' bookmark_name ;
    1.48  
    1.49  bookmark_clause:
    1.50 -	BOOKMARK { output_push_context (); }
    1.51 +	BOOKMARK { output_push_context (); bookmark_level++; }
    1.52  	bookmark_name_list
    1.53 -	output_clause_list ';' { output_pop_context (); } ;
    1.54 +	output_clause_list ';' { bookmark_level--; output_pop_context (); } ;
    1.55  
    1.56  output_clause:
    1.57  	output_file_clause
    1.58 -	| format_clause
    1.59 +	| label_clause
    1.60  	| page_clause | pages_clause
    1.61  	| bookmark_clause
    1.62  	| output_clause_list ;
     2.1 diff -r 4368c5fd9242 -r 7a28031fe457 scanner.l
     2.2 --- a/scanner.l	Tue Jan 01 03:44:40 2002 +0000
     2.3 +++ b/scanner.l	Tue Jan 01 03:46:08 2002 +0000
     2.4 @@ -1,5 +1,5 @@
     2.5  /*
     2.6 -$Id: scanner.l,v 1.11 2001/12/30 23:25:08 eric Exp $
     2.7 +$Id: scanner.l,v 1.12 2001/12/31 19:46:08 eric Exp $
     2.8  */
     2.9  
    2.10  %option case-insensitive
    2.11 @@ -54,11 +54,11 @@
    2.12  crop		{ return (CROP); }
    2.13  even		{ return (EVEN); }
    2.14  file		{ return (FILE_KEYWORD); }
    2.15 -format		{ return (FORMAT); }
    2.16  image		{ return (IMAGE); }
    2.17  images		{ return (IMAGES); }
    2.18  inch		{ return (INCH); }
    2.19  input		{ return (INPUT); }
    2.20 +label		{ return (LABEL); }
    2.21  landscape	{ return (LANDSCAPE); }
    2.22  odd		{ return (ODD); }
    2.23  output		{ return (OUTPUT); }
    2.24 @@ -69,7 +69,12 @@
    2.25  rotate		{ return (ROTATE); }
    2.26  size		{ return (SIZE); }
    2.27  
    2.28 -\"[^\n"]*\"		{ 
    2.29 +'[^\n']'	{
    2.30 +		  yylval.character = yytext [1];
    2.31 +		  return (CHARACTER);
    2.32 +		}
    2.33 +
    2.34 +\"[^\n"]*\"	{
    2.35                    int len = strlen (yytext) - 2;
    2.36                    yylval.string = malloc (len + 1);
    2.37                    memcpy (yylval.string, yytext + 1, len);