mirror of
https://github.com/ascii-boxes/boxes.git
synced 2025-06-20 09:48:12 +02:00
Adden YPADDING and YNUMBER tokens plus code for padding blocks
This commit is contained in:
parent
d1079fdf7f
commit
7d265b2273
67
src/parser.y
67
src/parser.y
@ -4,7 +4,7 @@
|
|||||||
* Date created: March 16, 1999 (Tuesday, 17:17h)
|
* Date created: March 16, 1999 (Tuesday, 17:17h)
|
||||||
* Author: Thomas Jensen
|
* Author: Thomas Jensen
|
||||||
* tsjensen@stud.informatik.uni-erlangen.de
|
* tsjensen@stud.informatik.uni-erlangen.de
|
||||||
* Version: $Id: parser.y,v 1.9 1999/06/14 12:13:01 tsjensen Exp tsjensen $
|
* Version: $Id: parser.y,v 1.10 1999/06/17 19:04:45 tsjensen Exp tsjensen $
|
||||||
* Language: yacc (ANSI C)
|
* Language: yacc (ANSI C)
|
||||||
* Purpose: Yacc parser for boxes configuration files
|
* Purpose: Yacc parser for boxes configuration files
|
||||||
* Remarks: ---
|
* Remarks: ---
|
||||||
@ -12,6 +12,10 @@
|
|||||||
* Revision History:
|
* Revision History:
|
||||||
*
|
*
|
||||||
* $Log: parser.y,v $
|
* $Log: parser.y,v $
|
||||||
|
* Revision 1.10 1999/06/17 19:04:45 tsjensen
|
||||||
|
* Added detection of empty sample blocks (we don't want that)
|
||||||
|
* Added detection of duplicate sample blocks
|
||||||
|
*
|
||||||
* Revision 1.9 1999/06/14 12:13:01 tsjensen
|
* Revision 1.9 1999/06/14 12:13:01 tsjensen
|
||||||
* Added YREVERSE token
|
* Added YREVERSE token
|
||||||
* Added code for regexp reversion
|
* Added code for regexp reversion
|
||||||
@ -56,7 +60,7 @@
|
|||||||
#include "boxes.h"
|
#include "boxes.h"
|
||||||
|
|
||||||
const char rcsid_parser_y[] =
|
const char rcsid_parser_y[] =
|
||||||
"$Id: parser.y,v 1.9 1999/06/14 12:13:01 tsjensen Exp tsjensen $";
|
"$Id: parser.y,v 1.10 1999/06/17 19:04:45 tsjensen Exp tsjensen $";
|
||||||
|
|
||||||
|
|
||||||
static int pflicht = 0;
|
static int pflicht = 0;
|
||||||
@ -281,13 +285,15 @@ int perform_se_check()
|
|||||||
char c;
|
char c;
|
||||||
shape_t shape;
|
shape_t shape;
|
||||||
sentry_t sentry;
|
sentry_t sentry;
|
||||||
|
int num;
|
||||||
}
|
}
|
||||||
|
|
||||||
%token YSHAPES YELASTIC YSAMPLE YREPLACE YREVERSE
|
%token YSHAPES YELASTIC YSAMPLE YREPLACE YREVERSE YPADDING
|
||||||
%token <s> KEYWORD
|
%token <s> KEYWORD
|
||||||
%token <s> WORD
|
%token <s> WORD
|
||||||
%token <s> STRING
|
%token <s> STRING
|
||||||
%token <shape> SHAPE
|
%token <shape> SHAPE
|
||||||
|
%token <num> YNUMBER
|
||||||
|
|
||||||
%type <sentry> slist
|
%type <sentry> slist
|
||||||
%type <sentry> slist_entries
|
%type <sentry> slist_entries
|
||||||
@ -577,6 +583,17 @@ block: YSAMPLE '{' STRING '}'
|
|||||||
designs[design_idx].revrules[a].mode = $2;
|
designs[design_idx].revrules[a].mode = $2;
|
||||||
designs[design_idx].anz_revrules = a + 1;
|
designs[design_idx].anz_revrules = a + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
| YPADDING '{' wlist '}'
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf (stderr, "Padding set to (l%d o%d r%d u%d)\n",
|
||||||
|
designs[design_idx].padding[BLEF],
|
||||||
|
designs[design_idx].padding[BTOP],
|
||||||
|
designs[design_idx].padding[BRIG],
|
||||||
|
designs[design_idx].padding[BBOT]);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
@ -686,6 +703,50 @@ slist: '(' slist_entries ')'
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
wlist: wlist wlist_entry | wlist_entry;
|
||||||
|
|
||||||
|
wlist_entry: WORD YNUMBER
|
||||||
|
{
|
||||||
|
if ($2 < 0) {
|
||||||
|
yyerror ("warning: padding must be a positive number (%s %d) -- "
|
||||||
|
"ignore", $1, $2);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
size_t len1 = strlen ($1);
|
||||||
|
if (len1 <= 3 && !strncasecmp ("all", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BTOP] = $2;
|
||||||
|
designs[design_idx].padding[BBOT] = $2;
|
||||||
|
designs[design_idx].padding[BLEF] = $2;
|
||||||
|
designs[design_idx].padding[BRIG] = $2;
|
||||||
|
}
|
||||||
|
else if (len1 <= 10 && !strncasecmp ("horizontal", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BRIG] = $2;
|
||||||
|
designs[design_idx].padding[BLEF] = $2;
|
||||||
|
}
|
||||||
|
else if (len1 <= 8 && !strncasecmp ("vertical", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BTOP] = $2;
|
||||||
|
designs[design_idx].padding[BBOT] = $2;
|
||||||
|
}
|
||||||
|
else if (len1 <= 3 && !strncasecmp ("top", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BTOP] = $2;
|
||||||
|
}
|
||||||
|
else if (len1 <= 5 && !strncasecmp ("right", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BRIG] = $2;
|
||||||
|
}
|
||||||
|
else if (len1 <= 4 && !strncasecmp ("left", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BLEF] = $2;
|
||||||
|
}
|
||||||
|
else if (len1 <= 6 && !strncasecmp ("bottom", $1, len1)) {
|
||||||
|
designs[design_idx].padding[BBOT] = $2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
yyerror ("warning: invalid padding area %s -- ignore", $1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
slist_entries: slist_entries ',' STRING
|
slist_entries: slist_entries ',' STRING
|
||||||
{
|
{
|
||||||
sentry_t rval = $1;
|
sentry_t rval = $1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user