mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-10 04:43:03 +00:00
* tests/input.at: New.
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
2002-02-07 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* tests/input.at: New.
|
||||
|
||||
2002-01-29 Paul Eggert <eggert@twinsun.com>
|
||||
|
||||
* src/bison.simple (YYSIZE_T): Do not define merely because
|
||||
|
||||
26
src/reader.c
26
src/reader.c
@@ -304,13 +304,15 @@ copy_comment (FILE *fin, struct obstack *oout)
|
||||
/*-----------------------------------------------------------------.
|
||||
| FIN is pointing to a location (i.e., a `@'). Output to OOUT a |
|
||||
| reference to this location. STACK_OFFSET is the number of values |
|
||||
| in the current rule so far, which says where to find `$0' with |
|
||||
| in the current rule so far, which says where to find `@0' with |
|
||||
| respect to the top of the stack. |
|
||||
`-----------------------------------------------------------------*/
|
||||
|
||||
static inline void
|
||||
copy_at (FILE *fin, struct obstack *oout, int stack_offset)
|
||||
copy_at (FILE *fin, struct obstack *oout,
|
||||
struct symbol_list *rule, int stack_offset)
|
||||
{
|
||||
symbol_list *rp;
|
||||
int c;
|
||||
|
||||
c = getc (fin);
|
||||
@@ -321,11 +323,25 @@ copy_at (FILE *fin, struct obstack *oout, int stack_offset)
|
||||
}
|
||||
else if (isdigit (c) || c == '-')
|
||||
{
|
||||
int n;
|
||||
int n, i;
|
||||
|
||||
ungetc (c, fin);
|
||||
n = read_signed_integer (fin);
|
||||
|
||||
rp = rule;
|
||||
i = 0;
|
||||
|
||||
while (i < n)
|
||||
{
|
||||
rp = rp->next;
|
||||
if (rp == NULL)
|
||||
{
|
||||
complain (_("invalid @ value"));
|
||||
return;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
obstack_fgrow1 (oout, "yylsp[%d]", n - stack_offset);
|
||||
locations_flag = 1;
|
||||
}
|
||||
@@ -1103,7 +1119,7 @@ copy_action (symbol_list *rule, int stack_offset)
|
||||
|
||||
case '@':
|
||||
copy_at (finput, &action_obstack,
|
||||
stack_offset);
|
||||
rule, stack_offset);
|
||||
break;
|
||||
|
||||
case EOF:
|
||||
@@ -1203,7 +1219,7 @@ copy_guard (symbol_list *rule, int stack_offset)
|
||||
break;
|
||||
|
||||
case '@':
|
||||
copy_at (finput, &guard_obstack, stack_offset);
|
||||
copy_at (finput, &guard_obstack, rule, stack_offset);
|
||||
break;
|
||||
|
||||
case EOF:
|
||||
|
||||
@@ -45,7 +45,7 @@ EXTRA_DIST += package.m4
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
output.at sets.at reduce.at calc.at torture.at regression.at
|
||||
input.at output.at sets.at reduce.at calc.at torture.at regression.at
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
|
||||
AUTOTEST = $(AUTOM4TE) --language=autotest
|
||||
|
||||
@@ -110,7 +110,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
||||
|
||||
TESTSUITE_AT = \
|
||||
testsuite.at \
|
||||
output.at sets.at reduce.at calc.at torture.at regression.at
|
||||
input.at output.at sets.at reduce.at calc.at torture.at regression.at
|
||||
|
||||
TESTSUITE = $(srcdir)/testsuite
|
||||
|
||||
|
||||
58
tests/input.at
Normal file
58
tests/input.at
Normal file
@@ -0,0 +1,58 @@
|
||||
# Checking the output filenames. -*- Autotest -*-
|
||||
# Copyright 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
AT_BANNER([[Input Processing.]])
|
||||
|
||||
# Mostly test that we are robust to mistakes.
|
||||
|
||||
## ------------ ##
|
||||
## Invalid $n. ##
|
||||
## ------------ ##
|
||||
|
||||
|
||||
AT_SETUP([Invalid $n])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%%
|
||||
exp: { $$ = $1 ; }
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y], [1], [],
|
||||
[[input.y:2: invalid $ value
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ------------ ##
|
||||
## Invalid @n. ##
|
||||
## ------------ ##
|
||||
|
||||
|
||||
AT_SETUP([Invalid @n])
|
||||
|
||||
AT_DATA([input.y],
|
||||
[[%%
|
||||
exp: { @$ = @1 ; }
|
||||
]])
|
||||
|
||||
AT_CHECK([bison input.y], [1], [],
|
||||
[[input.y:2: invalid @ value
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
@@ -25,6 +25,7 @@ AT_INIT
|
||||
|
||||
AT_TESTED([bison])
|
||||
|
||||
m4_include([input.at])
|
||||
m4_include([output.at])
|
||||
m4_include([sets.at])
|
||||
m4_include([reduce.at])
|
||||
|
||||
Reference in New Issue
Block a user