Module Name:    src
Committed By:   rillig
Date:           Sun Oct 31 20:40:42 UTC 2021

Modified Files:
        src/usr.bin/indent: indent.c indent.h lexi.c

Log Message:
indent: replace kw_tag with lsym_tag

This leaves only one special type of token, which is lsym_ident, which
in some cases represents a type name and in other cases an identifier,
constant or string literal.

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.200 -r1.201 src/usr.bin/indent/indent.c
cvs rdiff -u -r1.72 -r1.73 src/usr.bin/indent/indent.h
cvs rdiff -u -r1.125 -r1.126 src/usr.bin/indent/lexi.c

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/indent/indent.c
diff -u src/usr.bin/indent/indent.c:1.200 src/usr.bin/indent/indent.c:1.201
--- src/usr.bin/indent/indent.c:1.200	Sun Oct 31 19:57:44 2021
+++ src/usr.bin/indent/indent.c	Sun Oct 31 20:40:42 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: indent.c,v 1.200 2021/10/31 19:57:44 rillig Exp $	*/
+/*	$NetBSD: indent.c,v 1.201 2021/10/31 20:40:42 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@ static char sccsid[] = "@(#)indent.c	5.1
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.200 2021/10/31 19:57:44 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.201 2021/10/31 20:40:42 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
 #endif
@@ -749,7 +749,7 @@ want_blank_before_lparen(void)
 	return true;
     if (opt.proc_calls_space)
 	return true;
-    return ps.prev_keyword != kw_0;
+    return ps.prev_is_type;
 }
 
 static void

Index: src/usr.bin/indent/indent.h
diff -u src/usr.bin/indent/indent.h:1.72 src/usr.bin/indent/indent.h:1.73
--- src/usr.bin/indent/indent.h:1.72	Sun Oct 31 19:57:44 2021
+++ src/usr.bin/indent/indent.h	Sun Oct 31 20:40:42 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: indent.h,v 1.72 2021/10/31 19:57:44 rillig Exp $	*/
+/*	$NetBSD: indent.h,v 1.73 2021/10/31 20:40:42 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
@@ -244,13 +244,6 @@ extern struct options {
 				 * printed */
 } opt;
 
-enum keyword_kind {
-    kw_0,
-    kw_tag,			/* 'struct', 'union', 'enum' */
-    kw_type
-};
-
-
 extern bool found_err;
 extern int blank_lines_to_output;
 extern bool blank_line_before;
@@ -267,8 +260,8 @@ extern bool inhibit_formatting;	/* true 
 
 extern struct parser_state {
     lexer_symbol prev_token;
-    enum keyword_kind prev_keyword;
-    enum keyword_kind curr_keyword;
+    bool prev_is_type;
+    bool curr_is_type;
     bool curr_newline;
     bool curr_col_1;		/* whether the current token started in column
 				 * 1 of the unformatted input */

Index: src/usr.bin/indent/lexi.c
diff -u src/usr.bin/indent/lexi.c:1.125 src/usr.bin/indent/lexi.c:1.126
--- src/usr.bin/indent/lexi.c:1.125	Sun Oct 31 19:57:44 2021
+++ src/usr.bin/indent/lexi.c	Sun Oct 31 20:40:42 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: lexi.c,v 1.125 2021/10/31 19:57:44 rillig Exp $	*/
+/*	$NetBSD: lexi.c,v 1.126 2021/10/31 20:40:42 rillig Exp $	*/
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@ static char sccsid[] = "@(#)lexi.c	8.1 (
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: lexi.c,v 1.125 2021/10/31 19:57:44 rillig Exp $");
+__RCSID("$NetBSD: lexi.c,v 1.126 2021/10/31 20:40:42 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/lexi.c 337862 2018-08-15 18:19:45Z pstef $");
 #endif
@@ -59,49 +59,49 @@ __FBSDID("$FreeBSD: head/usr.bin/indent/
 static const struct keyword {
     const char *name;
     lexer_symbol lsym;
-    enum keyword_kind kind;
+    bool is_type;
 } keywords[] = {
-    {"_Bool", lsym_eof, kw_type},
-    {"_Complex", lsym_eof, kw_type},
-    {"_Imaginary", lsym_eof, kw_type},
-    {"auto", lsym_storage_class, kw_0},
-    {"bool", lsym_eof, kw_type},
-    {"break", lsym_ident, kw_0},
-    {"case", lsym_case_label, kw_0},
-    {"char", lsym_eof, kw_type},
-    {"complex", lsym_eof, kw_type},
-    {"const", lsym_eof, kw_type},
-    {"continue", lsym_ident, kw_0},
-    {"default", lsym_case_label, kw_0},
-    {"do", lsym_do, kw_0},
-    {"double", lsym_eof, kw_type},
-    {"else", lsym_else, kw_0},
-    {"enum", lsym_eof, kw_tag},
-    {"extern", lsym_storage_class, kw_0},
-    {"float", lsym_eof, kw_type},
-    {"for", lsym_for, kw_0},
-    {"goto", lsym_ident, kw_0},
-    {"if", lsym_if, kw_0},
-    {"imaginary", lsym_eof, kw_type},
-    {"inline", lsym_ident, kw_0},
-    {"int", lsym_eof, kw_type},
-    {"long", lsym_eof, kw_type},
-    {"offsetof", lsym_offsetof, kw_0},
-    {"register", lsym_storage_class, kw_0},
-    {"restrict", lsym_ident, kw_0},
-    {"return", lsym_ident, kw_0},
-    {"short", lsym_eof, kw_type},
-    {"signed", lsym_eof, kw_type},
-    {"sizeof", lsym_sizeof, kw_0},
-    {"static", lsym_storage_class, kw_0},
-    {"struct", lsym_eof, kw_tag},
-    {"switch", lsym_switch, kw_0},
-    {"typedef", lsym_typedef, kw_0},
-    {"union", lsym_eof, kw_tag},
-    {"unsigned", lsym_eof, kw_type},
-    {"void", lsym_eof, kw_type},
-    {"volatile", lsym_eof, kw_type},
-    {"while", lsym_while, kw_0}
+    {"_Bool", lsym_eof, true},
+    {"_Complex", lsym_eof, true},
+    {"_Imaginary", lsym_eof, true},
+    {"auto", lsym_storage_class, false},
+    {"bool", lsym_eof, true},
+    {"break", lsym_ident, false},
+    {"case", lsym_case_label, false},
+    {"char", lsym_eof, true},
+    {"complex", lsym_eof, true},
+    {"const", lsym_eof, true},
+    {"continue", lsym_ident, false},
+    {"default", lsym_case_label, false},
+    {"do", lsym_do, false},
+    {"double", lsym_eof, true},
+    {"else", lsym_else, false},
+    {"enum", lsym_tag, false},
+    {"extern", lsym_storage_class, false},
+    {"float", lsym_eof, true},
+    {"for", lsym_for, false},
+    {"goto", lsym_ident, false},
+    {"if", lsym_if, false},
+    {"imaginary", lsym_eof, true},
+    {"inline", lsym_ident, false},
+    {"int", lsym_eof, true},
+    {"long", lsym_eof, true},
+    {"offsetof", lsym_offsetof, false},
+    {"register", lsym_storage_class, false},
+    {"restrict", lsym_ident, false},
+    {"return", lsym_ident, false},
+    {"short", lsym_eof, true},
+    {"signed", lsym_eof, true},
+    {"sizeof", lsym_sizeof, false},
+    {"static", lsym_storage_class, false},
+    {"struct", lsym_tag, false},
+    {"switch", lsym_switch, false},
+    {"typedef", lsym_typedef, false},
+    {"union", lsym_tag, false},
+    {"unsigned", lsym_eof, true},
+    {"void", lsym_eof, true},
+    {"volatile", lsym_eof, true},
+    {"while", lsym_while, false}
 };
 
 static struct {
@@ -253,18 +253,6 @@ lsym_name(lexer_symbol sym)
     return name[sym];
 }
 
-static const char *
-kw_name(enum keyword_kind kw)
-{
-    static const char *const name[] = {
-	"0",
-	"tag",
-	"type",
-    };
-
-    return name[kw];
-}
-
 static void
 debug_print_buf(const char *name, const struct buffer *buf)
 {
@@ -294,9 +282,8 @@ debug_lexi(lexer_symbol lsym)
     static struct parser_state prev_ps;
 
     debug_println("");
-    debug_printf("line %d: %s", line_no, lsym_name(lsym));
-    if (ps.curr_keyword != kw_0)
-	debug_printf(" %s", kw_name(ps.curr_keyword));
+    debug_printf("line %d: %s%s", line_no, lsym_name(lsym),
+	ps.curr_is_type ? " type" : "");
     debug_vis_range(" \"", token.s, token.e, "\"\n");
 
     debug_print_buf("label", &lab);
@@ -304,7 +291,7 @@ debug_lexi(lexer_symbol lsym)
     debug_print_buf("comment", &com);
 
     debug_println("    ps.prev_token = %s", lsym_name(ps.prev_token));
-    debug_ps_keyword(prev_keyword);
+    debug_ps_bool(prev_is_type);
     debug_ps_bool(curr_newline);
     debug_ps_bool(curr_col_1);
     debug_ps_bool(next_unary);
@@ -506,20 +493,18 @@ lexi_alnum(void)
 	array_length(keywords), sizeof(keywords[0]), cmp_keyword_by_name);
     if (kw == NULL) {
 	if (is_typename()) {
-	    ps.curr_keyword = kw_type;
+	    ps.curr_is_type = true;
 	    ps.next_unary = true;
 	    goto found_typename;
 	}
 
     } else {			/* we have a keyword */
-	ps.curr_keyword = kw->kind;
+	ps.curr_is_type = kw->is_type;
 	ps.next_unary = true;
 
-	assert((kw->lsym == lsym_eof) != (kw->kind == kw_0));
-	if (kw->lsym != lsym_eof)
+	assert((kw->lsym == lsym_eof) == kw->is_type);
+	if (kw->lsym != lsym_eof && kw->lsym != lsym_tag)
 	    return kw->lsym;
-	if (kw->kind != kw_tag && kw->kind != kw_type)
-	    return lsym_ident;
 
 found_typename:
 	if (ps.p_l_follow > 0) {
@@ -527,7 +512,7 @@ found_typename:
 	    ps.cast_mask |= (1 << ps.p_l_follow) & ~ps.not_cast_mask;
 	}
 	if (ps.prev_token != lsym_period && ps.prev_token != lsym_unary_op) {
-	    if (kw != NULL && kw->kind == kw_tag)
+	    if (kw != NULL && kw->lsym == lsym_tag)
 		return lsym_tag;
 	    if (ps.p_l_follow == 0)
 		return lsym_type_at_paren_level_0;
@@ -548,7 +533,7 @@ found_typename:
 no_function_definition:;
 
     } else if (probably_typename()) {
-	ps.curr_keyword = kw_type;
+	ps.curr_is_type = true;
 	ps.next_unary = true;
 	return lsym_type_at_paren_level_0;
     }
@@ -563,8 +548,8 @@ lexi(void)
     token.e = token.s;
     ps.curr_col_1 = ps.curr_newline;
     ps.curr_newline = false;
-    ps.prev_keyword = ps.curr_keyword;
-    ps.curr_keyword = kw_0;
+    ps.prev_is_type = ps.curr_is_type;
+    ps.curr_is_type = false;
 
     while (ch_isblank(*inp.s)) {
 	ps.curr_col_1 = false;

Reply via email to