1
0
mirror of synced 2026-01-13 15:27:55 +00:00

*** empty log message ***

This commit is contained in:
Eric Smith 2001-12-29 10:19:49 +00:00
parent 7c6ce84c3f
commit baeb6c45b9
2 changed files with 111 additions and 17 deletions

View File

@ -6,20 +6,29 @@
int integer;
double fp;
char *string;
struct { double width, double height } size;
}
%token <integer> INTEGER
%token <fp> FLOAT
%token <string> STRING
%token <size> PAGE_SIZE
%token ELIPSIS
%token CM
%token INCH
%token EVEN
%token ODD
%token ALL
%token PORTRAIT
%token LANDSCAPE
%token FILE
%token IMAGE
%token IMAGES
%token ROTATE
%token CROP
%token SIZE
@ -30,48 +39,96 @@
%token BOOKMARK
%token OUTPUT
%type <integer> range
%type <integer> ranges
%type <integer> image_range
%type <integer> image_ranges
%type <integer> page_range
%type <integer> page_ranges
%type <fp> length
%%
statements: statement | statements statement ;
statements:
statement
| statements statement ;
statement: input_statement | output_statement ;
statement:
input_statement
| output_statement ;
range: INTEGER ELIPSIS INTEGER
image_range:
INTEGER ELIPSIS INTEGER
| INTEGER ;
ranges: range
| ranges ',' range ;
image_ranges:
image_range
| image_ranges ',' image_range ;
file_clause:
FILE STRING ';' ;
image_clause:
IMAGE ranges ';' ;
IMAGE INTEGER ';'
| IMAGE INTEGER modifier_clause_list ';' ;
images_clause:
IMAGES image_ranges ';'
| IMAGES image_ranges modifier_clause_list ';'
| IMAGES image_ranges part_clauses ';' ;
rotate_clause:
ROTATE INTEGER ';' ;
unit:
CM
| INCH ;
length:
FLOAT
| FLOAT unit ;
crop_clause:
CROP FLOAT ',' FLOAT ';' ;
CROP PAGE_SIZE ';'
| CROP PAGE_SIZE orientation ';'
| CROP length ',' length ';'
| CROP length ',' length ',' length ',' length ';' ;
orientation:
PORTRAIT
| LANDSCAPE ;
size_clause:
SIZE FLOAT ',' FLOAT ';' ;
SIZE PAGE_SIZE ';'
| SIZE PAGE_SIZE orientation ';'
| SIZE length ',' length ';' ;
modifier_clause:
rotate_clause | crop_clause | size_clause;
modifier_clauses:
modifier_clause
| modifier_clauses modifier_clause;
modifier_clause_list:
'{' modifier_clauses '}' ;
part:
EVEN | ODD | ALL ;
part_clause:
part input_clause ;
part modifier_clause_list;
part_clauses:
part_clause
| part_clauses part_clause;
input_clause:
part_clause
| file_clause | image_clause | rotate_clause
| crop_clause | size_clause
file_clause
| image_clause
| images_clause
| modifier_clause
| input_clause_list ;
input_clauses:
@ -84,13 +141,21 @@ input_clause_list:
input_statement:
INPUT input_clauses ;
page_range:
INTEGER ELIPSIS INTEGER
| INTEGER ;
page_ranges:
page_range
| page_ranges ',' page_range ;
page_clause:
PAGE INTEGER ';'
| PAGE INTEGER ',' STRING ';' ;
| PAGE STRING ',' INTEGER ';' ;
pages_clause:
PAGES ranges ';'
| PAGES ranges ',' STRING ';' ;
PAGES page_ranges ';'
| PAGES STRING ',' page_ranges ';' ;
bookmark_clause:
BOOKMARK INTEGER ',' STRING ';'

View File

@ -14,19 +14,48 @@ alpha [a-zA-Z]
\.\. { return (ELIPSIS); }
{digit}+ { yylval.integer = atoi (yytext); return (INTEGER); }
{digit}+.{digit}* { yylval.float = atof (yytext); return (FLOAT); }
a { yylval.size.width = 8.5 * 25.4;
yylval.size.height = 11.0 * 25.4;
return (PAGE_SIZE); }
b { yylval.size.width = 11.0 * 25.4;
yylval.size.height = 17.0 * 25.4;
return (PAGE_SIZE); }
c { yylval.size.width = 17.0 * 25.4;
yylval.size.height = 22.0 * 25.4;
return (PAGE_SIZE); }
d { yylval.size.width = 22.0 * 25.4;
yylval.size.height = 34.0 * 25.4;
return (PAGE_SIZE); }
e { yylval.size.width = 34.0 * 25.4;
yylval.size.height = 44.0 * 25.4;
return (PAGE_SIZE); }
all { return (ALL); }
bookmark { return (BOOKMARK); }
cm { return (CM); }
crop { return (CROP); }
even { return (EVEN); }
file { return (FILE); }
image { return (IMAGE); }
images { return (IMAGES); }
inch { return (INCH); }
input { return (INPUT); }
landscape { return (LANDSCAPE); }
odd { return (ODD); }
output { return (OUTPUT); }
page { return (PAGE); }
pages { return (PAGES); }
portrait { return (PORTRAIT) ; }
rotate { return (ROTATE); }
size { return (SIZE); }
\".*\" { yylval.string = newstr (yytext); return (STRING); }
[ \t\n]+ /* whitespace */
--.* /* Ada/VHDL style one-line comment */
. { printf( "Unrecognized character: %s\n", yytext ); }