From 29c017256a980c07f898d8a4e5f6a630a5bf70b7 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Tue, 5 Nov 2002 21:20:14 +0000 Subject: [PATCH] * src/scan-gram.l: When it starts with `%', complain about the whole directive, not just that `invalid character: %'. --- ChangeLog | 5 +++++ src/scan-gram.l | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18a5647..30b3d10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-11-05 Akim Demaille + + * src/scan-gram.l: When it starts with `%', complain about the + whole directive, not just that `invalid character: %'. + 2002-11-04 Akim Demaille * Makefile.maint: Update from Autoconf. diff --git a/src/scan-gram.l b/src/scan-gram.l index 4475ed2..e862064 100644 --- a/src/scan-gram.l +++ b/src/scan-gram.l @@ -186,9 +186,10 @@ static int convert_ucn_to_byte (char const *hex_text); %x SC_ESCAPED_STRING SC_ESCAPED_CHARACTER %x SC_BRACED_CODE SC_PROLOGUE SC_EPILOGUE -letter [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_] -id {letter}({letter}|[0-9])* -int [0-9]+ +letter [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_] +id {letter}({letter}|[0-9])* +directive %{letter}({letter}|[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 @@ -247,6 +248,11 @@ splice (\\[ \f\t\v]*\n)* "%verbose" return PERCENT_VERBOSE; "%yacc" return PERCENT_YACC; + {directive} { + complain_at (*yylloc, _("invalid directive: %s"), quote (yytext)); + YY_STEP; + } + "=" return EQUAL; ":" rule_length = 0; return COLON; "|" rule_length = 0; return PIPE; -- 2.7.4