mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-22 10:43:02 +00:00
style: simplify the scanning of type tags
* src/scan-gram.l: Remove the rule for simple tags: the "complex" case subsumes it. It was more efficient, but duplicated the code for a negligible benefit.
This commit is contained in:
@@ -112,7 +112,12 @@ static void unexpected_newline (boundary, char const *);
|
|||||||
/* A identifier was just read in directives/rules. Special state
|
/* A identifier was just read in directives/rules. Special state
|
||||||
to capture the sequence 'identifier :'. */
|
to capture the sequence 'identifier :'. */
|
||||||
%x SC_AFTER_IDENTIFIER
|
%x SC_AFTER_IDENTIFIER
|
||||||
/* A complex tag, with nested angles brackets. */
|
|
||||||
|
/* POSIX says that a tag must be both an id and a C union member, but
|
||||||
|
historically almost any character is allowed in a tag. We
|
||||||
|
disallow NUL, as this simplifies our implementation. We match
|
||||||
|
angle brackets in nested pairs: several languages use them for
|
||||||
|
generics/template types. */
|
||||||
%x SC_TAG
|
%x SC_TAG
|
||||||
|
|
||||||
/* Four types of user code:
|
/* Four types of user code:
|
||||||
@@ -133,13 +138,6 @@ notletter [^.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]{-}[%\{]
|
|||||||
id {letter}({letter}|[-0-9])*
|
id {letter}({letter}|[-0-9])*
|
||||||
int [0-9]+
|
int [0-9]+
|
||||||
|
|
||||||
/* POSIX says that a tag must be both an id and a C union member, but
|
|
||||||
historically almost any character is allowed in a tag. We disallow
|
|
||||||
NUL, as this simplifies our implementation. We disallow angle
|
|
||||||
bracket to match them in nested pairs: several languages use them
|
|
||||||
for generics/template types. */
|
|
||||||
tag [^\0<>]+
|
|
||||||
|
|
||||||
/* Zero or more instances of backslash-newline. Following GCC, allow
|
/* Zero or more instances of backslash-newline. Following GCC, allow
|
||||||
white space between the backslash and the newline. */
|
white space between the backslash and the newline. */
|
||||||
splice (\\[ \f\t\v]*\n)*
|
splice (\\[ \f\t\v]*\n)*
|
||||||
@@ -325,13 +323,6 @@ eqopt ([[:space:]]*=)?
|
|||||||
/* A type. */
|
/* A type. */
|
||||||
"<*>" return TAG_ANY;
|
"<*>" return TAG_ANY;
|
||||||
"<>" return TAG_NONE;
|
"<>" return TAG_NONE;
|
||||||
"<"{tag}">" {
|
|
||||||
obstack_grow (&obstack_for_string, yytext + 1, yyleng - 2);
|
|
||||||
STRING_FINISH;
|
|
||||||
val->uniqstr = uniqstr_new (last_string);
|
|
||||||
STRING_FREE;
|
|
||||||
return TAG;
|
|
||||||
}
|
|
||||||
"<" {
|
"<" {
|
||||||
nesting = 0;
|
nesting = 0;
|
||||||
token_start = loc->start;
|
token_start = loc->start;
|
||||||
@@ -559,10 +550,11 @@ eqopt ([[:space:]]*=)?
|
|||||||
<<EOF>> unexpected_eof (token_start, "'");
|
<<EOF>> unexpected_eof (token_start, "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------.
|
|
||||||
| Scanning a Bison nested tag. The initial angle bracket is |
|
|
||||||
| already eaten. |
|
/*--------------------------------------------------------------.
|
||||||
`-----------------------------------------------------------*/
|
| Scanning a tag. The initial angle bracket is already eaten. |
|
||||||
|
`--------------------------------------------------------------*/
|
||||||
|
|
||||||
<SC_TAG>
|
<SC_TAG>
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user