X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=util%2Fepist%2Fepist.y;h=d956a4cabc02ce835d6b6f2b67610a18f22fa66a;hb=7cac1f19acf894aaf4470460732574abc158fd78;hp=60fe9aaaa9f88519b3919dc4423f019276202bb5;hpb=6d40002093a5d8e665d4f310ea028d22e93e88cb;p=chaz%2Fopenbox diff --git a/util/epist/epist.y b/util/epist/epist.y index 60fe9aaa..d956a4ca 100644 --- a/util/epist/epist.y +++ b/util/epist/epist.y @@ -20,12 +20,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 %% commands: | commands command + | commands options_block ; command: @@ -33,7 +34,7 @@ command: ; action_command: - binding ACTION parameter SEMICOLON + binding WORD parameter SEMICOLON { ((parser*)parser_obj)->setAction($2); ((parser*)parser_obj)->endAction(); @@ -48,6 +49,10 @@ chain_command: } ; +options_block: + options_keyword OBRACE options EBRACE + ; + binding: binding_w_modifier bind_key ; @@ -59,7 +64,7 @@ obrace: ebrace: EBRACE { /* ((parser*)parser_obj)->endChain(); */ } ; - + binding_w_modifier: | BINDING DASH binding_w_modifier { ((parser*)parser_obj)->addModifier($1); } ; @@ -72,11 +77,24 @@ 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); } + ; + +options_keyword: + OPTIONS + ; + +options: + | options option + ; + +option: + WORD parameter SEMICOLON + { ((parser*)parser_obj)->setOption($1); } ; %%