%{
+#ifdef HAVE_CONFIG_H
+# include "../../config.h"
+#endif // HAVE_CONFIG_H
+
#include <stdio.h>
#include <string.h>
#include "parser.hh"
%}
-%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:
;
action_command:
- binding ACTION parameter SEMICOLON
+ binding WORD parameter SEMICOLON
{
((parser*)parser_obj)->setAction($2);
((parser*)parser_obj)->endAction();
}
;
+options_block:
+ options_keyword OBRACE options EBRACE
+ ;
+
binding:
binding_w_modifier bind_key
;
ebrace:
EBRACE { /* ((parser*)parser_obj)->endChain(); */ }
;
-
+
binding_w_modifier:
| BINDING DASH binding_w_modifier { ((parser*)parser_obj)->addModifier($1); }
;
| 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); }
;
%%