1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
From 301cb9f132017ec67cc00681ca3f7a25f0d24ca2 Mon Sep 17 00:00:00 2001
From: Alexey Gladkov <gladkov.alexey@gmail.com>
Date: Mon, 7 Oct 2013 18:11:45 +0400
Subject: [PATCH] parser: Merge fullline and singleline rule
Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
---
src/libkeymap/parser.y | 59 ++++++++++++++++++++++++-----------------------
1 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/src/libkeymap/parser.y b/src/libkeymap/parser.y
index 627494a..17d953a 100644
--- a/src/libkeymap/parser.y
+++ b/src/libkeymap/parser.y
@@ -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);
--
1.7.3.3
|