parser: Merge fullline and singleline rule
authorAlexey Gladkov <gladkov.alexey@gmail.com>
Mon, 7 Oct 2013 14:11:45 +0000 (18:11 +0400)
committerAlexey Gladkov <gladkov.alexey@gmail.com>
Mon, 7 Oct 2013 14:13:39 +0000 (18:13 +0400)
Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
src/libkeymap/parser.y

index 627494a..17d953a 100644 (file)
@@ -180,7 +180,6 @@ line                : EOL
                | usualstringsline
                | usualcomposeline
                | keymapline
-               | fullline
                | singleline
                | strline
                 | compline
@@ -281,34 +280,7 @@ compline        : COMPOSE compsym compsym TO compsym EOL
 compsym                : CCHAR         {       $$ = $1;                }
                | UNUMBER       {       $$ = $1 ^ 0xf000;       }
                ;
-singleline     :       {
-                               ctx->mod = 0;
-                       }
-                 modifiers KEYCODE NUMBER EQUALS rvalue EOL
-                       {
-                               if (lk_add_key(ctx, ctx->mod, $4, $6) < 0)
-                                       YYERROR;
-                       }
-               | PLAIN KEYCODE NUMBER EQUALS rvalue EOL
-                       {
-                               if (lk_add_key(ctx, 0, $3, $5) < 0)
-                                       YYERROR;
-                       }
-               ;
-modifiers      : modifiers modifier
-               | modifier
-               ;
-modifier       : SHIFT         { ctx->mod |= M_SHIFT;  }
-               | CONTROL       { ctx->mod |= M_CTRL;   }
-               | ALT           { ctx->mod |= M_ALT;            }
-               | ALTGR         { ctx->mod |= M_ALTGR;  }
-               | SHIFTL        { ctx->mod |= M_SHIFTL; }
-               | SHIFTR        { ctx->mod |= M_SHIFTR; }
-               | CTRLL         { ctx->mod |= M_CTRLL;  }
-               | CTRLR         { ctx->mod |= M_CTRLR;  }
-               | CAPSSHIFT     { ctx->mod |= M_CAPSSHIFT;      }
-               ;
-fullline       : KEYCODE NUMBER EQUALS rvalue0 EOL
+singleline     : KEYCODE NUMBER EQUALS rvalue0 EOL
                        {
                                unsigned int j, i, keycode;
                                int *val;
@@ -367,6 +339,33 @@ fullline   : KEYCODE NUMBER EQUALS rvalue0 EOL
                                        }
                                }
                        }
+
+               | modifiers KEYCODE NUMBER EQUALS rvalue EOL
+                       {
+                               if (lk_add_key(ctx, ctx->mod, $3, $5) < 0)
+                                       YYERROR;
+                               ctx->mod = 0;
+                       }
+               | PLAIN KEYCODE NUMBER EQUALS rvalue EOL
+                       {
+                               if (lk_add_key(ctx, 0, $3, $5) < 0)
+                                       YYERROR;
+                               ctx->mod = 0;
+                       }
+               ;
+modifiers      : modifiers modifier
+               | modifier
+               ;
+modifier       : SHIFT         { ctx->mod |= M_SHIFT;  }
+               | CONTROL       { ctx->mod |= M_CTRL;   }
+               | ALT           { ctx->mod |= M_ALT;            }
+               | ALTGR         { ctx->mod |= M_ALTGR;  }
+               | SHIFTL        { ctx->mod |= M_SHIFTL; }
+               | SHIFTR        { ctx->mod |= M_SHIFTR; }
+               | CTRLL         { ctx->mod |= M_CTRLL;  }
+               | CTRLR         { ctx->mod |= M_CTRLR;  }
+               | CAPSSHIFT     { ctx->mod |= M_CAPSSHIFT;      }
+               ;
                ;
 
 rvalue0                :
@@ -393,6 +392,8 @@ lk_parse_keymap(struct lk_ctx *ctx, lkfile_t *f)
        yyscan_t scanner;
        int rc = -1;
 
+       ctx->mod = 0;
+
        yylex_init(&scanner);
        yylex_init_extra(ctx, &scanner);