mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +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>
|
2002-01-29 Paul Eggert <eggert@twinsun.com>
|
||||||
|
|
||||||
* src/bison.simple (YYSIZE_T): Do not define merely because
|
* 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 |
|
| FIN is pointing to a location (i.e., a `@'). Output to OOUT a |
|
||||||
| reference to this location. STACK_OFFSET is the number of values |
|
| 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. |
|
| respect to the top of the stack. |
|
||||||
`-----------------------------------------------------------------*/
|
`-----------------------------------------------------------------*/
|
||||||
|
|
||||||
static inline void
|
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;
|
int c;
|
||||||
|
|
||||||
c = getc (fin);
|
c = getc (fin);
|
||||||
@@ -321,11 +323,25 @@ copy_at (FILE *fin, struct obstack *oout, int stack_offset)
|
|||||||
}
|
}
|
||||||
else if (isdigit (c) || c == '-')
|
else if (isdigit (c) || c == '-')
|
||||||
{
|
{
|
||||||
int n;
|
int n, i;
|
||||||
|
|
||||||
ungetc (c, fin);
|
ungetc (c, fin);
|
||||||
n = read_signed_integer (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);
|
obstack_fgrow1 (oout, "yylsp[%d]", n - stack_offset);
|
||||||
locations_flag = 1;
|
locations_flag = 1;
|
||||||
}
|
}
|
||||||
@@ -1103,7 +1119,7 @@ copy_action (symbol_list *rule, int stack_offset)
|
|||||||
|
|
||||||
case '@':
|
case '@':
|
||||||
copy_at (finput, &action_obstack,
|
copy_at (finput, &action_obstack,
|
||||||
stack_offset);
|
rule, stack_offset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EOF:
|
case EOF:
|
||||||
@@ -1203,7 +1219,7 @@ copy_guard (symbol_list *rule, int stack_offset)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case '@':
|
case '@':
|
||||||
copy_at (finput, &guard_obstack, stack_offset);
|
copy_at (finput, &guard_obstack, rule, stack_offset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EOF:
|
case EOF:
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ EXTRA_DIST += package.m4
|
|||||||
|
|
||||||
TESTSUITE_AT = \
|
TESTSUITE_AT = \
|
||||||
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
|
TESTSUITE = $(srcdir)/testsuite
|
||||||
|
|
||||||
AUTOTEST = $(AUTOM4TE) --language=autotest
|
AUTOTEST = $(AUTOM4TE) --language=autotest
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ MAINTAINERCLEANFILES = Makefile.in $(TESTSUITE)
|
|||||||
|
|
||||||
TESTSUITE_AT = \
|
TESTSUITE_AT = \
|
||||||
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
|
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])
|
AT_TESTED([bison])
|
||||||
|
|
||||||
|
m4_include([input.at])
|
||||||
m4_include([output.at])
|
m4_include([output.at])
|
||||||
m4_include([sets.at])
|
m4_include([sets.at])
|
||||||
m4_include([reduce.at])
|
m4_include([reduce.at])
|
||||||
|
|||||||
Reference in New Issue
Block a user