X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Fepist.y;h=d187e96f0c2f19c5da9222b46b0f83452df40813;hb=b04f5a85d5dd3660207318403cf9e620b48dcc76;hp=60fe9aaaa9f88519b3919dc4423f019276202bb5;hpb=6d40002093a5d8e665d4f310ea028d22e93e88cb;p=chaz%2Fopenbox diff --git a/util/epist/epist.y b/util/epist/epist.y index 60fe9aaa..d187e96f 100644 --- a/util/epist/epist.y +++ b/util/epist/epist.y @@ -1,4 +1,8 @@ %{ +#ifdef HAVE_CONFIG_H +# include "../../config.h" +#endif // HAVE_CONFIG_H + #include #include #include "parser.hh" @@ -20,12 +24,13 @@ void yyerror(const char *c) { %} -%token OBRACE EBRACE SEMICOLON DASH ACTION BINDING NUMBER QUOTES WORD +%token OBRACE EBRACE SEMICOLON DASH NUMBER QUOTES WORD BINDING OPTIONS TRUE FALSE %% commands: | commands command + | commands options_block ; command: @@ -33,7 +38,7 @@ command: ; action_command: - binding ACTION parameter SEMICOLON + binding WORD parameter SEMICOLON { ((parser*)parser_obj)->setAction($2); ((parser*)parser_obj)->endAction(); @@ -48,6 +53,10 @@ chain_command: } ; +options_block: + options_keyword OBRACE options EBRACE + ; + binding: binding_w_modifier bind_key ; @@ -59,7 +68,7 @@ obrace: ebrace: EBRACE { /* ((parser*)parser_obj)->endChain(); */ } ; - + binding_w_modifier: | BINDING DASH binding_w_modifier { ((parser*)parser_obj)->addModifier($1); } ; @@ -72,11 +81,26 @@ bind_key: | NUMBER { ((parser*)parser_obj)->setKey($1); } | WORD { ((parser*)parser_obj)->setKey($1); } ; - + parameter: - | NUMBER { ((parser*)parser_obj)->setArgument($1); } - | DASH NUMBER { ((parser*)parser_obj)->setArgument($1); } - | QUOTES { ((parser*)parser_obj)->setArgument($1); } + | NUMBER { ((parser*)parser_obj)->setArgumentNum($1); } + | DASH NUMBER { ((parser*)parser_obj)->setArgumentNegNum($2); } + | QUOTES { ((parser*)parser_obj)->setArgumentStr($1); } + | TRUE { ((parser*)parser_obj)->setArgumentTrue($1); } + | FALSE { ((parser*)parser_obj)->setArgumentFalse($1); } + ; + +options_keyword: + OPTIONS + ; + +options: + | options option + ; + +option: + WORD parameter SEMICOLON + { ((parser*)parser_obj)->setOption($1); } ; %%