Module Name:    src
Committed By:   christos
Date:           Sat Nov  5 01:09:30 UTC 2016

Modified Files:
        src/usr.bin/xlint/lint1: cgram.y scan.l

Log Message:
Add _Generic C11 support.


To generate a diff of this commit:
cvs rdiff -u -r1.80 -r1.81 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.66 -r1.67 src/usr.bin/xlint/lint1/scan.l

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

Modified files:

Index: src/usr.bin/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.80 src/usr.bin/xlint/lint1/cgram.y:1.81
--- src/usr.bin/xlint/lint1/cgram.y:1.80	Fri Aug 19 06:58:15 2016
+++ src/usr.bin/xlint/lint1/cgram.y	Fri Nov  4 21:09:30 2016
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.80 2016/08/19 10:58:15 christos Exp $ */
+/* $NetBSD: cgram.y,v 1.81 2016/11/05 01:09:30 christos Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.80 2016/08/19 10:58:15 christos Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.81 2016/11/05 01:09:30 christos Exp $");
 #endif
 
 #include <stdlib.h>
@@ -163,6 +163,7 @@ anonymize(sym_t *s)
 %token			T_ELLIPSE
 %token			T_REAL
 %token			T_IMAG
+%token			T_GENERIC
 
 /* storage classes (extern, static, auto, register and typedef) */
 %token	<y_scl>		T_SCLASS
@@ -289,6 +290,7 @@ anonymize(sym_t *s)
 %type	<y_tnode>	expr_stmnt_val
 %type	<y_tnode>	expr_stmnt_list
 %type	<y_tnode>	term
+%type	<y_tnode>	generic_expr
 %type	<y_tnode>	func_arg_list
 %type	<y_op>		point_or_arrow
 %type	<y_type>	type_name
@@ -1539,6 +1541,22 @@ switch_expr:
 	  }
 	;
 
+association:
+	  type_name T_COLON expr
+	| T_DEFAULT T_COLON expr 
+	;
+
+association_list:
+	  association
+	| association_list T_COMMA association
+	;
+
+generic_expr:
+	  T_GENERIC T_LPARN expr T_COMMA association_list T_RPARN {
+		$$ = $3;
+	  }
+	;
+
 do_stmnt:
 	  do stmnt {
 		CLRWFLGS(__FILE__, __LINE__);
@@ -1730,6 +1748,9 @@ expr:
 	| term {
 		$$ = $1;
 	  }
+	| generic_expr {
+		$$ = $1;
+	  }
 	;
 
 term:

Index: src/usr.bin/xlint/lint1/scan.l
diff -u src/usr.bin/xlint/lint1/scan.l:1.66 src/usr.bin/xlint/lint1/scan.l:1.67
--- src/usr.bin/xlint/lint1/scan.l:1.66	Wed Jul 20 13:42:14 2016
+++ src/usr.bin/xlint/lint1/scan.l	Fri Nov  4 21:09:30 2016
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: scan.l,v 1.66 2016/07/20 17:42:14 christos Exp $ */
+/* $NetBSD: scan.l,v 1.67 2016/11/05 01:09:30 christos Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: scan.l,v 1.66 2016/07/20 17:42:14 christos Exp $");
+__RCSID("$NetBSD: scan.l,v 1.67 2016/11/05 01:09:30 christos Exp $");
 #endif
 
 #include <stdlib.h>
@@ -263,6 +263,7 @@ static	struct	kwtab {
 	{ "extern",	T_SCLASS,	EXTERN,	0,	0,	  0, 0, 0, 0 },
 	{ "float",	T_TYPE,		0,	FLOAT,	0,	  0, 0, 0, 0 },
 	{ "for",	T_FOR,		0,	0,	0,	  0, 0, 0, 0 },
+	{ "_Generic",	T_GENERIC,	0,	0,	0,	  0, 1, 0, 0 },
 	{ "goto",	T_GOTO,		0,	0,	0,	  0, 0, 0, 0 },
 	{ "if",		T_IF,		0,	0,	0,	  0, 0, 0, 0 },
 	{ "__imag__",	T_IMAG,		0,	0,	0,	  0, 1, 0, 0 },

Reply via email to