*** empty log message ***
This commit is contained in:
parent
7c6ce84c3f
commit
baeb6c45b9
99
parser.y
99
parser.y
@ -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 ';'
|
||||
|
||||
29
scanner.l
29
scanner.l
@ -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 ); }
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user