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