]> icculus.org git repositories - mikachu/openbox.git/blob - util/epist/epist.y
took out some debug messages
[mikachu/openbox.git] / util / epist / epist.y
1 %{
2 #ifdef    HAVE_CONFIG_H
3 #  include "../../config.h"
4 #endif // HAVE_CONFIG_H
5
6 #include <stdio.h>
7 #include <string.h>
8 #include "parser.hh"
9     
10 #define YYPARSE_PARAM parser_obj
11 #define YYSTYPE char*
12     
13 extern "C" {
14     int yylex();
15     int yywrap() {
16         return 1;
17     }
18 }
19
20 void yyerror(const char *c) {
21     printf("ERROR: %s\n", c);
22 }
23
24
25 %}
26
27 %token OBRACE EBRACE SEMICOLON DASH NUMBER QUOTES WORD BINDING OPTIONS TRUE FALSE
28
29 %%
30
31 commands:
32     | commands command
33     | commands options_block
34     ;
35
36 command:
37     action_command | chain_command
38     ;
39
40 action_command:
41     binding WORD parameter SEMICOLON
42     {
43         ((parser*)parser_obj)->setAction($2);
44         ((parser*)parser_obj)->endAction();
45     }
46     
47     ;
48
49 chain_command:
50     binding obrace commands ebrace
51     {
52         ((parser*)parser_obj)->endChain();
53     }
54     ;
55
56 options_block:
57     options_keyword OBRACE options EBRACE
58     ;
59
60 binding:
61     binding_w_modifier bind_key
62     ;
63
64 obrace:
65     OBRACE { ((parser*)parser_obj)->startChain(); }
66     ;
67
68 ebrace:
69     EBRACE { /* ((parser*)parser_obj)->endChain(); */ }
70     ;
71
72 binding_w_modifier:
73     | BINDING DASH binding_w_modifier { ((parser*)parser_obj)->addModifier($1); }
74     ;
75
76 bind_key:
77     OBRACE       { ((parser*)parser_obj)->setKey($1); }
78     | EBRACE     { ((parser*)parser_obj)->setKey($1); }
79     | DASH       { ((parser*)parser_obj)->setKey($1); }
80     | SEMICOLON  { ((parser*)parser_obj)->setKey($1); }
81     | NUMBER     { ((parser*)parser_obj)->setKey($1); }
82     | WORD       { ((parser*)parser_obj)->setKey($1); }
83     ;
84
85 parameter:
86     | NUMBER      { ((parser*)parser_obj)->setArgumentNum($1); }
87     | DASH NUMBER { ((parser*)parser_obj)->setArgumentNegNum($2); }
88     | QUOTES      { ((parser*)parser_obj)->setArgumentStr($1); }
89     | TRUE        { ((parser*)parser_obj)->setArgumentTrue($1); }
90     | FALSE       { ((parser*)parser_obj)->setArgumentFalse($1); }
91     ;
92
93 options_keyword:
94     OPTIONS
95     ;
96
97 options:
98     | options option
99     ;
100
101 option:
102     WORD parameter SEMICOLON
103     { ((parser*)parser_obj)->setOption($1); }
104     ;
105
106 %%
107