Module Name:    src
Committed By:   christos
Date:           Tue Oct 23 01:59:18 UTC 2012

Modified Files:
        src/sbin/wsconsctl: map_parse.y

Log Message:
- remove obsolete = { syntac
- print context for yyerror()
- add a production to clarify a syntax error


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sbin/wsconsctl/map_parse.y

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/wsconsctl/map_parse.y
diff -u src/sbin/wsconsctl/map_parse.y:1.10 src/sbin/wsconsctl/map_parse.y:1.11
--- src/sbin/wsconsctl/map_parse.y:1.10	Sat Aug 27 15:01:34 2011
+++ src/sbin/wsconsctl/map_parse.y	Mon Oct 22 21:59:18 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: map_parse.y,v 1.10 2011/08/27 19:01:34 joerg Exp $ */
+/*	$NetBSD: map_parse.y,v 1.11 2012/10/23 01:59:18 christos Exp $ */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@ ksym_lookup(keysym_t ksym)
 
 %%
 
-program		: = {
+program		: {
 			int i;
 			struct wscons_keymap *mp;
 
@@ -123,7 +123,7 @@ expr		: keysym_expr
 		| keycode_expr
 		;
 
-keysym_expr	: T_KEYSYM keysym_var "=" keysym_var = {
+keysym_expr	: T_KEYSYM keysym_var "=" keysym_var {
 			size_t src, dst;
 
 			dst = ksym_lookup($2);
@@ -134,7 +134,7 @@ keysym_expr	: T_KEYSYM keysym_var "=" ke
 		}
 		;
 
-keycode_expr	: T_KEYCODE T_NUMBER "=" = {
+keycode_expr	: T_KEYCODE T_NUMBER "=" {
 			if ($2 >= KS_NUMKEYCODES)
 				errx(EXIT_FAILURE, "%d: keycode too large", $2);
 			if ((unsigned int)$2 >= newkbmap.maplen)
@@ -144,35 +144,38 @@ keycode_expr	: T_KEYCODE T_NUMBER "=" = 
 		;
 
 keysym_cmd	: /* empty */
-		| T_KEYSYM_CMD_VAR = {
+		| T_KEYSYM_CMD_VAR {
 			cur_mp->command = $1;
 		}
-		| T_CMD T_KEYSYM_CMD_VAR = {
+		| T_CMD T_KEYSYM_CMD_VAR {
 			cur_mp->command = KS_Cmd;
 			cur_mp->group1[0] = $2;
+		} 
+		| T_CMD T_KEYSYM_VAR {
+			yyerror("Not a command keysym");
 		}
 		;
 
 keysym_list	: /* empty */
-		| keysym_var = {
+		| keysym_var {
 			cur_mp->group1[0] = $1;
 			cur_mp->group1[1] = ksym_upcase(cur_mp->group1[0]);
 			cur_mp->group2[0] = cur_mp->group1[0];
 			cur_mp->group2[1] = cur_mp->group1[1];
 		}
-		| keysym_var keysym_var = {
+		| keysym_var keysym_var {
 			cur_mp->group1[0] = $1;
 			cur_mp->group1[1] = $2;
 			cur_mp->group2[0] = cur_mp->group1[0];
 			cur_mp->group2[1] = cur_mp->group1[1];
 		}
-		| keysym_var keysym_var keysym_var = {
+		| keysym_var keysym_var keysym_var {
 			cur_mp->group1[0] = $1;
 			cur_mp->group1[1] = $2;
 			cur_mp->group2[0] = $3;
 			cur_mp->group2[1] = ksym_upcase(cur_mp->group2[0]);
 		}
-		| keysym_var keysym_var keysym_var keysym_var = {
+		| keysym_var keysym_var keysym_var keysym_var {
 			cur_mp->group1[0] = $1;
 			cur_mp->group1[1] = $2;
 			cur_mp->group2[0] = $3;
@@ -180,10 +183,10 @@ keysym_list	: /* empty */
 		}
 		;
 
-keysym_var	: T_KEYSYM_VAR = {
+keysym_var	: T_KEYSYM_VAR {
 			$$ = $1;
 		}
-		| T_NUMBER = {
+		| T_NUMBER {
 			char name[2];
 			int res;
 
@@ -201,6 +204,8 @@ keysym_var	: T_KEYSYM_VAR = {
 __dead static void
 yyerror(const char *msg)
 {
+	extern char *yytext;
+	extern int yyleng;
 
-	errx(EXIT_FAILURE, "parse: %s", msg);
+	errx(EXIT_FAILURE, "parse: %s [%.*s]", msg, yyleng, yytext);
 }

Reply via email to