summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2025-01-06 08:47:58 +0000
committerPeter Eisentraut2025-01-06 08:47:58 +0000
commitb1ef48980ddd082a90ed39aa5914af45e53059e6 (patch)
tree9d97adbc87951cdf5180c8b801a555c3d8a5776b
parent632384d0eb142f243fdd6059fde715319cfd05c9 (diff)
flex code modernization: Replace YY_EXTRA_TYPE define with flex option
Replace #define YY_EXTRA_TYPE with %option extra-type. The latter is the way recommended by the flex manual (available since flex 2.5.34). Reviewed-by: Heikki Linnakangas <[email protected]> Discussion: https://www.postgresql.org/message-id/flat/[email protected]
-rw-r--r--src/backend/parser/scan.l7
-rw-r--r--src/backend/replication/repl_scanner.l2
-rw-r--r--src/backend/replication/syncrep_scanner.l2
-rw-r--r--src/backend/utils/adt/jsonpath_scan.l2
-rw-r--r--src/bin/psql/psqlscanslash.l12
-rw-r--r--src/fe_utils/psqlscan.l12
6 files changed, 16 insertions, 21 deletions
diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l
index 1d5dfe83125..8031a78b908 100644
--- a/src/backend/parser/scan.l
+++ b/src/backend/parser/scan.l
@@ -90,12 +90,6 @@ const uint16 ScanKeywordTokens[] = {
#define YYSTYPE core_YYSTYPE
/*
- * Set the type of yyextra. All state variables used by the scanner should
- * be in yyextra, *not* statically allocated.
- */
-#define YY_EXTRA_TYPE core_yy_extra_type *
-
-/*
* Each call to yylex must set yylloc to the location of the found token
* (expressed as a byte offset from the start of the input text).
* When we parse a token that requires multiple lexer rules to process,
@@ -161,6 +155,7 @@ extern void core_yyset_column(int column_no, yyscan_t yyscanner);
%option noyyfree
%option warn
%option prefix="core_yy"
+%option extra-type="core_yy_extra_type *"
/*
* OK, here is a short description of lex/flex rules behavior.
diff --git a/src/backend/replication/repl_scanner.l b/src/backend/replication/repl_scanner.l
index 0d1ac2d2389..de10cb5abd1 100644
--- a/src/backend/replication/repl_scanner.l
+++ b/src/backend/replication/repl_scanner.l
@@ -46,7 +46,6 @@ struct replication_yy_extra_type
/* Work area for collecting literals */
StringInfoData litbuf;
};
-#define YY_EXTRA_TYPE struct replication_yy_extra_type *
static void startlit(yyscan_t yyscanner);
static char *litbufdup(yyscan_t yyscanner);
@@ -70,6 +69,7 @@ static void addlitchar(unsigned char ychar, yyscan_t yyscanner);
%option noyyfree
%option warn
%option prefix="replication_yy"
+%option extra-type="struct replication_yy_extra_type *"
/*
* Exclusive states:
diff --git a/src/backend/replication/syncrep_scanner.l b/src/backend/replication/syncrep_scanner.l
index 4db67329956..05e5fdecf1b 100644
--- a/src/backend/replication/syncrep_scanner.l
+++ b/src/backend/replication/syncrep_scanner.l
@@ -41,7 +41,6 @@ struct syncrep_yy_extra_type
{
StringInfoData xdbuf;
};
-#define YY_EXTRA_TYPE struct syncrep_yy_extra_type *
/* LCOV_EXCL_START */
@@ -60,6 +59,7 @@ struct syncrep_yy_extra_type
%option noyyfree
%option warn
%option prefix="syncrep_yy"
+%option extra-type="struct syncrep_yy_extra_type *"
/*
* <xd> delimited identifiers (double-quoted identifiers)
diff --git a/src/backend/utils/adt/jsonpath_scan.l b/src/backend/utils/adt/jsonpath_scan.l
index 2efc33f9542..c7aab83eeb4 100644
--- a/src/backend/utils/adt/jsonpath_scan.l
+++ b/src/backend/utils/adt/jsonpath_scan.l
@@ -34,7 +34,6 @@ struct jsonpath_yy_extra_type
{
JsonPathString scanstring;
};
-#define YY_EXTRA_TYPE struct jsonpath_yy_extra_type *
static void addstring(bool init, char *s, int l, yyscan_t yyscanner);
static void addchar(bool init, char c, yyscan_t yyscanner);
@@ -64,6 +63,7 @@ fprintf_to_ereport(const char *fmt, const char *msg)
%option noyywrap
%option warn
%option prefix="jsonpath_yy"
+%option extra-type="struct jsonpath_yy_extra_type *"
%option reentrant
%option bison-bridge
%option noyyalloc
diff --git a/src/bin/psql/psqlscanslash.l b/src/bin/psql/psqlscanslash.l
index 35fde05661b..f76b7722ac7 100644
--- a/src/bin/psql/psqlscanslash.l
+++ b/src/bin/psql/psqlscanslash.l
@@ -39,12 +39,6 @@
typedef int YYSTYPE;
/*
- * Set the type of yyextra; we use it as a pointer back to the containing
- * PsqlScanState.
- */
-#define YY_EXTRA_TYPE PsqlScanState
-
-/*
* These variables do not need to be saved across calls. Yeah, it's a bit
* of a hack, but putting them into PsqlScanStateData would be klugy too.
*/
@@ -89,6 +83,12 @@ extern void slash_yyset_column(int column_no, yyscan_t yyscanner);
%option prefix="slash_yy"
/*
+ * Set the type of yyextra; we use it as a pointer back to the containing
+ * PsqlScanState.
+ */
+%option extra-type="PsqlScanState"
+
+/*
* OK, here is a short description of lex/flex rules behavior.
* The longest pattern which matches an input string is always chosen.
* For equal-length patterns, the first occurring in the rules list is chosen.
diff --git a/src/fe_utils/psqlscan.l b/src/fe_utils/psqlscan.l
index bdea4c43054..e1cb726f326 100644
--- a/src/fe_utils/psqlscan.l
+++ b/src/fe_utils/psqlscan.l
@@ -52,12 +52,6 @@
*/
typedef int YYSTYPE;
-/*
- * Set the type of yyextra; we use it as a pointer back to the containing
- * PsqlScanState.
- */
-#define YY_EXTRA_TYPE PsqlScanState
-
/* Return values from yylex() */
#define LEXRES_EOL 0 /* end of input */
@@ -90,6 +84,12 @@ extern void psql_yyset_column(int column_no, yyscan_t yyscanner);
%option prefix="psql_yy"
/*
+ * Set the type of yyextra; we use it as a pointer back to the containing
+ * PsqlScanState.
+ */
+%option extra-type="PsqlScanState"
+
+/*
* All of the following definitions and rules should exactly match
* src/backend/parser/scan.l so far as the flex patterns are concerned.
* The rule bodies are just ECHO as opposed to what the backend does,