diff options
Diffstat (limited to 'src/build.y')
| -rw-r--r-- | src/build.y | 18 | 
1 files changed, 13 insertions, 5 deletions
| diff --git a/src/build.y b/src/build.y index 1621dbc..1424867 100644 --- a/src/build.y +++ b/src/build.y | |||
| @@ -16,11 +16,10 @@ void yyerror( YYLTYPE *locp, Builder &bld, char const *msg ); | |||
| 16 | %error-verbose | 16 | %error-verbose | 
| 17 | %union { | 17 | %union { | 
| 18 | char *strval; | 18 | char *strval; | 
| 19 | int tval; | ||
| 20 | } | 19 | } | 
| 21 | 20 | ||
| 22 | %token <strval> STRING "string literal" | 21 | %token <strval> STRING "string literal" | 
| 23 | %token <tval> TARGETTYPE "target type" | 22 | %token <strval> TARGETTYPE "target type" | 
| 24 | %token <strval> FUNCTION "function name" | 23 | %token <strval> FUNCTION "function name" | 
| 25 | %token <strval> PERFORM "perform name" | 24 | %token <strval> PERFORM "perform name" | 
| 26 | 25 | ||
| @@ -51,6 +50,7 @@ input: | |||
| 51 | | input rule | 50 | | input rule | 
| 52 | | input action | 51 | | input action | 
| 53 | | input target | 52 | | input target | 
| 53 | | input set | ||
| 54 | ; | 54 | ; | 
| 55 | 55 | ||
| 56 | // Rule interpretation | 56 | // Rule interpretation | 
| @@ -61,7 +61,7 @@ rulecmds: rulecmd | |||
| 61 | | rulecmds ',' rulecmd | 61 | | rulecmds ',' rulecmd | 
| 62 | ; | 62 | ; | 
| 63 | 63 | ||
| 64 | rulecmd: TOK_MATCHES { printf(" Matches: " ); } func | 64 | rulecmd: TOK_MATCHES { printf(" Matches: " ); } func { printf("\n"); } | 
| 65 | | TOK_PRODUCES STRING { printf(" Produces: %s\n", $2 ); } | 65 | | TOK_PRODUCES STRING { printf(" Produces: %s\n", $2 ); } | 
| 66 | | TOK_REQUIRES { printf(" Requires:\n"); } list {printf("\n");} | 66 | | TOK_REQUIRES { printf(" Requires:\n"); } list {printf("\n");} | 
| 67 | | TOK_INPUT TOK_FILTER { printf(" Input Filter: "); } func {printf("\n");} | 67 | | TOK_INPUT TOK_FILTER { printf(" Input Filter: "); } func {printf("\n");} | 
| @@ -94,9 +94,9 @@ targetcmds: targetcmd | |||
| 94 | 94 | ||
| 95 | targetcmd: TOK_RULE STRING { printf(" Rule %s\n", $2 ); } | 95 | targetcmd: TOK_RULE STRING { printf(" Rule %s\n", $2 ); } | 
| 96 | | TOK_TARGET TOK_PREFIX STRING { printf(" Target prefix: %s\n", $3 ); } | 96 | | TOK_TARGET TOK_PREFIX STRING { printf(" Target prefix: %s\n", $3 ); } | 
| 97 | | TOK_TARGET TARGETTYPE { printf(" Target Type: %d\n", $2 ); } | 97 | | TOK_TARGET TARGETTYPE { printf(" Target Type: %s\n", $2 ); } | 
| 98 | | TOK_INPUT { printf(" Input: "); } list { printf("\n"); } | 98 | | TOK_INPUT { printf(" Input: "); } list { printf("\n"); } | 
| 99 | | TOK_INPUT TOK_FILTER { printf(" Input filter: "); } func | 99 | | TOK_INPUT TOK_FILTER { printf(" Input filter: "); } func { printf("\n"); } | 
| 100 | | TOK_REQUIRES { printf(" Requires: "); } list { printf("\n"); } | 100 | | TOK_REQUIRES { printf(" Requires: "); } list { printf("\n"); } | 
| 101 | | TOK_SET { printf(" Set: "); } targetset | 101 | | TOK_SET { printf(" Set: "); } targetset | 
| 102 | ; | 102 | ; | 
| @@ -105,6 +105,14 @@ targetset: STRING '=' STRING { printf("%s = %s\n", $1, $3 ); } | |||
| 105 | | STRING TOK_ADDSET STRING { printf("%s += %s\n", $1, $3 ); } | 105 | | STRING TOK_ADDSET STRING { printf("%s += %s\n", $1, $3 ); } | 
| 106 | ; | 106 | ; | 
| 107 | 107 | ||
| 108 | // global set | ||
| 109 | set: TOK_SET { printf("Set: "); } setwhat | ||
| 110 | ; | ||
| 111 | |||
| 112 | setwhat: STRING '=' STRING { printf("%s = %s\n", $1, $3 ); } | ||
| 113 | | STRING TOK_ADDSET STRING { printf("%s += %s\n", $1, $3 ); } | ||
| 114 | ; | ||
| 115 | |||
| 108 | // list goo | 116 | // list goo | 
| 109 | list: listitem listfilter | 117 | list: listitem listfilter | 
| 110 | | '[' { printf("["); } listitems ']' { printf("]"); } listfilter | 118 | | '[' { printf("["); } listitems ']' { printf("]"); } listfilter | 
