parser.y

changeset 11
30d18cf8bb67
parent 9
de78038d990f
child 12
c3e2c2344560
     1.1 diff -r 3184d26a9596 -r 30d18cf8bb67 parser.y
     1.2 --- a/parser.y	Sat Dec 29 17:44:57 2001 +0000
     1.3 +++ b/parser.y	Sat Dec 29 17:45:43 2001 +0000
     1.4 @@ -1,12 +1,15 @@
     1.5  %{
     1.6 -#include <stdio.h>
     1.7 +  #include <stdio.h>
     1.8 +  #include "type.h"
     1.9 +  #include "tiff2pdf.h"
    1.10  %}
    1.11  
    1.12  %union {
    1.13    int integer;
    1.14    double fp;
    1.15    char *string;
    1.16 -  struct { double width, double height } size;
    1.17 +  struct { double width; double height; } size;
    1.18 +  struct { int first; int last; } range;
    1.19  }
    1.20  
    1.21  %token <integer> INTEGER
    1.22 @@ -26,12 +29,13 @@
    1.23  %token PORTRAIT
    1.24  %token LANDSCAPE
    1.25  
    1.26 -%token FILE
    1.27 +%token FILE_KEYWORD
    1.28  %token IMAGE
    1.29  %token IMAGES
    1.30  %token ROTATE
    1.31  %token CROP
    1.32  %token SIZE
    1.33 +%token RESOLUTION
    1.34  %token INPUT
    1.35  
    1.36  %token PAGE
    1.37 @@ -39,10 +43,13 @@
    1.38  %token BOOKMARK
    1.39  %token OUTPUT
    1.40  
    1.41 -%type <integer> image_range
    1.42 -%type <integer> image_ranges
    1.43 -%type <integer> page_range
    1.44 -%type <integer> page_ranges
    1.45 +%type <range> range
    1.46 +%type <range> image_ranges
    1.47 +%type <range> page_ranges
    1.48 +
    1.49 +%type <fp> unit
    1.50 +
    1.51 +
    1.52  
    1.53  %type <fp> length
    1.54  
    1.55 @@ -57,17 +64,17 @@
    1.56  	| output_statement ;
    1.57  
    1.58  
    1.59 -image_range:
    1.60 -	INTEGER ELIPSIS INTEGER
    1.61 -	| INTEGER ;
    1.62 +range:
    1.63 +	INTEGER ELIPSIS INTEGER { $$.first = $1; $$.last = $3; }
    1.64 +	| INTEGER { $$.first = $1; $$.last = $1; } ;
    1.65  
    1.66  image_ranges:
    1.67 -	image_range
    1.68 -	| image_ranges ',' image_range ;
    1.69 +	range
    1.70 +	| image_ranges ',' range ;
    1.71  
    1.72  
    1.73  file_clause:
    1.74 -	FILE STRING  ';' ;
    1.75 +	FILE_KEYWORD STRING  ';' ;
    1.76  
    1.77  image_clause:
    1.78  	IMAGE INTEGER ';'
    1.79 @@ -82,12 +89,12 @@
    1.80  	ROTATE INTEGER ';' ;
    1.81  
    1.82  unit:
    1.83 -	CM
    1.84 -	| INCH ;
    1.85 +	/* empty */  /* default to INCH */ { $$ = 25.4; }
    1.86 +	| CM { $$ = 1.0; }
    1.87 +	| INCH { $$ = 25.4; } ;
    1.88  
    1.89  length:
    1.90 -	FLOAT
    1.91 -	| FLOAT unit ;
    1.92 +	FLOAT unit { $$ = $1 * $2; } ;
    1.93  
    1.94  crop_clause:
    1.95  	CROP PAGE_SIZE ';'
    1.96 @@ -104,8 +111,11 @@
    1.97  	| SIZE PAGE_SIZE orientation ';'
    1.98  	| SIZE length ',' length ';' ;
    1.99  
   1.100 +resolution_clause:
   1.101 +	RESOLUTION FLOAT unit ;
   1.102 +
   1.103  modifier_clause:
   1.104 -	rotate_clause | crop_clause | size_clause;
   1.105 +	rotate_clause | crop_clause | size_clause | resolution_clause;
   1.106  
   1.107  modifier_clauses:
   1.108  	modifier_clause
   1.109 @@ -141,13 +151,9 @@
   1.110  input_statement:
   1.111  	INPUT input_clauses ;
   1.112  
   1.113 -page_range:
   1.114 -	INTEGER ELIPSIS INTEGER
   1.115 -	| INTEGER ;
   1.116 -
   1.117  page_ranges:
   1.118 -	page_range
   1.119 -	| page_ranges ',' page_range ;
   1.120 +	range
   1.121 +	| page_ranges ',' range ;
   1.122  
   1.123  page_clause:
   1.124  	PAGE INTEGER ';'