X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/ea0a767697594d2eda37daf5ecbf2fdaf60d2189..c932d6135ca3e508f7136810b9b0bf79725290b9:/src/scan-code.l diff --git a/src/scan-code.l b/src/scan-code.l index 3603196c..f1c97908 100644 --- a/src/scan-code.l +++ b/src/scan-code.l @@ -1,6 +1,6 @@ /* Bison Action Scanner -*- C -*- - Copyright (C) 2006-2011 Free Software Foundation, Inc. + Copyright (C) 2006-2012 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -84,8 +84,8 @@ splice (\\[ \f\t\v]*\n)* /* C style identifier. Must start with letter. Will be used for named symbol references. Shall be kept synchronized with scan-gram.l "letter" and "id". */ -letter [-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_] -id {letter}({letter}|[0-9])* +letter [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_] +id {letter}({letter}|[-0-9])* ref -?[0-9]+|{id}|"["{id}"]"|"$" %% @@ -620,7 +620,17 @@ parse_ref (char *cp, symbol_list *rule, int rule_length, complain_at_indent (text_loc, &indent, _("invalid reference: %s"), quote (text)); indent += SUB_INDENT; - if (midrule_rhs_index) + if (len == 0) + { + location sym_loc = text_loc; + sym_loc.start.column += 1; + sym_loc.end = sym_loc.start; + const char *format = + _("syntax error after `%c', expecting integer, letter," + " `_', `[', or `$'"); + complain_at_indent (sym_loc, &indent, format, dollar_or_at); + } + else if (midrule_rhs_index) { const char *format = _("symbol not found in production before $%d: %.*s");