]> Dogcows Code - chaz/openbox/blob - util/epist/epist.y
add manpages for epist and for xftlsfonts
[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
24
25 %%
26
27 commands:
28 | commands command
29 ;
30
31 command:
32 action_command | chain_command
33 ;
34
35 action_command:
36 binding WORD parameter SEMICOLON
37 {
38 ((parser*)parser_obj)->setAction($2);
39 ((parser*)parser_obj)->endAction();
40 }
41
42 ;
43
44 chain_command:
45 binding obrace commands ebrace
46 {
47 ((parser*)parser_obj)->endChain();
48 }
49 ;
50
51 binding:
52 binding_w_modifier bind_key
53 ;
54
55 obrace:
56 OBRACE { ((parser*)parser_obj)->startChain(); }
57 ;
58
59 ebrace:
60 EBRACE { /* ((parser*)parser_obj)->endChain(); */ }
61 ;
62
63 binding_w_modifier:
64 | BINDING DASH binding_w_modifier { ((parser*)parser_obj)->addModifier($1); }
65 ;
66
67 bind_key:
68 OBRACE { ((parser*)parser_obj)->setKey($1); }
69 | EBRACE { ((parser*)parser_obj)->setKey($1); }
70 | DASH { ((parser*)parser_obj)->setKey($1); }
71 | SEMICOLON { ((parser*)parser_obj)->setKey($1); }
72 | NUMBER { ((parser*)parser_obj)->setKey($1); }
73 | WORD { ((parser*)parser_obj)->setKey($1); }
74 ;
75
76 parameter:
77 | NUMBER { ((parser*)parser_obj)->setArgumentNum($1); }
78 | DASH NUMBER { ((parser*)parser_obj)->setArgumentNegNum($2); }
79 | QUOTES { ((parser*)parser_obj)->setArgumentStr($1); }
80 ;
81
82 %%
83
This page took 0.035914 seconds and 4 git commands to generate.