1
0
mirror of synced 2026-04-16 08:36:20 +00:00

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

This commit is contained in:
Eric Smith
2002-01-01 03:46:08 +00:00
parent 15a0a3d8ea
commit c9d179a17e
2 changed files with 20 additions and 9 deletions

View File

@@ -6,15 +6,18 @@
%union {
int integer;
char character;
double fp;
char *string;
page_size_t size;
range_t range;
page_label_t page_label;
}
%token <integer> INTEGER
%token <fp> FLOAT
%token <string> STRING
%token <character> CHARACTER
%token <size> PAGE_SIZE
%token ELIPSIS
@@ -38,7 +41,7 @@
%token RESOLUTION
%token INPUT
%token FORMAT
%token LABEL
%token PAGE
%token PAGES
%token BOOKMARK
@@ -151,8 +154,11 @@ input_statement:
output_file_clause:
FILE_KEYWORD STRING ';' { output_set_file ($2) } ;
format_clause:
FORMAT STRING ';' { output_set_page_number_format ($2) } ;
label_clause:
LABEL ';' { page_label_t label = { NULL, '\0' }; output_set_page_label (label); }
| LABEL STRING ';' { page_label_t label = { $2, '\0' }; output_set_page_label (label); }
| LABEL CHARACTER ';' { page_label_t label = { NULL, $2 }; output_set_page_label (label); }
| LABEL STRING ',' CHARACTER ';' { page_label_t label = { $2, $4 }; output_set_page_label (label); } ;
page_ranges:
range { output_pages ($1); }
@@ -172,13 +178,13 @@ bookmark_name_list:
| bookmark_name_list ',' bookmark_name ;
bookmark_clause:
BOOKMARK { output_push_context (); }
BOOKMARK { output_push_context (); bookmark_level++; }
bookmark_name_list
output_clause_list ';' { output_pop_context (); } ;
output_clause_list ';' { bookmark_level--; output_pop_context (); } ;
output_clause:
output_file_clause
| format_clause
| label_clause
| page_clause | pages_clause
| bookmark_clause
| output_clause_list ;

View File

@@ -1,5 +1,5 @@
/*
$Id: scanner.l,v 1.11 2001/12/30 23:25:08 eric Exp $
$Id: scanner.l,v 1.12 2001/12/31 19:46:08 eric Exp $
*/
%option case-insensitive
@@ -54,11 +54,11 @@ cm { return (CM); }
crop { return (CROP); }
even { return (EVEN); }
file { return (FILE_KEYWORD); }
format { return (FORMAT); }
image { return (IMAGE); }
images { return (IMAGES); }
inch { return (INCH); }
input { return (INPUT); }
label { return (LABEL); }
landscape { return (LANDSCAPE); }
odd { return (ODD); }
output { return (OUTPUT); }
@@ -69,7 +69,12 @@ resolution { return (RESOLUTION) ; }
rotate { return (ROTATE); }
size { return (SIZE); }
\"[^\n"]*\" {
'[^\n']' {
yylval.character = yytext [1];
return (CHARACTER);
}
\"[^\n"]*\" {
int len = strlen (yytext) - 2;
yylval.string = malloc (len + 1);
memcpy (yylval.string, yytext + 1, len);