Module Name: src Committed By: rillig Date: Fri Jul 9 20:51:27 UTC 2021
Modified Files: src/usr.bin/xlint/lint1: cgram.y Log Message: lint: remove 6 conflicts from the grammar, in type_direct_decl No functional change. To generate a diff of this commit: cvs rdiff -u -r1.276 -r1.277 src/usr.bin/xlint/lint1/cgram.y 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.276 src/usr.bin/xlint/lint1/cgram.y:1.277 --- src/usr.bin/xlint/lint1/cgram.y:1.276 Fri Jul 9 20:36:34 2021 +++ src/usr.bin/xlint/lint1/cgram.y Fri Jul 9 20:51:27 2021 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.276 2021/07/09 20:36:34 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.277 2021/07/09 20:51:27 rillig 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.276 2021/07/09 20:36:34 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.277 2021/07/09 20:51:27 rillig Exp $"); #endif #include <limits.h> @@ -123,7 +123,7 @@ anonymize(sym_t *s) } %} -%expect 156 +%expect 150 %union { val_t *y_val; @@ -949,9 +949,12 @@ notype_decl: ; type_decl: - type_direct_decl - | pointer type_direct_decl { - $$ = add_pointer($2, $1); + /* TODO: removing type_attribute_list_opt here removes another 16 conflicts */ + type_attribute_list_opt type_direct_decl { + $$ = $2; + } + | pointer type_attribute_list_opt type_direct_decl { + $$ = add_pointer($3, $1); } ; @@ -976,11 +979,6 @@ notype_direct_decl: | notype_direct_decl type_attribute ; -/* - * XXX: shift/reduce conflict, caused by: - * type_attribute type_direct_decl - * type_direct_decl type_attribute - */ type_direct_decl: identifier { $$ = declarator_name(getsym($1)); @@ -988,9 +986,6 @@ type_direct_decl: | T_LPAREN type_decl T_RPAREN { $$ = $2; } - | type_attribute type_direct_decl { - $$ = $2; - } | type_direct_decl T_LBRACK T_RBRACK { $$ = add_array($1, false, 0); }