]> git.sur5r.net Git - i3/i3/blob - src/cfgparse.l
c11028a6ef25448133c3afc3a7d8feda6f97bbeb
[i3/i3] / src / cfgparse.l
1 %{
2 #include <stdio.h>
3 #include "cfgparse.tab.h"
4 #include <xcb/xcb.h>
5
6 #include "data.h"
7
8 %}
9
10 %Start BIND_COND BIND_AWS_COND BIND_A2WS_COND ASSIGN_COND COLOR_COND
11
12 %%
13 <BIND_A2WS_COND>[^\n]+  { BEGIN(INITIAL); yylval.string = strdup(yytext); return STR; }
14 #[^\n]*                 return TOKCOMMENT;
15 [0-9]+                  yylval.number = atoi(yytext); return NUMBER;
16 <COLOR_COND>[0-9a-fA-F]+                { yylval.string = strdup(yytext); return HEX; }
17 bind                    { BEGIN(BIND_COND); return TOKBIND; }
18 bindsym                 { BEGIN(BIND_COND); return TOKBINDSYM; }
19 floating_modifier       return TOKFLOATING_MODIFIER;
20 workspace               return TOKWORKSPACE;
21 screen                  return TOKSCREEN;
22 terminal                { BEGIN(BIND_AWS_COND); return TOKTERMINAL; }
23 font                    { BEGIN(BIND_AWS_COND); return TOKFONT; }
24 assign                  { BEGIN(ASSIGN_COND); return TOKASSIGN; }
25 set                     { BEGIN(BIND_COND); return TOKSET; }
26 ipc-socket              { BEGIN(BIND_AWS_COND); return TOKIPCSOCKET; }
27 exec                    { BEGIN(BIND_AWS_COND); return TOKEXEC; }
28 client.focused          { BEGIN(COLOR_COND); /* TODO: lval pointer */ return TOKCOLOR; }
29 Mod1                    yylval.number = BIND_MOD1; return MODIFIER;
30 Mod2                    yylval.number = BIND_MOD2; return MODIFIER;
31 Mod3                    yylval.number = BIND_MOD3; return MODIFIER;
32 Mod4                    yylval.number = BIND_MOD4; return MODIFIER;
33 Mod5                    yylval.number = BIND_MOD5; return MODIFIER;
34 control                 return TOKCONTROL;
35 shift                   return TOKSHIFT;
36 →                     return TOKARROW;
37 \n                      /* ignore end of line */;
38 <BIND_COND>[ \t]+       { BEGIN(BIND_AWS_COND); return WHITESPACE; }
39 <BIND_AWS_COND>[ \t]+   { BEGIN(BIND_A2WS_COND); return WHITESPACE; }
40 [ \t]+                  return WHITESPACE;
41 <ASSIGN_COND>[^ \t]+    { BEGIN(INITIAL); yylval.string = strdup(yytext); return STR_NG; }
42 [a-zA-Z]+               yylval.string = strdup(yytext); return WORD;
43 [a-zA-Z0-9_-]+          yylval.string = strdup(yytext); return VARNAME;
44 \"[^\"]+\"              {
45                                 /* yylval will be the string, but without quotes */
46                                 char *copy = strdup(yytext+1);
47                                 copy[strlen(copy)-1] = '\0';
48                                 yylval.string = copy;
49                                 return QUOTEDSTRING;
50                         }
51 .               return (int) yytext[0];
52 %%