Module Name: src Committed By: rillig Date: Fri May 12 22:36:15 UTC 2023
Modified Files: src/tests/usr.bin/indent: psym_semicolon.c src/usr.bin/indent: parse.c Log Message: tests/indent: test pushing the placeholder symbol to the parser stack To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/indent/psym_semicolon.c cvs rdiff -u -r1.51 -r1.52 src/usr.bin/indent/parse.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/indent/psym_semicolon.c diff -u src/tests/usr.bin/indent/psym_semicolon.c:1.3 src/tests/usr.bin/indent/psym_semicolon.c:1.4 --- src/tests/usr.bin/indent/psym_semicolon.c:1.3 Sun Apr 24 09:04:12 2022 +++ src/tests/usr.bin/indent/psym_semicolon.c Fri May 12 22:36:15 2023 @@ -1,14 +1,34 @@ -/* $NetBSD: psym_semicolon.c,v 1.3 2022/04/24 09:04:12 rillig Exp $ */ +/* $NetBSD: psym_semicolon.c,v 1.4 2023/05/12 22:36:15 rillig Exp $ */ /* - * Tests for the parser symbol psym_semicolon, which pushes a new statement on - * the stack. + * Tests for the parser symbol psym_0 (formerly named psym_semicolon), which + * pushes a new statement on the stack. * * This token is never stored on the stack itself. */ //indent input -// TODO: add input +void func(void) { stmt(); } //indent end -//indent run-equals-input +//indent run +void +func(void) +{ + stmt(); +} +//indent end + +//indent run -npsl +void func(void) +{ + stmt(); +} +//indent end + +//indent run -nfbs +void +func(void) { + stmt(); +} +//indent end Index: src/usr.bin/indent/parse.c diff -u src/usr.bin/indent/parse.c:1.51 src/usr.bin/indent/parse.c:1.52 --- src/usr.bin/indent/parse.c:1.51 Fri May 12 08:40:54 2023 +++ src/usr.bin/indent/parse.c Fri May 12 22:36:15 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.51 2023/05/12 08:40:54 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.52 2023/05/12 22:36:15 rillig Exp $ */ /*- * SPDX-License-Identifier: BSD-4-Clause @@ -43,7 +43,7 @@ static char sccsid[] = "@(#)parse.c 8.1 #include <sys/cdefs.h> #if defined(__NetBSD__) -__RCSID("$NetBSD: parse.c,v 1.51 2023/05/12 08:40:54 rillig Exp $"); +__RCSID("$NetBSD: parse.c,v 1.52 2023/05/12 22:36:15 rillig Exp $"); #else __FBSDID("$FreeBSD: head/usr.bin/indent/parse.c 337651 2018-08-11 19:20:06Z pstef $"); #endif @@ -91,6 +91,21 @@ decl_level(void) return level; } +#ifdef debug +static void +debug_parse_stack(const char *situation) +{ + printf("parse stack %s:", situation); + for (int i = 1; i <= ps.tos; ++i) + printf(" %s %d", psym_name(ps.s_sym[i]), ps.s_ind_level[i]); + if (ps.tos == 0) + printf(" empty"); + printf("\n"); +} +#else +#define debug_parse_stack(situation) do { } while (false) +#endif + /* * Shift the token onto the parser stack, or reduce it by combining it with * previous tokens. @@ -220,16 +235,9 @@ parse(parser_symbol psym) if (ps.tos >= STACKSIZE - 1) errx(1, "Parser stack overflow"); + debug_parse_stack("before reduction"); reduce(); /* see if any reduction can be done */ - -#ifdef debug - printf("parse stack:"); - for (int i = 1; i <= ps.tos; ++i) - printf(" %s %d", psym_name(ps.s_sym[i]), ps.s_ind_level[i]); - if (ps.tos == 0) - printf(" empty"); - printf("\n"); -#endif + debug_parse_stack("after reduction"); } /*