byacc: actually import version 20240109

This commit is contained in:
Baptiste Daroussin 2024-06-20 13:46:15 +02:00
parent 7b7e898c2b
commit 0b234d7a89
736 changed files with 1958 additions and 150941 deletions

150
CHANGES
View File

@ -1,3 +1,153 @@
2024-01-09 Thomas E. Dickey <dickey@invisible-island.net>
* yacc.1: minor cleanup
* package/debian/copyright: bump
* configure: regen
* VERSION, package/byacc.spec, package/debian/changelog,
package/mingw-byacc.spec, package/pkgsrc/Makefile:
bump
2023-12-01 Thomas E. Dickey <dickey@invisible-island.net>
* aclocal.m4:
resync with my-autoconf: CF_CONST_X_STRING CF_MKSTEMP CF_WITH_MAN2HTML CF_XOPEN_SOURCE
2023-09-15 Thomas E. Dickey <dickey@invisible-island.net>
* config.sub: 2023-09-15
2023-08-22 Thomas E. Dickey <dickey@invisible-island.net>
* config.guess: 2023-08-22
2023-05-21 Thomas E. Dickey <dickey@invisible-island.net>
* VERSION, package/byacc.spec, package/debian/changelog,
package/mingw-byacc.spec, package/pkgsrc/Makefile:
bump
* configure: regen
* aclocal.m4:
updates for CF_INSTALL_MAN from reflex, which needs the symbolic link feature
* aclocal.m4:
improve install-man by adding sed commands for --program-transform-name
2023-05-19 Thomas E. Dickey <dickey@invisible-island.net>
* makefile.in: use CF_INSTALL_MAN
* aclocal.m4:
add CF_INSTALL_MAN, to begin refactoring install rule for manpage
* configure: regen
* configure.in: use CF_INSTALL_MAN
2023-05-18 Thomas E. Dickey <dickey@invisible-island.net>
* error.c, defs.h, reader.c:
allow @1 or $@ with a warning if no %locations was given
2023-05-17 Thomas E. Dickey <dickey@invisible-island.net>
* reader.c: clear pointer in end_ainfo() after freeing it.
2023-05-16 Thomas E. Dickey <dickey@invisible-island.net>
* reader.c: report errors in %define as "unexpected value"
* reader.c:
add/use macros begin_ainfo() and end_ainfo() to reduce clutter
* defs.h, error.c: add function unexpected_value()
* reader.c:
recognize bison's "%define api.pure" as an alternative to "%pure-parser"
* reader.c:
add %nterm as an alias for %type, since bison made that confusion.
* reader.c:
ensure that filler_buf and prefix_buf are initialized for the special case
where they are empty (report by Martin Jansa, cf: 20230219)
* output.c:
make test-differences smaller when compiling with YY_NO_LEAKS by replacing
a blank line with the generated #define rather than adding 3 lines.
* reader.c: gcc-warnings
2023-05-15 Thomas E. Dickey <dickey@invisible-island.net>
* VERSION, package/byacc.spec, package/debian/changelog,
package/mingw-byacc.spec, package/pkgsrc/Makefile:
bump
* reader.c:
when copying parameters, check for a case where the last token is not a
name, e.g., "foo [1]" would have "[1]". In this case, scan back to find
the actual parameter name.
* reader.c:
correct a use-after-free in more_curly, which could occur if a %lex-param
or %parse-param was multi-line (Redhat #2183006).
2023-05-11 Thomas E. Dickey <dickey@invisible-island.net>
* main.c: rename no_space() to on_error()
* error.c: rename no_space() to no_error(), handling any errno
* defs.h: rename no_space() to on_error()
2023-04-03 Thomas E. Dickey <dickey@invisible-island.net>
* aclocal.m4: resync with my-autoconf: CF_GCC_VERSION CF_XOPEN_SOURCE
2023-02-26 Thomas E. Dickey <dickey@invisible-island.net>
* mstring.c, reader.c: yak-indent
2023-02-26 mingodad
* reader.c:
patch for byacc #6: Segmentation fault when trying to parse bison-3.8.2 grammar
2023-02-26 Thomas E. Dickey <dickey@invisible-island.net>
* VERSION, package/byacc.spec, package/debian/changelog,
package/mingw-byacc.spec, package/pkgsrc/Makefile:
bump
2023-02-20 Thomas E. Dickey <dickey@invisible-island.net>
* configure: regen
* aclocal.m4: resync with my-autoconf
2023-02-19 Thomas E. Dickey <dickey@invisible-island.net>
* test/yacc/ok_syntax1.tab.h, test/yacc/ok_syntax1.tab.c,
test/btyacc/ok_syntax1.tab.h, test/btyacc/ok_syntax1.tab.c:
regen
* test/ok_syntax1.y:
modify test for %union to add tag for testing reader.c
* reader.c:
provide for a named union, e.g., "%union foo" by detecting the name and
deferring the typedef in that case until the end of copying the union
definition (report by Dag-Erling Smørgrav).
* VERSION, package/byacc.spec, package/debian/changelog,
package/mingw-byacc.spec, package/pkgsrc/Makefile:
bump
2023-02-01 Thomas E. Dickey <dickey@invisible-island.net>
* configure: regen

View File

@ -1,8 +1,9 @@
MANIFEST for byacc, version t20230201
MANIFEST for byacc, version t20240109
--------------------------------------------------------------------------------
MANIFEST this file
ACKNOWLEDGEMENTS original version of byacc - 1993
AUTHORS nicknames for some contributors (see CHANGES for details)
CHANGES generated changelog
LICENSE summary of byacc's license
Makefile.old renamed from Makefile
NEW_FEATURES original version of byacc - 1993
@ -63,7 +64,7 @@ package/pkgsrc/Makefile scripts from NetBSD pkgsrc, for test-builds
package/pkgsrc/PLIST scripts from NetBSD pkgsrc, for test-builds
package/pkgsrc/distinfo scripts from NetBSD pkgsrc, for test-builds
test subdirectory
test/README describe contents of "test" subdirectory
test/README summary of "test" directory
test/btyacc subdirectory
test/btyacc/big_b.error exercise -L/-B options
test/btyacc/big_b.output exercise -L/-B options

View File

@ -1 +1 @@
20230201
20240109

396
aclocal.m4 vendored
View File

@ -1,4 +1,4 @@
dnl $Id: aclocal.m4,v 1.59 2023/01/05 22:53:11 tom Exp $
dnl $Id: aclocal.m4,v 1.65 2023/12/01 22:22:50 tom Exp $
dnl Macros for byacc configure script (Thomas E. Dickey)
dnl ---------------------------------------------------------------------------
dnl Copyright 2004-2022,2023 Thomas E. Dickey
@ -207,7 +207,7 @@ ifelse([$3],,[ :]dnl
])dnl
])])dnl
dnl ---------------------------------------------------------------------------
dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
dnl ---------------
AC_DEFUN([CF_C11_NORETURN],
[
@ -221,8 +221,7 @@ AC_MSG_RESULT($enable_stdnoreturn)
if test $enable_stdnoreturn = yes; then
AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
[AC_TRY_COMPILE([
#include <stdio.h>
#include <stdlib.h>
$ac_includes_default
#include <stdnoreturn.h>
static _Noreturn void giveup(void) { exit(0); }
],
@ -246,7 +245,7 @@ AC_SUBST(HAVE_STDNORETURN_H)
AC_SUBST(STDC_NORETURN)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
dnl ---------------
dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
dnl into CC. This will not help with broken scripts that wrap the compiler
@ -287,7 +286,7 @@ case "$CC" in
AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
# humor him...
cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
CC="$cf_prog"
for cf_arg in $cf_flags
do
@ -345,7 +344,7 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
dnl -----------------
dnl Check if the given compiler is really clang. clang's C driver defines
dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
@ -367,7 +366,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
AC_TRY_COMPILE([],[
#ifdef __clang__
#else
make an error
#error __clang__ is not defined
#endif
],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
],[])
@ -413,7 +412,7 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
fi
])
dnl ---------------------------------------------------------------------------
dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
dnl -----------------
dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
dnl character-strings.
@ -448,6 +447,7 @@ AC_TRY_COMPILE(
AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
AC_TRY_COMPILE(
[
#undef _CONST_X_STRING
#define _CONST_X_STRING /* X11R7.8 (perhaps) */
#undef XTSTRINGDEFINES /* X11R5 and later */
#include <stdlib.h>
@ -718,7 +718,7 @@ rm -rf ./conftest*
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
dnl --------------
dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
dnl compatible), attempt to determine if icc/clang is actually used.
@ -727,7 +727,7 @@ AC_REQUIRE([AC_PROG_CC])
GCC_VERSION=none
if test "$GCC" = yes ; then
AC_MSG_CHECKING(version of $CC)
GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
test -z "$GCC_VERSION" && GCC_VERSION=unknown
AC_MSG_RESULT($GCC_VERSION)
fi
@ -986,7 +986,152 @@ if test x$cf_cv_gnu_library = xyes; then
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
dnl CF_INSTALL_MAN version: 5 updated: 2023/05/21 15:53:07
dnl --------------
dnl Call this to generate a script "install-man" which uses the detected
dnl manpage-format to compress the resulting manpage. Providing this as a
dnl macro simplifies including the script in different programs.
dnl
dnl The generated script assumes that the program can be renamed, using two
dnl symbols in the manpage, e.g.,
dnl .ds N Yacc
dnl .ds n yacc
dnl which are later used as \*N and \*n, as well as a special case in the
dnl synopsis to work around limitations of makewhatis.
dnl
dnl Script parameters:
dnl $1 = input file
dnl $2 = output filename
dnl
dnl or (uninstall):
dnl $1 = output filename
AC_DEFUN([CF_INSTALL_MAN],
[
AC_REQUIRE([AC_ARG_PROGRAM])
AC_REQUIRE([AC_PROG_INSTALL])
AC_REQUIRE([AC_LN_S])
AC_REQUIRE([CF_MANPAGE_FORMAT])
cf_install_man=install-man
ac_config_files="$ac_config_files $cf_install_man"
cf_install_man=$cf_install_man.in
echo [$]as_me: creating $cf_install_man
cat >[$]cf_install_man <<"CF_EOF"
#!/bin/sh
# generated by CF_INSTALL_MAN
LANG=C; export LANG
LC_ALL=C; export LC_ALL
LC_CTYPE=C; export LC_CTYPE
LANGUAGE=C; export LANGUAGE
INSTALL="@INSTALL@"
INSTALL_DATA="@INSTALL_DATA@"
usage() {
cat <<EOF
Usage: install-man [[-l]] [[source]] target
EOF
exit 1
}
failed() {
echo "?? [$]*" >&2
exit 1
}
test [$]# != 0 || usage
OPTS=
case "x[$]1" in
(x-l)
OPTS="link"
shift
;;
(x-*)
usage
;;
esac
source=
if test [$]# = 2 ; then
source=[$]1; shift
target=[$]1
elif test [$]# = 1 ; then
test -n "$OPTS" && usage
target=[$]1
else
usage
fi
origin_name=`echo "$source" |sed -e 's%^.*/%%' -e 's%\..*%%'`
actual_name=`echo "$origin_name" |sed '@program_transform_name@'`
leading_cap=`echo "$actual_name" | sed -e 's%^\(.\).*$%\1%' | tr a-z A-Z``echo "$actual_name" | sed -e 's%^.%%'`
capitalized=`echo "$actual_name" | tr a-z A-Z`
cf_tmpdir=`mktemp -d`
trap 'rm -rf "$cf_tmpdir"; exit 1' 1 2 3 15
trap 'rm -rf "$cf_tmpdir"; exit 0' 0
if test -n "$source" ; then
suffix=
test -n "@cf_manpage_so_strip" && suffix=".@cf_manpage_so_strip@"
if test "x$OPTS" = xlink ; then
source_dir=`echo "$source" | sed -e "s%/[[^/]]*$%%"`
target_dir=`echo "$target" | sed -e "s%/[[^/]]*$%%"`
sourcelink="${source}${suffix}"
targetfile="${target}${suffix}"
targetlink="${target_dir}/${sourcelink}"
if test ! -d "$target_dir" ; then
failed "target directory does not exist: $target_dir"
elif test ! -f "$targetfile" ; then
failed "target file does not exist: $targetfile"
elif test "$source" != "$source_dir" ; then
failed "unexpected directory for source-link: $source_dir"
fi
test -f "$targetlink" && failed "already exists $targetlink"
( cd "$target_dir" && @LN_S@ "`echo "$targetfile" | sed -e 's%^.*/%%'`" "$sourcelink" )
test -f "$targetlink" || failed "cannot create $targetlink"
target="$targetlink"
else
echo "** installing $source to $target"
interim="$cf_tmpdir"/"`basename $source`"
if test "x$origin_name" != "x$actual_name" ; then
sed \
-e "/^.ds N/s%N.*%N $leading_cap%" \
-e "/^.ds n/s%n.*%n $actual_name%" \
-e "/^\.TH/s%[[ ]][[ ]]*[[^ ]][[^ ]]*% $capitalized%" \
-e "/^\.SH[[ ]][[ ]]*NAME/,/[[ ]]\\\\-[[ ]]/s%^\\\\\\*[[Nn]]%$actual_name%" \
"$source" >"$interim" || exit 1
diff -c "$source" "$interim"
else
cp "$source" "$interim" || exit 1
fi
if test -n "@cf_manpage_compress@" ; then
@cf_manpage_compress@ "$interim"
source="${interim}${suffix}"
fi
if test -d "$target" ; then
target="$target"/"$source"
else
test -n "@cf_manpage_compress@" && target="${target}.@cf_manpage_so_strip@"
fi
$INSTALL_DATA "$source" "$target" || exit 1
fi
echo "...installed $target"
else
echo "** removing $target"
test -n "@cf_manpage_compress@" && target="${target}.@cf_manpage_so_strip@"
if test -f "$target" ; then
rm -f "$target"
echo "...removed $target"
else
echo "...not found"
fi
fi
exit 0
CF_EOF
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
dnl -----------------
dnl Check if the given compiler is really the Intel compiler for Linux. It
dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@ -1012,7 +1157,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
AC_TRY_COMPILE([],[
#ifdef __INTEL_COMPILER
#else
make an error
#error __INTEL_COMPILER is not defined
#endif
],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@ -1124,6 +1269,162 @@ AC_SUBST(ETAGS)
AC_SUBST(MAKE_UPPER_TAGS)
AC_SUBST(MAKE_LOWER_TAGS)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_MANPAGE_FORMAT version: 18 updated: 2023/05/19 18:35:02
dnl -----------------
dnl Option to allow user to override automatic configuration of manpage format.
dnl There are several special cases:
dnl
dnl compress - man checks for, can display compressed files
dnl bzip2 - man checks for, can display bzip2'd files
dnl gzip - man checks for, can display gzip'd files
dnl xz - man checks for, can display xz'd files
dnl
dnl BSDI - files in the cat-directories are suffixed ".0"
dnl formatted - installer should format (put files in cat-directory)
dnl catonly - installer should only format, e.g., for a turnkey system.
dnl
dnl There are other configurations which this macro does not test, e.g., HPUX's
dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
dnl convention would not match our use).
AC_DEFUN([CF_MANPAGE_FORMAT],
[
AC_REQUIRE([CF_PATHSEP])
AC_MSG_CHECKING(format of man-pages)
AC_ARG_WITH(manpage-format,
[ --with-manpage-format specify manpage-format: gzip/compress/bzip2/xz,
BSDI/normal and optionally formatted/catonly,
e.g., gzip,formatted],
[MANPAGE_FORMAT=$withval],
[MANPAGE_FORMAT=unknown])
test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
cf_unknown=
case "$MANPAGE_FORMAT" in
(unknown)
if test -z "$MANPATH" ; then
MANPATH="/usr/man:/usr/share/man"
fi
# look for the 'date' man-page (it is most likely to be installed!)
MANPAGE_FORMAT=
cf_preform="no"
cf_catonly="yes"
cf_example="date"
IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
for cf_dir in $MANPATH; do
test -z "$cf_dir" && cf_dir=/usr/man
for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
do
cf_test=`echo "$cf_name" | sed -e 's/*//'`
if test "x$cf_test" = "x$cf_name" ; then
case "$cf_name" in
(*.bz2) MANPAGE_FORMAT="$MANPAGE_FORMAT bzip2";;
(*.xz) MANPAGE_FORMAT="$MANPAGE_FORMAT xz";;
(*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
(*.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
(*.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
(*) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
esac
case "$cf_name" in
($cf_dir/man*)
cf_catonly=no
;;
($cf_dir/cat*)
cf_preform=yes
;;
esac
break
fi
# if we found a match in either man* or cat*, stop looking
if test -n "$MANPAGE_FORMAT" ; then
cf_found=no
test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
case "$cf_name" in
($cf_dir/cat*)
cf_found=yes
;;
esac
test "$cf_found" = yes && break
fi
done
# only check the first directory in $MANPATH where we find manpages
if test -n "$MANPAGE_FORMAT" ; then
break
fi
done
# if we did not find the example, just assume it is normal
test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
IFS="$ac_save_ifs"
;;
(*)
for cf_option in $MANPAGE_FORMAT; do
case "$cf_option" in
(xz|bzip2|gzip|compress|BSDI|normal|formatted|catonly)
;;
(*)
cf_unknown="$cf_unknown $cf_option"
;;
esac
done
;;
esac
AC_MSG_RESULT($MANPAGE_FORMAT)
if test -n "$cf_unknown" ; then
AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
fi
cf_manpage_format=no
cf_manpage_inboth=no
cf_manpage_so_strip=
cf_manpage_compress=
for cf_item in $MANPAGE_FORMAT
do
case "$cf_item" in
(catonly)
cf_manpage_format=yes
cf_manpage_inboth=no
;;
(formatted)
cf_manpage_format=yes
cf_manpage_inboth=yes
;;
(compress)
cf_manpage_so_strip="Z"
cf_manpage_compress=compress
;;
(gzip)
cf_manpage_so_strip="gz"
cf_manpage_compress=gzip
;;
(bzip2)
cf_manpage_so_strip="bz2"
cf_manpage_compress=bzip2
;;
(xz)
cf_manpage_so_strip="xz"
cf_manpage_compress=xz
;;
esac
done
AC_SUBST(cf_manpage_format)
AC_SUBST(cf_manpage_inboth)
AC_SUBST(cf_manpage_so_strip)
AC_SUBST(cf_manpage_compress)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
@ -1156,7 +1457,7 @@ fi
test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_MKSTEMP version: 12 updated: 2023/01/05 17:53:11
dnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50
dnl ----------
dnl Check for a working mkstemp. This creates two files, checks that they are
dnl successfully created and distinct (AmigaOS apparently fails on the last).
@ -1171,7 +1472,7 @@ $ac_includes_default
int main(void)
{
char *tmpl = "conftestXXXXXX";
static char tmpl[] = "conftestXXXXXX";
char name[2][80];
int n;
int result = 0;
@ -1255,6 +1556,22 @@ case ".$with_cflags" in
esac
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04
dnl ----------
dnl Provide a value for the $PATH and similar separator (or amend the value
dnl as provided in autoconf 2.5x).
AC_DEFUN([CF_PATHSEP],
[
AC_MSG_CHECKING(for PATH separator)
case "$cf_cv_system_name" in
(os2*) PATH_SEPARATOR=';' ;;
(*) ${PATH_SEPARATOR:=':'} ;;
esac
ifelse([$1],,,[$1=$PATH_SEPARATOR])
AC_SUBST(PATH_SEPARATOR)
AC_MSG_RESULT($PATH_SEPARATOR)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
dnl --------------
dnl Check the argument to see that it looks like a pathname. Rewrite it if it
@ -1292,7 +1609,7 @@ case ".[$]$1" in
esac
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
dnl -----------------
dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
dnl
@ -1323,7 +1640,7 @@ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
CF_MSG_LOG(if the symbol is already defined go no further)
AC_TRY_COMPILE([#include <sys/types.h>],[
#ifndef _POSIX_C_SOURCE
make an error
#error _POSIX_C_SOURCE is not defined
#endif],
[cf_cv_posix_c_source=no],
[cf_want_posix_source=no
@ -1342,7 +1659,7 @@ make an error
if test "$cf_want_posix_source" = yes ; then
AC_TRY_COMPILE([#include <sys/types.h>],[
#ifdef _POSIX_SOURCE
make an error
#error _POSIX_SOURCE is defined
#endif],[],
cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
fi
@ -1353,7 +1670,7 @@ make an error
CF_MSG_LOG(if the second compile does not leave our definition intact error)
AC_TRY_COMPILE([#include <sys/types.h>],[
#ifndef _POSIX_C_SOURCE
make an error
#error _POSIX_C_SOURCE is not defined
#endif],,
[cf_cv_posix_c_source=no])
CFLAGS="$cf_save_CFLAGS"
@ -1578,7 +1895,7 @@ if test "$with_dmalloc" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_WITH_MAN2HTML version: 12 updated: 2021/01/03 18:30:50
dnl CF_WITH_MAN2HTML version: 13 updated: 2023/11/23 06:40:35
dnl ----------------
dnl Check for man2html and groff. Prefer man2html over groff, but use groff
dnl as a fallback. See
@ -1620,7 +1937,7 @@ esac
AC_MSG_CHECKING(for program to convert manpage to html)
AC_ARG_WITH(man2html,
[ --with-man2html=XXX use XXX rather than groff],
[[ --with-man2html[=XXX] use XXX rather than groff]],
[cf_man2html=$withval],
[cf_man2html=$cf_man2html])
@ -1761,7 +2078,7 @@ CF_NO_LEAKS_OPTION(valgrind,
[USE_VALGRIND])
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_XOPEN_SOURCE version: 63 updated: 2022/12/29 10:10:26
dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
dnl ---------------
dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
dnl or adapt to the vendor's definitions to get equivalent functionality,
@ -1770,6 +2087,18 @@ dnl
dnl Parameters:
dnl $1 is the nominal value for _XOPEN_SOURCE
dnl $2 is the nominal value for _POSIX_C_SOURCE
dnl
dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
dnl implementation predefines it, because X/Open and most implementations agree
dnl that the latter is a legacy or "aligned" value.
dnl
dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
dnl
dnl References:
dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
AC_DEFUN([CF_XOPEN_SOURCE],[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_REQUIRE([CF_POSIX_VISIBLE])
@ -1784,9 +2113,6 @@ case "$host_os" in
(aix[[4-7]]*)
cf_xopen_source="-D_ALL_SOURCE"
;;
(msys)
cf_XOPEN_SOURCE=600
;;
(darwin[[0-8]].*)
cf_xopen_source="-D_APPLE_C_SOURCE"
;;
@ -1812,7 +2138,7 @@ case "$host_os" in
cf_xopen_source="-D_SGI_SOURCE"
cf_XOPEN_SOURCE=
;;
(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
CF_GNU_SOURCE($cf_XOPEN_SOURCE)
;;
(minix*)
@ -1864,8 +2190,8 @@ case "$host_os" in
cf_save_xopen_cppflags="$CPPFLAGS"
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
# Some of these niche implementations use copy/paste, double-check...
if test "$cf_cv_xopen_source" != no ; then
CF_VERBOSE(checking if _POSIX_C_SOURCE inteferes)
if test "$cf_cv_xopen_source" = no ; then
CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
CPPFLAGS="$cf_save_xopen_cppflags"])
@ -1884,7 +2210,7 @@ if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
AC_TRY_COMPILE([#include <stdlib.h>],[
#ifndef _XOPEN_SOURCE
make an error
#error _XOPEN_SOURCE is not defined
#endif],
[cf_XOPEN_SOURCE_set=yes],
[cf_XOPEN_SOURCE_set=no])
@ -1893,7 +2219,7 @@ make an error
then
AC_TRY_COMPILE([#include <stdlib.h>],[
#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
make an error
#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
#endif],
[cf_XOPEN_SOURCE_set_ok=yes],
[cf_XOPEN_SOURCE_set_ok=no])
@ -1908,22 +2234,20 @@ fi
fi # cf_cv_posix_visible
])
dnl ---------------------------------------------------------------------------
dnl CF__XOPEN_SOURCE_BODY version: 1 updated: 2022/09/10 15:17:35
dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
dnl ---------------------
dnl body of test when test-compiling for _XOPEN_SOURCE check
define([CF__XOPEN_SOURCE_BODY],
[
#ifndef _XOPEN_SOURCE
make an error
#error _XOPEN_SOURCE is not defined
#endif
])
dnl ---------------------------------------------------------------------------
dnl CF__XOPEN_SOURCE_HEAD version: 1 updated: 2022/09/10 15:17:03
dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
dnl ---------------------
dnl headers to include when test-compiling for _XOPEN_SOURCE check
define([CF__XOPEN_SOURCE_HEAD],
[
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
$ac_includes_default
])

63
config.guess vendored
View File

@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2022 Free Software Foundation, Inc.
# Copyright 1992-2023 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
timestamp='2022-08-01'
timestamp='2023-08-22'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
Output the configuration name of the system '$me' is run on.
Options:
-h, --help print this help, then exit
@ -60,13 +60,13 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2022 Free Software Foundation, Inc.
Copyright 1992-2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@ -102,8 +102,8 @@ GUESS=
# temporary files to be created and, as you can see below, it is a
# headache to deal with in a portable fashion.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
# use 'HOST_CC' if defined, but it is deprecated.
# Portable tmp directory creation inspired by the Autoconf team.
@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
set_cc_for_build
cat <<-EOF > "$dummy.c"
#if defined(__ANDROID__)
LIBC=android
#else
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@ -169,6 +172,7 @@ Linux|GNU|GNU/*)
LIBC=musl
#endif
#endif
#endif
EOF
cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
eval "$cc_set_libc"
@ -459,7 +463,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
# Japanese Language versions have a version number like '4.1.3-JL'.
SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
GUESS=sparc-sun-sunos$SUN_REL
;;
@ -904,7 +908,7 @@ EOF
fi
;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
@ -966,11 +970,37 @@ EOF
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
;;
x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
;;
*:[Mm]anagarm:*:*)
GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
;;
*:Minix:*:*)
GUESS=$UNAME_MACHINE-unknown-minix
;;
aarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
set_cc_for_build
CPU=$UNAME_MACHINE
LIBCABI=$LIBC
if test "$CC_FOR_BUILD" != no_compiler_found; then
ABI=64
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __ARM_EABI__
#ifdef __ARM_PCS_VFP
ABI=eabihf
#else
ABI=eabi
#endif
#endif
EOF
cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
eval "$cc_set_abi"
case $ABI in
eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
esac
fi
GUESS=$CPU-unknown-linux-$LIBCABI
;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
@ -1036,6 +1066,15 @@ EOF
k1om:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
kvx:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
kvx:cos:*:*)
GUESS=$UNAME_MACHINE-unknown-cos
;;
kvx:mbr:*:*)
GUESS=$UNAME_MACHINE-unknown-mbr
;;
loongarch32:Linux:*:* | loongarch64:Linux:*:*)
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
;;
@ -1191,7 +1230,7 @@ EOF
GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# If we were able to find 'uname', then EMX Unix compatibility
# is probably installed.
GUESS=$UNAME_MACHINE-pc-os2-emx
;;
@ -1332,7 +1371,7 @@ EOF
GUESS=ns32k-sni-sysv
fi
;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
GUESS=i586-unisys-sysv4
;;

222
config.sub vendored
View File

@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2022 Free Software Foundation, Inc.
# Copyright 1992-2023 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
timestamp='2022-08-01'
timestamp='2023-09-15'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -76,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright 1992-2022 Free Software Foundation, Inc.
Copyright 1992-2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
Try '$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
@ -130,7 +130,7 @@ IFS=$saved_IFS
# Separate into logical components for further validation
case $1 in
*-*-*-*-*)
echo Invalid configuration \`"$1"\': more than four components >&2
echo "Invalid configuration '$1': more than four components" >&2
exit 1
;;
*-*-*-*)
@ -145,7 +145,8 @@ case $1 in
nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
| windows-* )
basic_machine=$field1
basic_os=$maybe_os
;;
@ -943,7 +944,7 @@ $basic_machine
EOF
IFS=$saved_IFS
;;
# We use `pc' rather than `unknown'
# We use 'pc' rather than 'unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
@ -1075,7 +1076,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
cpu=i686
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@ -1180,7 +1181,7 @@ case $cpu-$vendor in
case $cpu in
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
| aarch64 | aarch64_be | aarch64c | arm64ec \
| abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
@ -1199,12 +1200,14 @@ case $cpu-$vendor in
| d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
| javascript \
| h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
| kvx \
| le32 | le64 \
| lm32 \
| loongarch32 | loongarch64 \
@ -1213,31 +1216,7 @@ case $cpu-$vendor in
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r3 | mipsisa32r3el \
| mipsisa32r5 | mipsisa32r5el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r3 | mipsisa64r3el \
| mipsisa64r5 | mipsisa64r5el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mips* \
| mmix \
| mn10200 | mn10300 \
| moxie \
@ -1285,7 +1264,7 @@ case $cpu-$vendor in
;;
*)
echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
exit 1
;;
esac
@ -1306,11 +1285,12 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
if test x$basic_os != x
if test x"$basic_os" != x
then
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
# set os.
obj=
case $basic_os in
gnu/linux*)
kernel=linux
@ -1341,6 +1321,10 @@ EOF
kernel=linux
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
;;
managarm*)
kernel=managarm
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
;;
*)
kernel=
os=$basic_os
@ -1506,10 +1490,16 @@ case $os in
os=eabi
;;
*)
os=elf
os=
obj=elf
;;
esac
;;
aout* | coff* | elf* | pe*)
# These are machine code file formats, not OSes
obj=$os
os=
;;
*)
# No normalization, but not necessarily accepted, that comes below.
;;
@ -1528,12 +1518,15 @@ else
# system, and we'll never get to this point.
kernel=
obj=
case $cpu-$vendor in
score-*)
os=elf
os=
obj=elf
;;
spu-*)
os=elf
os=
obj=elf
;;
*-acorn)
os=riscix1.2
@ -1543,28 +1536,35 @@ case $cpu-$vendor in
os=gnu
;;
arm*-semi)
os=aout
os=
obj=aout
;;
c4x-* | tic4x-*)
os=coff
os=
obj=coff
;;
c8051-*)
os=elf
os=
obj=elf
;;
clipper-intergraph)
os=clix
;;
hexagon-*)
os=elf
os=
obj=elf
;;
tic54x-*)
os=coff
os=
obj=coff
;;
tic55x-*)
os=coff
os=
obj=coff
;;
tic6x-*)
os=coff
os=
obj=coff
;;
# This must come before the *-dec entry.
pdp10-*)
@ -1586,19 +1586,24 @@ case $cpu-$vendor in
os=sunos3
;;
m68*-cisco)
os=aout
os=
obj=aout
;;
mep-*)
os=elf
os=
obj=elf
;;
mips*-cisco)
os=elf
os=
obj=elf
;;
mips*-*)
os=elf
os=
obj=elf
;;
or32-*)
os=coff
os=
obj=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=sysv3
@ -1607,7 +1612,8 @@ case $cpu-$vendor in
os=sunos4.1.1
;;
pru-*)
os=elf
os=
obj=elf
;;
*-be)
os=beos
@ -1688,10 +1694,12 @@ case $cpu-$vendor in
os=uxpv
;;
*-rom68k)
os=coff
os=
obj=coff
;;
*-*bug)
os=coff
os=
obj=coff
;;
*-apple)
os=macos
@ -1709,7 +1717,8 @@ esac
fi
# Now, validate our (potentially fixed-up) OS.
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
case $os in
# Sometimes we do "kernel-libc", so those need to count as OSes.
musl* | newlib* | relibc* | uclibc*)
@ -1720,6 +1729,9 @@ case $os in
# VxWorks passes extra cpu info in the 4th filed.
simlinux | simwindows | spe)
;;
# See `case $cpu-$os` validation below
ghcjs)
;;
# Now accept the basic system types.
# The portable systems comes first.
# Each alternative MUST end in a * to match a version number.
@ -1728,7 +1740,7 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
| hiux* | abug | nacl* | netware* | windows* \
| os9* | macos* | osx* | ios* \
| os9* | macos* | osx* | ios* | tvos* | watchos* \
| mpw* | magic* | mmixware* | mon960* | lnews* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* | twizzler* \
@ -1737,11 +1749,11 @@ case $os in
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
| bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
| ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
| bosx* | nextstep* | cxux* | oabi* \
| ptx* | ecoff* | winnt* | domain* | vsta* \
| udi* | lites* | ieee* | go32* | aux* | hcos* \
| chorusrdb* | cegcc* | glidix* | serenity* \
| cygwin* | msys* | pe* | moss* | proelf* | rtems* \
| cygwin* | msys* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \
@ -1754,7 +1766,7 @@ case $os in
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
| fiwix* )
| fiwix* | mlibc* | cos* | mbr* )
;;
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
@ -1762,41 +1774,99 @@ case $os in
;;
none)
;;
kernel* | msvc* )
# Restricted further below
;;
'')
if test x"$obj" = x
then
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
fi
;;
*)
echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
exit 1
;;
esac
case $obj in
aout* | coff* | elf* | pe*)
;;
'')
# empty is fine
;;
*)
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
exit 1
;;
esac
# Here we handle the constraint that a (synthetic) cpu and os are
# valid only in combination with each other and nowhere else.
case $cpu-$os in
# The "javascript-unknown-ghcjs" triple is used by GHC; we
# accept it here in order to tolerate that, but reject any
# variations.
javascript-ghcjs)
;;
javascript-* | *-ghcjs)
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1
;;
esac
# As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel.
case $kernel-$os in
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
| linux-musl* | linux-relibc* | linux-uclibc* )
case $kernel-$os-$obj in
linux-gnu*- | linux-dietlibc*- | linux-android*- | linux-newlib*- \
| linux-musl*- | linux-relibc*- | linux-uclibc*- | linux-mlibc*- )
;;
uclinux-uclibc* )
uclinux-uclibc*- )
;;
-dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
managarm-mlibc*- | managarm-kernel*- )
;;
windows*-gnu*- | windows*-msvc*-)
;;
-dietlibc*- | -newlib*- | -musl*- | -relibc*- | -uclibc*- | -mlibc*- )
# These are just libc implementations, not actual OSes, and thus
# require a kernel.
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
exit 1
;;
kfreebsd*-gnu* | kopensolaris*-gnu*)
-kernel*- )
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
exit 1
;;
vxworks-simlinux | vxworks-simwindows | vxworks-spe)
*-kernel*- )
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
exit 1
;;
nto-qnx*)
*-msvc*- )
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
exit 1
;;
os2-emx)
kfreebsd*-gnu*- | kopensolaris*-gnu*-)
;;
*-eabi* | *-gnueabi*)
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
;;
-*)
nto-qnx*-)
;;
os2-emx-)
;;
*-eabi*- | *-gnueabi*-)
;;
none--*)
# None (no kernel, i.e. freestanding / bare metal),
# can be paired with an machine code file format
;;
-*-)
# Blank kernel with real OS is always fine.
;;
*-*)
echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
--*)
# Blank kernel and OS with real machine code file format is always fine.
;;
*-*-*)
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1
;;
esac
@ -1879,7 +1949,7 @@ case $vendor in
;;
esac
echo "$cpu-$vendor-${kernel:+$kernel-}$os"
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
exit
# Local variables:

1380
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
dnl Process this file with 'autoconf' to produce a 'configure' script
dnl $Id: configure.in,v 1.28 2023/02/02 00:14:51 tom Exp $
dnl $Id: configure.in,v 1.29 2023/05/19 07:58:43 tom Exp $
AC_PREREQ(2.52.20200802)
AC_REVISION($Revision: 1.28 $)
AC_REVISION($Revision: 1.29 $)
AC_INIT(main.c)
AC_CONFIG_HEADER(config.h:config_h.in)
@ -60,6 +60,8 @@ AC_SUBST(SKELETON)
CF_ENABLE_WARNINGS(Wwrite-strings,yes)
CF_DISABLE_ECHO
CF_DISABLE_LEAKS
CF_MANPAGE_FORMAT
CF_INSTALL_MAN
CF_WITH_MAN2HTML
AC_TYPE_MODE_T

55
defs.h
View File

@ -1,4 +1,4 @@
/* $Id: defs.h,v 1.71 2022/11/06 21:44:54 tom Exp $ */
/* $Id: defs.h,v 1.74 2023/05/18 21:28:05 tom Exp $ */
#ifdef HAVE_CONFIG_H
#include <config.h>
@ -122,6 +122,7 @@ typedef enum
,NONPOSIX_DEBUG
/* other bison "extensions", some useful */
,HACK_DEFINE
,ERROR_VERBOSE
,EXPECT
,EXPECT_RR
@ -187,7 +188,7 @@ SYM_CASES;
#define DO_FREE(x) if (x) { FREE(x); x = 0; }
#define NO_SPACE(p) if (p == 0) no_space(); assert(p != 0)
#define NO_SPACE(p) do { if (p == 0) on_error(); assert(p != 0); } while (0)
/* messages */
#define PLURAL(n) ((n) > 1 ? "s" : "")
@ -470,41 +471,45 @@ struct ainfo
char *a_cptr;
};
extern void arg_number_disagree_warning(int a_lineno, char *a_name);
extern void arg_type_disagree_warning(int a_lineno, int i, char *a_name);
extern GCC_NORETURN void at_error(int a_lineno, char *a_line, char *a_cptr);
extern void arg_number_disagree_warning(int a_lineno, const char *a_name);
extern void arg_type_disagree_warning(int a_lineno, int i, const char *a_name);
extern GCC_NORETURN void at_error(int a_lineno, const char *a_line, const char *a_cptr);
extern void at_warning(int a_lineno, int i);
extern GCC_NORETURN void bad_formals(void);
extern void default_action_warning(char *s);
extern void default_action_warning(const char *s);
extern void destructor_redeclared_warning(const struct ainfo *);
extern GCC_NORETURN void dollar_error(int a_lineno, char *a_line, char *a_cptr);
extern void dislocations_warning(void);
extern GCC_NORETURN void dollar_error(int a_lineno, const char *a_line, const char *a_cptr);
extern void dollar_warning(int a_lineno, int i);
extern GCC_NORETURN void fatal(const char *msg);
extern GCC_NORETURN void illegal_character(char *c_cptr);
extern GCC_NORETURN void illegal_tag(int t_lineno, char *t_line, char *t_cptr);
extern GCC_NORETURN void illegal_character(const char *c_cptr);
extern GCC_NORETURN void illegal_tag(int t_lineno, const char *t_line, const char *t_cptr);
extern GCC_NORETURN void missing_brace(void);
extern GCC_NORETURN void no_grammar(void);
extern GCC_NORETURN void no_space(void);
extern GCC_NORETURN void on_error(void);
extern GCC_NORETURN void open_error(const char *filename);
extern GCC_NORETURN void over_unionized(char *u_cptr);
extern GCC_NORETURN void over_unionized(const char *u_cptr);
extern void prec_redeclared(void);
extern void reprec_warning(char *s);
extern void reprec_warning(const char *s);
extern void restarted_warning(void);
extern void retyped_warning(char *s);
extern void revalued_warning(char *s);
extern void start_requires_args(char *a_name);
extern GCC_NORETURN void syntax_error(int st_lineno, char *st_line, char *st_cptr);
extern void retyped_warning(const char *s);
extern void revalued_warning(const char *s);
extern void start_requires_args(const char *a_name);
extern GCC_NORETURN void syntax_error(int st_lineno, const char *st_line, const char *st_cptr);
extern GCC_NORETURN void terminal_lhs(int s_lineno);
extern GCC_NORETURN void terminal_start(char *s);
extern GCC_NORETURN void tokenized_start(char *s);
extern GCC_NORETURN void undefined_goal(char *s);
extern void undefined_symbol_warning(char *s);
extern GCC_NORETURN void terminal_start(const char *s);
extern GCC_NORETURN void tokenized_start(const char *s);
extern GCC_NORETURN void undefined_goal(const char *s);
extern void undefined_symbol_warning(const char *s);
extern GCC_NORETURN void unexpected_EOF(void);
extern void unknown_arg_warning(int d_lineno, const char *dlr_opt,
const char *d_arg, const char *d_line,
extern void unknown_arg_warning(int d_lineno,
const char *dlr_opt,
const char *d_arg,
const char *d_line,
const char *d_cptr);
extern GCC_NORETURN void unknown_rhs(int i);
extern void unsupported_flag_warning(const char *flag, const char *details);
extern GCC_NORETURN void unexpected_value(const struct ainfo *);
extern GCC_NORETURN void unterminated_action(const struct ainfo *);
extern GCC_NORETURN void unterminated_comment(const struct ainfo *);
extern GCC_NORETURN void unterminated_string(const struct ainfo *);
@ -512,11 +517,11 @@ extern GCC_NORETURN void unterminated_text(const struct ainfo *);
extern GCC_NORETURN void unterminated_union(const struct ainfo *);
extern void untyped_arg_warning(int a_lineno, const char *dlr_opt, const char *a_name);
extern GCC_NORETURN void untyped_lhs(void);
extern GCC_NORETURN void untyped_rhs(int i, char *s);
extern GCC_NORETURN void used_reserved(char *s);
extern GCC_NORETURN void untyped_rhs(int i, const char *s);
extern GCC_NORETURN void used_reserved(const char *s);
extern GCC_NORETURN void unterminated_arglist(const struct ainfo *);
extern void wrong_number_args_warning(const char *which, const char *a_name);
extern void wrong_type_for_arg_warning(int i, char *a_name);
extern void wrong_type_for_arg_warning(int i, const char *a_name);
/* graph.c */
extern void graph(void);

73
error.c
View File

@ -1,4 +1,4 @@
/* $Id: error.c,v 1.14 2016/12/02 18:35:55 tom Exp $ */
/* $Id: error.c,v 1.17 2023/05/18 21:38:35 tom Exp $ */
/* routines for printing error messages */
@ -12,10 +12,13 @@ fatal(const char *msg)
}
void
no_space(void)
on_error(void)
{
fprintf(stderr, "%s: f - out of space\n", myname);
done(2);
const char *msg;
if (errno && (msg = strerror(errno)) != NULL)
fatal(msg);
else
fatal("unknown error");
}
void
@ -68,7 +71,7 @@ print_pos(const char *st_line, const char *st_cptr)
}
void
syntax_error(int st_lineno, char *st_line, char *st_cptr)
syntax_error(int st_lineno, const char *st_line, const char *st_cptr)
{
fprintf(stderr, "%s: e - line %d of \"%s\", syntax error\n",
myname, st_lineno, input_file_name);
@ -76,6 +79,15 @@ syntax_error(int st_lineno, char *st_line, char *st_cptr)
done(1);
}
void
unexpected_value(const struct ainfo *a)
{
fprintf(stderr, "%s: e - line %d of \"%s\", unexpected value\n",
myname, a->a_lineno, input_file_name);
print_pos(a->a_line, a->a_cptr);
done(1);
}
void
unterminated_comment(const struct ainfo *a)
{
@ -113,7 +125,7 @@ declaration\n", myname, a->a_lineno, input_file_name);
}
void
over_unionized(char *u_cptr)
over_unionized(const char *u_cptr)
{
fprintf(stderr, "%s: e - line %d of \"%s\", too many %%union \
declarations\n", myname, lineno, input_file_name);
@ -122,7 +134,7 @@ declarations\n", myname, lineno, input_file_name);
}
void
illegal_tag(int t_lineno, char *t_line, char *t_cptr)
illegal_tag(int t_lineno, const char *t_line, const char *t_cptr)
{
fprintf(stderr, "%s: e - line %d of \"%s\", illegal tag\n",
myname, t_lineno, input_file_name);
@ -131,7 +143,7 @@ illegal_tag(int t_lineno, char *t_line, char *t_cptr)
}
void
illegal_character(char *c_cptr)
illegal_character(const char *c_cptr)
{
fprintf(stderr, "%s: e - line %d of \"%s\", illegal character\n",
myname, lineno, input_file_name);
@ -140,7 +152,7 @@ illegal_character(char *c_cptr)
}
void
used_reserved(char *s)
used_reserved(const char *s)
{
fprintf(stderr,
"%s: e - line %d of \"%s\", illegal use of reserved symbol \
@ -149,7 +161,7 @@ used_reserved(char *s)
}
void
tokenized_start(char *s)
tokenized_start(const char *s)
{
fprintf(stderr,
"%s: e - line %d of \"%s\", the start symbol %s cannot be \
@ -158,14 +170,14 @@ declared to be a token\n", myname, lineno, input_file_name, s);
}
void
retyped_warning(char *s)
retyped_warning(const char *s)
{
fprintf(stderr, "%s: w - line %d of \"%s\", the type of %s has been \
redeclared\n", myname, lineno, input_file_name, s);
}
void
reprec_warning(char *s)
reprec_warning(const char *s)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", the precedence of %s has been \
@ -173,14 +185,14 @@ redeclared\n", myname, lineno, input_file_name, s);
}
void
revalued_warning(char *s)
revalued_warning(const char *s)
{
fprintf(stderr, "%s: w - line %d of \"%s\", the value of %s has been \
redeclared\n", myname, lineno, input_file_name, s);
}
void
terminal_start(char *s)
terminal_start(const char *s)
{
fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s is a \
token\n", myname, lineno, input_file_name, s);
@ -234,7 +246,7 @@ end of the current rule\n", myname, a_lineno, input_file_name, i);
}
void
dollar_error(int a_lineno, char *a_line, char *a_cptr)
dollar_error(int a_lineno, const char *a_line, const char *a_cptr)
{
fprintf(stderr, "%s: e - line %d of \"%s\", illegal $-name\n",
myname, a_lineno, input_file_name);
@ -242,6 +254,13 @@ dollar_error(int a_lineno, char *a_line, char *a_cptr)
done(1);
}
void
dislocations_warning(void)
{
fprintf(stderr, "%s: e - line %d of \"%s\", expected %%locations\n",
myname, lineno, input_file_name);
}
void
untyped_lhs(void)
{
@ -251,7 +270,7 @@ untyped_lhs(void)
}
void
untyped_rhs(int i, char *s)
untyped_rhs(int i, const char *s)
{
fprintf(stderr, "%s: e - line %d of \"%s\", $%d (%s) is untyped\n",
myname, lineno, input_file_name, i, s);
@ -267,7 +286,7 @@ unknown_rhs(int i)
}
void
default_action_warning(char *s)
default_action_warning(const char *s)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", the default action for %s assigns an \
@ -276,14 +295,14 @@ undefined value to $$\n",
}
void
undefined_goal(char *s)
undefined_goal(const char *s)
{
fprintf(stderr, "%s: e - the start symbol %s is undefined\n", myname, s);
done(1);
}
void
undefined_symbol_warning(char *s)
undefined_symbol_warning(const char *s)
{
fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
}
@ -306,7 +325,7 @@ end of the current rule\n", myname, a_lineno, input_file_name, i);
}
void
at_error(int a_lineno, char *a_line, char *a_cptr)
at_error(int a_lineno, const char *a_line, const char *a_cptr)
{
fprintf(stderr,
"%s: e - line %d of \"%s\", illegal @$ or @N reference\n",
@ -326,7 +345,7 @@ unterminated_arglist(const struct ainfo *a)
}
void
arg_number_disagree_warning(int a_lineno, char *a_name)
arg_number_disagree_warning(int a_lineno, const char *a_name)
{
fprintf(stderr, "%s: w - line %d of \"%s\", number of arguments of %s "
"doesn't agree with previous declaration\n",
@ -343,7 +362,7 @@ bad_formals(void)
}
void
arg_type_disagree_warning(int a_lineno, int i, char *a_name)
arg_type_disagree_warning(int a_lineno, int i, const char *a_name)
{
fprintf(stderr, "%s: w - line %d of \"%s\", type of argument %d "
"to %s doesn't agree with previous declaration\n",
@ -351,8 +370,10 @@ arg_type_disagree_warning(int a_lineno, int i, char *a_name)
}
void
unknown_arg_warning(int d_lineno, const char *dlr_opt, const char *d_arg, const char
*d_line, const char *d_cptr)
unknown_arg_warning(int d_lineno, const char *dlr_opt,
const char *d_arg,
const char *d_line,
const char *d_cptr)
{
fprintf(stderr, "%s: w - line %d of \"%s\", unknown argument %s%s\n",
myname, d_lineno, input_file_name, dlr_opt, d_arg);
@ -376,7 +397,7 @@ wrong_number_args_warning(const char *which, const char *a_name)
}
void
wrong_type_for_arg_warning(int i, char *a_name)
wrong_type_for_arg_warning(int i, const char *a_name)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", wrong type for default argument %d to %s\n",
@ -385,7 +406,7 @@ wrong_type_for_arg_warning(int i, char *a_name)
}
void
start_requires_args(char *a_name)
start_requires_args(const char *a_name)
{
fprintf(stderr,
"%s: w - line %d of \"%s\", start symbol %s requires arguments\n",

6
main.c
View File

@ -1,4 +1,4 @@
/* $Id: main.c,v 1.73 2021/08/08 20:39:34 tom Exp $ */
/* $Id: main.c,v 1.74 2023/05/11 07:51:36 tom Exp $ */
#include <signal.h>
#if !defined(_WIN32) || defined(__MINGW32__)
@ -563,8 +563,8 @@ static char *
alloc_file_name(size_t len, const char *suffix)
{
char *result = TMALLOC(char, len + strlen(suffix) + 1);
if (result == 0)
no_space();
if (result == NULL)
on_error();
strcpy(result, file_prefix);
strcpy(result + len, suffix);
return result;

View File

@ -1,4 +1,4 @@
# $Id: makefile.in,v 1.25 2022/11/06 21:03:11 tom Exp $
# $Id: makefile.in,v 1.26 2023/05/19 23:16:31 tom Exp $
#
# UNIX template-makefile for Berkeley Yacc
@ -99,7 +99,7 @@ all : $(THIS)$x
install: all installdirs
$(INSTALL_PROGRAM) $(THIS)$x $(bindir)/$(actual_bin)
- $(INSTALL_DATA) $(srcdir)/$(THIS).1 $(mandir)/$(actual_man)
@ $(SHELL) ./install-man $(srcdir)/$(THIS).1 $(mandir)/$(actual_man)
installdirs:
mkdir -p $(bindir)
@ -107,7 +107,7 @@ installdirs:
uninstall:
- rm -f $(bindir)/$(actual_bin)
- rm -f $(mandir)/$(actual_man)
@ $(SHELL) ./install-man $(mandir)/$(actual_man)
################################################################################
.SUFFIXES : .c $o .i .skel
@ -135,7 +135,7 @@ clean :: mostlyclean
- rm -f $(THIS)$x
distclean :: clean
- rm -f config.log config.cache config.status config.h makefile man2html.tmp
- rm -f config.log config.cache config.status config.h makefile man2html.tmp install-man*
- rm -f $(testdir)/yacc/test-* $(testdir)/btyacc/test-*
realclean :: distclean

View File

@ -1,4 +1,4 @@
/* $Id: mstring.c,v 1.9 2019/11/19 23:54:53 tom Exp $ */
/* $Id: mstring.c,v 1.10 2023/02/26 10:15:01 tom Exp $ */
#include <stdlib.h>
#include <stdio.h>
@ -40,7 +40,7 @@ msprintf(struct mstring *s, const char *fmt, ...)
do
{
va_start(args, fmt);
len = (size_t) vsnprintf(buf_ptr, buf_len, fmt, args);
len = (size_t)vsnprintf(buf_ptr, buf_len, fmt, args);
va_end(args);
if ((changed = (len > buf_len)) != 0)
{
@ -57,17 +57,17 @@ msprintf(struct mstring *s, const char *fmt, ...)
while (changed);
#else
va_start(args, fmt);
len = (size_t) vsprintf(buf_ptr, fmt, args);
len = (size_t)vsprintf(buf_ptr, fmt, args);
va_end(args);
if (len >= buf_len)
return;
#endif
if (len > (size_t) (s->end - s->ptr))
if (len > (size_t)(s->end - s->ptr))
{
char *new_base;
size_t cp = (size_t) (s->ptr - s->base);
size_t cl = (size_t) (s->end - s->base);
size_t cp = (size_t)(s->ptr - s->base);
size_t cl = (size_t)(s->end - s->base);
size_t nl = cl;
while (len > (nl - cp))
nl = nl + nl + TAIL;
@ -97,7 +97,7 @@ mputchar(struct mstring *s, int ch)
return ch;
if (s->ptr == s->end)
{
size_t len = (size_t) (s->end - s->base);
size_t len = (size_t)(s->end - s->base);
if ((s->base = realloc(s->base, len + len + TAIL)))
{
s->ptr = s->base + len;

View File

@ -1,4 +1,4 @@
/* $Id: output.c,v 1.100 2022/01/09 18:03:56 tom Exp $ */
/* $Id: output.c,v 1.101 2023/05/16 21:19:48 tom Exp $ */
#include "defs.h"
@ -1623,21 +1623,14 @@ output_pure_parser(FILE * fp)
if (fp == code_file)
++outline;
fprintf(fp, "#define YYPURE %d\n", pure_parser);
putc_code(fp, '\n');
}
#if defined(YY_NO_LEAKS)
static void
output_no_leaks(FILE * fp)
{
putc_code(fp, '\n');
if (fp == code_file)
++outline;
fputs("#define YY_NO_LEAKS 1\n", fp);
#else
putc_code(fp, '\n');
}
#endif
}
static void
output_trailing_text(void)
@ -2092,9 +2085,6 @@ output(void)
output_prefix(fp);
output_pure_parser(fp);
#if defined(YY_NO_LEAKS)
output_no_leaks(fp);
#endif
output_stored_text(fp);
output_stype(fp);
#if defined(YYBTYACC)

View File

@ -1,119 +0,0 @@
Summary: public domain Berkeley LALR Yacc parser generator
%global AppVersion 2.0
%global AppPatched 20230201
%global AltProgram byacc2
%global UseProgram yacc
# $Id: byacc.spec,v 1.70 2023/02/02 00:12:06 tom Exp $
Name: byacc
Version: %{AppVersion}.%{AppPatched}
Release: 1
License: Public Domain, MIT
URL: https://invisible-island.net/%{name}/
Source0: https://invisible-mirror.net/archives/%{name}/%{name}-%{AppPatched}.tgz
%description
This package provides a parser generator utility that reads a grammar
specification from a file and generates an LR(1) parser for it. The
parsers consist of a set of LALR(1) parsing tables and a driver
routine written in the C programming language. It has a public domain
license which includes the generated C.
%package -n byacc2
Summary: public domain Berkeley LALR Yacc parser generator with backtracking
%description -n byacc2
This package provides a parser generator utility that reads a grammar
specification from a file and generates an LR(1) parser for it. The
parsers consist of a set of LALR(1) parsing tables and a driver
routine written in the C programming language. It has a public domain
license which includes the generated C.
This package has the backtracking extension.
%prep
%global debug_package %{nil}
%setup -q -n %{name}-%{AppPatched}
%build
%define my_srcdir ..
%define CFG_OPTS \\\
--verbose \\\
--disable-echo \\\
--enable-stdnoreturn \\\
--target %{_target_platform} \\\
--prefix=%{_prefix} \\\
--srcdir=%{my_srcdir} \\\
--bindir=%{_bindir} \\\
--libdir=%{_libdir} \\\
--mandir=%{_mandir}
%global _configure ../configure
mkdir BUILD-byacc
pushd BUILD-byacc
CONFIGURE_TOP=%{my_srcdir} \
%configure %{CFG_OPTS} \
--program-prefix=b \
make
popd
mkdir BUILD-byacc2
pushd BUILD-byacc2
CONFIGURE_TOP=%{my_srcdir} \
%configure %{CFG_OPTS} \
--enable-btyacc \
--program-transform-name='s,\<yacc,byacc2,g' \
--with-max-table-size=123456 \
make
popd
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
pushd BUILD-byacc
make install DESTDIR=$RPM_BUILD_ROOT
( cd $RPM_BUILD_ROOT%{_bindir} && ln -vs %{name} %{UseProgram} )
popd
pushd BUILD-byacc2
make install DESTDIR=$RPM_BUILD_ROOT
popd
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%files
%doc ACKNOWLEDGEMENTS CHANGES NEW_FEATURES NOTES NO_WARRANTY README
%license LICENSE
%{_bindir}/%{name}
%{_bindir}/%{UseProgram}
%{_mandir}/man1/%{name}.*
%files -n byacc2
%doc ACKNOWLEDGEMENTS CHANGES NEW_FEATURES NOTES NO_WARRANTY README README.BTYACC
%license LICENSE
%{_bindir}/%{AltProgram}
%{_mandir}/man1/%{AltProgram}.*
%changelog
# each patch should add its ChangeLog entries here
* Sun Jan 09 2022 Thomas Dickey
- rpmlint
* Sat Jan 01 2022 Thomas Dickey
- rename btyacc package to byacc2 to co-exist with traditional btyacc
* Fri May 25 2018 Thomas Dickey
- add btyacc package
* Sun Jul 09 2017 Thomas Dickey
- use predefined "configure"
* Sun Jun 06 2010 Thomas Dickey
- initial version

View File

@ -1,519 +0,0 @@
byacc (1:2.0.20230201) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 01 Feb 2023 19:12:06 -0500
byacc (1:2.0.20221229) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 29 Dec 2022 05:23:05 -0500
byacc (1:2.0.20221106) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 06 Nov 2022 10:51:43 -0500
byacc (1:2.0.20220128) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 28 Jan 2022 08:38:52 -0500
byacc (1:2.0.20220114) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 14 Jan 2022 16:33:35 -0500
byacc (1:2.0.20220109) unstable; urgency=low
* maintenance updates, modify packaging to more closely match distributors.
In particular, correct versioning using an epoch.
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 09 Jan 2022 10:49:20 -0500
byacc (20220102) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 02 Jan 2022 11:12:56 -0500
byacc (20220101) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Jan 2022 07:06:35 -0500
byacc (20211224) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 24 Dec 2021 19:13:22 -0500
byacc (20210808) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 08 Aug 2021 15:26:10 -0400
byacc (20210802) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 02 Aug 2021 16:50:01 -0400
byacc (20210801) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 01 Aug 2021 15:30:22 -0400
byacc (20210619) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 19 Jun 2021 14:06:48 -0400
byacc (20210520) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 20 May 2021 15:25:00 -0400
byacc (20210328) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 28 Mar 2021 11:14:10 -0400
byacc (20210109) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 09 Jan 2021 09:32:51 -0500
byacc (20200910) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 10 Sep 2020 10:45:10 -0400
byacc (20200330) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 30 Mar 2020 19:31:42 -0400
byacc (20191125) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 25 Nov 2019 18:13:14 -0500
byacc (20191119) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 19 Nov 2019 20:40:56 -0500
byacc (20191103) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 03 Nov 2019 16:42:41 -0500
byacc (20190617) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 16 Jun 2019 15:51:03 -0400
byacc (20190616) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 16 Jun 2019 08:55:03 -0400
byacc (20180609) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 09 Jun 2018 20:42:16 -0400
byacc (20180525) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 21 May 2018 18:50:44 -0400
byacc (20180510) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 10 May 2018 04:59:09 -0400
byacc (20180509) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 09 May 2018 21:13:51 -0400
byacc (20180508) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 08 May 2018 16:24:39 -0400
byacc (20170709) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 09 Jul 2017 13:49:13 -0400
byacc (20170430) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 30 Apr 2017 16:55:15 -0400
byacc (20170201) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 01 Feb 2017 04:55:04 -0500
byacc (20161202) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 02 Dec 2016 07:58:46 -0500
byacc (20160606) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 06 Jun 2016 20:44:26 -0400
byacc (20160601) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 06 Jun 2016 05:21:18 -0400
byacc (20160324) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 24 Mar 2016 19:55:52 -0400
byacc (20150711) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 10 Jul 2015 20:53:15 -0400
byacc (20150705) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 05 Jul 2015 18:24:51 -0400
byacc (20141128) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 28 Nov 2014 10:42:17 -0500
byacc (20141006) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 06 Oct 2014 18:52:03 -0400
byacc (20141005) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 27 Jul 2014 10:45:06 -0400
byacc (20140715) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 15 Jul 2014 15:36:54 -0400
byacc (20140527) unstable; urgency=low
* remove obsolete option from usage message
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 27 May 2014 22:01:55 -0400
byacc (20140422) unstable; urgency=low
* maintenance updates
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 22 Apr 2014 04:13:20 -0400
byacc (20140409) unstable; urgency=low
* integrate Tom Shield's btyacc-related changes
* add test-cases to fill in gaps reported by lcov
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 09 Apr 2014 15:53:59 -0400
byacc (20140101) unstable; urgency=low
* yytname[] changes
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 01 Jan 2014 10:02:12 -0500
byacc (20130925) unstable; urgency=low
* increase default stack-size
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 25 Sep 2013 18:41:54 -0400
byacc (20130304) unstable; urgency=low
* changes prompted by Richard Mitton bug-report
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 04 Mar 2013 20:17:32 -0500
byacc (20121003) unstable; urgency=low
* changes from or prompted by Adrian Bunk.
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 29 Sep 2012 09:14:31 -0400
byacc (20120526) unstable; urgency=low
* minor code-cleanup.
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 26 May 2012 12:14:17 -0400
byacc (20120115) unstable; urgency=low
* add testcases, improve documentation for "-s" option.
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 13 Jan 2012 20:44:34 -0500
byacc (20111219) unstable; urgency=low
* add "-s" option.
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 19 Dec 2011 20:54:09 -0500
byacc (20110908) unstable; urgency=low
* add "-i" option.
* add error-check in reader.c
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 05 Sep 2011 20:05:51 -0400
byacc (20101229) unstable; urgency=low
* fixes from Christos Zoulos
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 29 Dec 2010 13:03:50 -0500
byacc (20101226) unstable; urgency=low
* portability fix for MinGW
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 25 Dec 2010 19:37:54 -0500
byacc (20101127) unstable; urgency=low
* corrected yyerror use of %parse-param data
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 27 Nov 2010 12:32:00 -0500
byacc (20101126) unstable; urgency=low
* additional fix to generated code to avoid symbol conflict
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Nov 2010 04:23:08 -0500
byacc (20101124) unstable; urgency=low
* amend fix for Red Hat #112617 to restore warning message.
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 22 Nov 2010 08:21:23 -0500
byacc (20101122) unstable; urgency=low
* fix for generated header to avoid symbol conflict
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 22 Nov 2010 08:21:23 -0500
byacc (20100610) unstable; urgency=low
* Add package scripts to upstream source, for test-builds.
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 10 Jun 2010 08:59:11 -0400
byacc (20100216-1) unstable; urgency=low
* New upstream release
* debian/source/format: Added using format "3.0 (quilt)"
-- Dave Beckett <dajobe@debian.org> Tue, 20 Apr 2010 12:56:11 -0700
byacc (20091027-1) unstable; urgency=low
* New upstream release
* debian/control:
- Updated to policy 3.8.4
- Add ${misc:Depends}
-- Dave Beckett <dajobe@debian.org> Tue, 02 Feb 2010 21:36:34 -0800
byacc (20090221-1) unstable; urgency=low
* New upstream release
-- Dave Beckett <dajobe@debian.org> Thu, 26 Feb 2009 21:06:20 -0800
byacc (20080826-1) unstable; urgency=high
* New upstream release
* debian/patches/02-skeleton.patch: Removed - merged upstream
* debian/control: Updated to policy 3.8.0
* debian/preinst, debian/postrm: removed - empty (lintian)
* debian/watch: version 3 and make FTP passive
* Acknowledge NMU - thanks.
-- Dave Beckett <dajobe@debian.org> Wed, 11 Sep 2008 23:58:00 -0700
byacc (20070509-1.1) unstable; urgency=high
* Non-maintainer upload.
* Fix stack overflow in skeleton.c with upstream patch.
Closes: #491182 aka CVE-2008-3196
-- Thomas Viehmann <tv@beamnet.de> Sun, 24 Aug 2008 23:13:07 +0200
byacc (20070509-1) unstable; urgency=low
* New upstream release
* debian/watch: Fix to use passive FTP
* debian/compat: added instead of use of DH_COMPAT in debian/rules
-- Dave Beckett <dajobe@debian.org> Tue, 26 Jun 2007 22:39:45 -0700
byacc (20050813-1) unstable; urgency=low
* New upstream release:
- Do not close union_file for -d option (Closes: #322858)
-- Dave Beckett <dajobe@debian.org> Sun, 14 Aug 2005 10:14:12 +0100
byacc (20050505-1) unstable; urgency=low
* New maintainer (Closes: #321377)
* Switch to new upstream and new source (Closes: #240662)
* debian/copyright: Update to new upstream and add source information
(Closes: #166300)
* Acknowledge fix in NMUs (Closes: #283174)
* New manual page does not have the formatting problem (Closes: #100947)
* Added debian/watch file.
-- Dave Beckett <dajobe@debian.org> Fri, 5 Aug 2005 22:50:20 +0100
byacc (1.9.1-1.1) unstable; urgency=low
* Remove alternative in prerm. Closes: #283174
-- LaMont Jones <lamont@debian.org> Fri, 26 Nov 2004 18:49:09 -0700
byacc (1.9.1-1) unstable; urgency=low
* Maintainer upload.
* Fixed alternatives entry, closes: Bug#146195;
* Changed priority to "extra" at behest of Daniel Bungert,
closes: Bug#142271.
* Fixed awful packaging error which meant the test/ directory was excluded
from the orig.tar.gz.
-- Jason Henry Parker <henry@debian.org> Fri, 27 Sep 2002 16:25:27 -0400
byacc (1.9-13.1) unstable; urgency=low
* Non-maintainer upload
* Removed erraneous escapes in manpage - some data wasn't visable,
closes: Bug#100947
* Alternatives entry added, closes: Bug#113168
* Standards-version: 3.5.6
* Maintainer script cleaning
-- Daniel Bungert <drb@debian.org> Fri, 29 Mar 2002 16:58:30 -0500
byacc (1.9-13) unstable; urgency=low
* Applied patch from "Randolph Chung" <tausq@debian.org> to fix build problems
on ia64, closes: Bug#91966
-- Jason Henry Parker <henry@debian.org> Thu, 29 Mar 2001 21:41:19 +1000
byacc (1.9-12) unstable; urgency=low
* Updated to latest version of debhelper, and Standards-Version: 3.2.1.0, closes: Bug#81444
* Added Build-Depends: debhelper, closes: Bug#70207
* Removed mktemp() calls in main.c
-- Jason Henry Parker <henry@debian.org> Mon, 18 Dec 2000 08:02:54 +1000
byacc (1.9-11.7) unstable; urgency=low
* New maintainer.
* Updated to dh_make and standards version 2.4.0.0, no lintian errors
or warnings.
* Added several more files from the upstream distribution to
/usr/doc/byacc.
-- Jason Henry Parker <henry@debian.org> Sat, 2 Jan 1999 03:04:17 +1000
byacc (1.9-11.6) unstable; urgency=low
* Patch by <mdorman@law.miami.edu> to remove some
superfluous files that can interfere with the build process on other
architectures. (Bug #21607).
-- Vincent Renardias <vincent@waw.com> Fri, 24 Apr 1998 19:56:58 +0200
byacc (1.9-11.5) unstable; urgency=low
* Added 'binary-arch' target in debian/rules (Bug #12742).
-- Vincent Renardias <vincent@waw.com> Sun, 9 Nov 1997 23:37:31 +0100
byacc (1.9-11.4) unstable; urgency=low
* Cosmetic change (Fix bug #9623).
-- Vincent Renardias <vincent@waw.com> Fri, 9 May 1997 16:30:24 +0200
byacc (1.9-11.3) unstable; urgency=low
* Rebuilt with libc6.
-- Debian QA Group <debian-qa@lists.debian.org> Thu, 1 May 1997 22:02:04 +0200
byacc (1.9-11.2) unstable; urgency=low
* Orphaned the package at his maintainer's request (dgregor@coil.com).
-- Debian QA Group <debian-qa@lists.debian.org> Sun, 20 Apr 1997 20:03:03 +0200
byacc (1.9-11.1) unstable; urgency=low
* Converted to new source format (Fixes #8085).
* Compressed manpage.
* Fixed to allow compilation on non-i386 (Fixes #3361).
* Added extended description (Fixes #3567).
* Added diversion to avoid conflict with bison (Fixes #8086).
-- Vincent Renardias <vincent@waw.com> Sun, 20 Apr 1997 15:59:28 +0200

View File

@ -1,28 +0,0 @@
Source: byacc
Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
Uploaders: Thomas E. Dickey <dickey@his.com>
Section: devel
Priority: optional
Standards-Version: 4.6.0.1
Build-Depends: debhelper-compat (= 12),
Rules-Requires-Root: no
Homepage: https://invisible-island.net/byacc/
Vcs-Browser: https://salsa.debian.org/debian/byacc
Vcs-Git: https://salsa.debian.org/debian/byacc.git
Package: byacc2
Provides: yacc
Architecture: any
Multi-Arch: foreign
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: public domain Berkeley LALR Yacc parser generator
This package provides a parser generator utility that reads a grammar
specification from a file and generates an LR(1) parser for it. The
parsers consist of a set of LALR(1) parsing tables and a driver
routine written in the C programming language. It has a public domain
license which includes the generated C.
.
This package has the backtracking extension, adapted from btyacc.
The package is renamed to allow installing at the same time as "byacc".
.
Related packages: bison, btyacc, byacc, antlr

View File

@ -1,129 +0,0 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: byacc
Upstream-Contact: <dickey@invisible-island.net> (Thomas E. Dickey)
Source: https://invisible-island.net/byacc/
Files: *
Copyright: 2001-2022,2023 by Thomas E. Dickey
License: public-domain
Berkeley Yacc is in the public domain; changes made to it by the current
maintainer are likewise unrestricted. That applies to most of the files.
A few files (currently those related to autoconf scripting) have other
licenses as noted here.
.
Current byacc upstream maintainer: Thomas Dickey <dickey@invisible-island.net>
.
Public domain notice and no warranty:
-------------------------------------------------------------------------------
Berkeley Yacc is an LALR(1) parser generator. Berkeley Yacc has been made
as compatible as possible with AT&T Yacc. Berkeley Yacc can accept any input
specification that conforms to the AT&T Yacc documentation. Specifications
that take advantage of undocumented features of AT&T Yacc will probably be
rejected.
.
Berkeley Yacc is distributed with no warranty whatever. The code
is certain to contain errors. Neither the author nor any contributor
takes responsibility for any consequences of its use.
.
Berkeley Yacc is in the public domain. The data structures and algorithms
used in Berkeley Yacc are all either taken from documents available to the
general public or are inventions of the author. Anyone may freely distribute
source or binary forms of Berkeley Yacc whether unchanged or modified.
Distributers may charge whatever fees they can obtain for Berkeley Yacc.
Programs generated by Berkeley Yacc may be distributed freely.
.
Please report bugs to
.
robert.corbett@eng.Sun.COM
.
Include a small example if possible. Please include the banner string from
skeleton.c with the bug report. Do not expect rapid responses.
-------------------------------------------------------------------------------
Files: aclocal.m4
Copyright: 2004-2022,2023 by Thomas E. Dickey
License: other-BSD
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, distribute with modifications, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included
in all copies or portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
THE USE OR OTHER DEALINGS IN THE SOFTWARE.
.
Except as contained in this notice, the name(s) of the above copyright
holders shall not be used in advertising or otherwise to promote the
sale, use or other dealings in this Software without prior written
authorization.
Files: install-sh
Copyright: 1994 X Consortium
License: other-BSD
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
.
Except as contained in this notice, the name of the X Consortium shall not
be used in advertising or otherwise to promote the sale, use or other deal-
ings in this Software without prior written authorization from the X Consor-
tium.
.
FSF changes to this file are in the public domain.
.
Calling this script install-sh is preferred over install.sh, to prevent
`make' implicit rules from creating a file called install from it
when there is no Makefile.
.
This script is compatible with the BSD install script, but was written
from scratch. It can only install one file at a time, a restriction
shared with many OS's install programs.
Files: package/debian/*
Copyright: 2012-2022,2023 Thomas E. Dickey
License: other-BSD
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of the above listed
copyright holder(s) not be used in advertising or publicity pertaining
to distribution of the software without specific, written prior
permission.
.
THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Files: config.guess config.sub
Copyright: 1992-2021 Free Software Foundation, Inc.
License: GPL-3
On Debian systems, the complete text of the GNU General
Public License can be found in '/usr/share/common-licenses/GPL-3'

View File

@ -1,29 +0,0 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS := hardening=+all qa=+bug reproducible=+all
%:
dh $@
# dh_autoreconf interferes with portability -- skip it
override_dh_autoreconf:
echo "skip: dh_autoreconf autoreconf-dickey -- -f -i"
override_dh_auto_configure:
dh_auto_configure -- \
--enable-warnings \
--verbose \
--enable-stdnoreturn \
--enable-btyacc \
--with-max-table-size=123456 \
--program-transform-name='s,^yacc,byacc2,'
# workaround for whatis
sed -i '/- an LALR/s,^..N,byacc2,' yacc.1
# omit tests which rely upon getopt error-messages
sed -i.bak '/MYFILE=nosuchfile/,/# Test special cases/d' test/run_test.sh
diff -u test/run_test.sh.bak test/run_test.sh || echo OK

View File

@ -1 +0,0 @@
3.0 (native)

View File

@ -1,20 +0,0 @@
version=4
# upstream provides tarballs such as "byacc-20220101.tgz" (originally to
# keep the filenames compatible with systems where multiple "." are illegal).
#
# The version number (2.0) is current since late 2020; before that it was
# "1.9" for a long time. Use
# byacc -V
# to see the version number:
# byacc - 2.0 20220101
#
# The introduction of the back-tracking configuration motivated the change of
# major/minor numbers; for compatibility the parser skeleton still says "1.9".
#
# Patch-dates are always # in yyyymmdd format.
opts=pgpmode=auto,\
dversionmangle=s/^2\.0\.//,\
oversionmangle=s/^(.*)/2.0.$1/ \
https://invisible-mirror.net/archives/byacc/byacc-(\d+)\.tgz

View File

@ -1,68 +0,0 @@
Summary: public domain Berkeley LALR Yacc parser generator
%global AppVersion 2.0
%global AppPatched 20230201
%global UseProgram yacc
# $Id: mingw-byacc.spec,v 1.47 2023/02/02 00:12:06 tom Exp $
Name: byacc
Version: %{AppVersion}.%{AppPatched}
Release: 1
License: Public Domain, MIT
URL: https://invisible-island.net/%{name}/
Source0: https://invisible-mirror.net/archives/%{name}/%{name}-%{AppPatched}.tgz
%description
This package provides a parser generator utility that reads a grammar
specification from a file and generates an LR(1) parser for it. The
parsers consist of a set of LALR(1) parsing tables and a driver
routine written in the C programming language. It has a public domain
license which includes the generated C.
%prep
%global debug_package %{nil}
%setup -q -n %{name}-%{AppPatched}
%build
%configure --verbose \
--program-prefix=b \
--target %{_target_platform} \
--prefix=%{_prefix} \
--bindir=%{_bindir} \
--libdir=%{_libdir} \
--mandir=%{_mandir}
make
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
( cd $RPM_BUILD_ROOT%{_bindir} && ln -s %{name} %{UseProgram} )
strip $RPM_BUILD_ROOT%{_bindir}/%{name}
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%files
%doc ACKNOWLEDGEMENTS CHANGES NEW_FEATURES NOTES NO_WARRANTY README
%license LICENSE
%{_bindir}/%{name}
%{_bindir}/%{UseProgram}
%{_mandir}/man1/%{name}.*
%changelog
# each patch should add its ChangeLog entries here
* Sun Jan 09 2022 Thomas Dickey
- rpmlint
* Sun Jul 09 2017 Thomas Dickey
- use predefined "configure"
* Wed Sep 25 2013 Thomas Dickey
- cloned from byacc.spec

View File

@ -1,6 +0,0 @@
Berkeley Yacc (byacc) is a LALR(1) parser generator. Berkeley Yacc
has been made as compatible as possible with AT&T Yacc. Berkeley
Yacc can accept any input specification that conforms to the AT&T
Yacc documentation.
Some programs depend on a byacc (instead of bison).

View File

@ -1,19 +0,0 @@
# $NetBSD: Makefile,v 1.24 2021/08/14 01:04:32 mef Exp $
#
DISTNAME= byacc-20230201
CATEGORIES= devel
MASTER_SITES= https://invisible-mirror.net/archives/byacc/
DIST_SUBDIR= byacc-20220101
EXTRACT_SUFX= .tgz
MAINTAINER= fcambus@NetBSD.org
HOMEPAGE= https://invisible-island.net/byacc/byacc.html
COMMENT= Berkeley Yacc
LICENSE= public-domain
GNU_CONFIGURE= YES
MAKE_FILE= makefile
.include "../../mk/bsd.pkg.mk"

View File

@ -1,3 +0,0 @@
@comment $NetBSD: PLIST,v 1.2 2005/04/13 14:11:54 wiz Exp $
bin/yacc
man/man1/yacc.1

View File

@ -1,6 +0,0 @@
$NetBSD: distinfo,v 1.4 2008/07/24 17:13:00 tonnerre Exp $
SHA1 (byacc-20050813.tgz) = 3258494f3422eb3150944c1823af1c9c2c386062
RMD160 (byacc-20050813.tgz) = 3ee159857a79025a83e2b0807577925fe460f816
Size (byacc-20050813.tgz) = 138684 bytes
SHA1 (patch-aa) = decae78775a5e0f1e1f7aaaa258da53903aa1f7a

345
reader.c
View File

@ -1,4 +1,4 @@
/* $Id: reader.c,v 1.91 2022/01/09 18:04:58 tom Exp $ */
/* $Id: reader.c,v 1.104 2023/05/18 21:18:17 tom Exp $ */
#include "defs.h"
@ -20,6 +20,11 @@
/* this is a hard limit, but seems more than adequate */
#define MAXARGS 20
/* limit the size of optional names for %union */
#define NAME_LEN 32
#define IS_ALNUM(c) (isalnum(c) || (c) == '_')
#define begin_case(f,n) fprintf(f, "case %d:\n", (int)(n))
#define end_case(f) \
@ -27,6 +32,17 @@
fprintf_lineno(f, 1, ""); \
fprintf(f, "break;\n")
#define begin_ainfo(data, offset) do { \
data.a_lineno = lineno; \
data.a_line = dup_line(); \
data.a_cptr = data.a_line + (cptr - line - offset); \
} while (0)
#define end_ainfo(data) do { \
FREE(data.a_line); \
memset(&data, 0, sizeof(data)); \
} while (0)
static void start_rule(bucket *bp, int s_lineno);
#if defined(YYBTYACC)
static void copy_initial_action(void);
@ -44,8 +60,22 @@ static char **tag_table;
static char saw_eof;
char unionized;
char *cptr, *line;
static int linesize;
char *line; /* current input-line */
char *cptr; /* position within current input-line */
static size_t linesize; /* length of current input-line */
typedef struct
{
char *line_data; /* saved input-line */
size_t line_used; /* position within saved input-line */
size_t line_size; /* length of saved input-line */
fpos_t line_fpos; /* pointer before reading past saved input-line */
}
SAVE_LINE;
static SAVE_LINE save_area;
static int must_save; /* request > 0, triggered < 0, inactive 0 */
static bucket *goal;
static Value_t prec;
@ -264,15 +294,59 @@ line_directive(void)
#undef UNLESS
}
static void
save_line(void)
{
/* remember to save the input-line if we call get_line() */
if (!must_save)
{
must_save = 1;
save_area.line_used = (size_t)(cptr - line);
}
}
static void
restore_line(void)
{
/* if we saved the line, restore it */
if (must_save < 0)
{
free(line);
line = save_area.line_data;
cptr = save_area.line_used + line;
linesize = save_area.line_size;
if (fsetpos(input_file, &save_area.line_fpos) != 0)
on_error();
memset(&save_area, 0, sizeof(save_area));
}
else if (must_save > 0)
{
cptr = line + save_area.line_used;
}
must_save = 0;
}
static void
get_line(void)
{
FILE *f = input_file;
if (must_save > 0)
{
save_area.line_data = TMALLOC(char, linesize);
save_area.line_used = (size_t)(cptr - line);
save_area.line_size = linesize;
NO_SPACE(save_area.line_data);
memcpy(save_area.line_data, line, linesize);
if (fgetpos(f, &save_area.line_fpos) != 0)
on_error();
must_save = -must_save;
}
do
{
int c;
int i;
size_t i;
if (saw_eof || (c = getc(f)) == EOF)
{
@ -348,9 +422,8 @@ skip_comment(void)
{
char *s;
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line);
begin_ainfo(a, 0);
s = cptr + 2;
for (;;)
@ -358,7 +431,7 @@ skip_comment(void)
if (*s == '*' && s[1] == '/')
{
cptr = s + 2;
FREE(a.a_line);
end_ainfo(a);
return;
}
if (*s == '\n')
@ -425,6 +498,7 @@ nextc(void)
{
switch (ch = next_inline())
{
case '\0':
case '\n':
get_line();
break;
@ -459,6 +533,7 @@ keywords[] = {
{ "binary", NONASSOC },
{ "code", XCODE },
{ "debug", NONPOSIX_DEBUG },
{ "define", HACK_DEFINE },
#if defined(YYBTYACC)
{ "destructor", DESTRUCTOR },
#endif
@ -475,6 +550,7 @@ keywords[] = {
{ "locations", LOCATIONS },
#endif
{ "nonassoc", NONASSOC },
{ "nterm", TYPE },
{ "parse-param", PARSE_PARAM },
{ "pure-parser", PURE_PARSER },
{ "right", RIGHT },
@ -597,9 +673,8 @@ copy_string(int quote)
{
struct mstring *temp = msnew();
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line - 1);
begin_ainfo(a, 1);
for (;;)
{
@ -608,7 +683,7 @@ copy_string(int quote)
mputc(temp, c);
if (c == quote)
{
FREE(a.a_line);
end_ainfo(a);
return msdone(temp);
}
if (c == '\n')
@ -649,9 +724,8 @@ copy_comment(void)
else if (c == '*')
{
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line - 1);
begin_ainfo(a, 1);
mputc(temp, c);
++cptr;
@ -663,7 +737,7 @@ copy_comment(void)
{
mputc(temp, '/');
++cptr;
FREE(a.a_line);
end_ainfo(a);
return msdone(temp);
}
if (c == '\n')
@ -706,6 +780,16 @@ copy_code(void)
c = *++cptr;
if (c == EOF)
unexpected_EOF();
if (c == '\0')
{
get_line();
if (line == NULL)
{
unexpected_EOF();
/*NOTREACHED */
}
c = *cptr;
}
if (isspace(UCH(c)))
continue;
@ -806,9 +890,8 @@ copy_text(void)
FILE *f = text_file;
int need_newline = 0;
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line - 2);
begin_ainfo(a, 2);
if (*cptr == '\n')
{
@ -858,7 +941,7 @@ copy_text(void)
if (need_newline)
putc('\n', f);
++cptr;
FREE(a.a_line);
end_ainfo(a);
return;
}
/* FALLTHRU */
@ -873,9 +956,12 @@ copy_text(void)
static void
puts_both(const char *s)
{
fputs(s, text_file);
if (dflag)
fputs(s, union_file);
if (s && *s)
{
fputs(s, text_file);
if (dflag)
fputs(s, union_file);
}
}
static void
@ -892,9 +978,16 @@ copy_union(void)
int c;
int depth;
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line - 6);
char prefix_buf[NAME_LEN + 1];
size_t prefix_len = 0;
char filler_buf[NAME_LEN + 1];
size_t filler_len = 0;
int in_prefix = 1;
prefix_buf[0] = '\0';
filler_buf[0] = '\0';
begin_ainfo(a, 6);
if (unionized)
over_unionized(cptr - 6);
@ -908,12 +1001,51 @@ copy_union(void)
puts_both("#define YYSTYPE_IS_DECLARED 1\n");
fprintf_lineno(text_file, lineno, input_file_name);
puts_both("typedef union YYSTYPE");
depth = 0;
loop:
c = *cptr++;
putc_both(c);
if (in_prefix)
{
if (c == L_CURL)
{
in_prefix = 0;
if (prefix_len)
{
puts_both("union ");
puts_both(prefix_buf);
puts_both(filler_buf);
}
else
{
puts_both("typedef union YYSTYPE");
puts_both(filler_buf);
}
}
else if (isspace(c))
{
if (filler_len >= sizeof(filler_buf) - 1)
{
puts_both(filler_buf);
filler_len = 0;
}
filler_buf[filler_len++] = (char)c;
filler_buf[filler_len] = 0;
if (c != '\n')
goto loop;
}
else if (IS_IDENT(c))
{
if (prefix_len < NAME_LEN)
{
prefix_buf[prefix_len++] = (char)c;
prefix_buf[prefix_len] = 0;
}
goto loop;
}
}
if (c != '\n' || !in_prefix)
putc_both(c);
switch (c)
{
case '\n':
@ -929,9 +1061,15 @@ copy_union(void)
case R_CURL:
if (--depth == 0)
{
puts_both(" YYSTYPE;\n");
puts_both(prefix_len ? "; " : " YYSTYPE;\n");
if (prefix_len)
{
puts_both("typedef union ");
puts_both(prefix_buf);
puts_both(" YYSTYPE;\n");
}
puts_both("#endif /* !YYSTYPE_IS_DECLARED */\n");
FREE(a.a_line);
end_ainfo(a);
return;
}
goto loop;
@ -1017,9 +1155,9 @@ trim_blanks(char *buffer)
static int
more_curly(void)
{
char *save = cptr;
int result = 0;
int finish = 0;
save_line();
do
{
switch (next_inline())
@ -1036,7 +1174,7 @@ more_curly(void)
++cptr;
}
while (!finish);
cptr = save;
restore_line();
return result;
}
@ -1053,6 +1191,24 @@ save_param(int k, char *buffer, int name, int type2)
buffer[type2] = '\0';
(void)trim_blanks(p->type2);
if (!IS_ALNUM(buffer[name]))
{
int n;
for (n = name - 1; n >= 0; --n)
{
if (!isspace(UCH(buffer[n])))
{
break;
}
}
while (n > 0)
{
if (!IS_ALNUM(UCH(buffer[n - 1])))
break;
--n;
}
name = n;
}
p->name = strdup(buffer + name);
NO_SPACE(p->name);
buffer[name] = '\0';
@ -1240,7 +1396,7 @@ copy_param(int k)
type2 = i + 1;
}
while (i > 0 && (isalnum(UCH(parms[i])) || UCH(parms[i]) == '_'))
while (i > 0 && IS_ALNUM(UCH(parms[i])))
i--;
if (!isspace(UCH(parms[i])) && parms[i] != '*')
@ -1280,9 +1436,8 @@ get_literal(void)
char *s;
bucket *bp;
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line);
begin_ainfo(a, 0);
quote = *cptr++;
cinc = 0;
@ -1375,7 +1530,7 @@ get_literal(void)
}
cachec(c);
}
FREE(a.a_line);
end_ainfo(a);
n = cinc;
s = TMALLOC(char, n);
@ -1742,6 +1897,82 @@ declare_argtypes(bucket *bp)
}
#endif
static int
scan_blanks(void)
{
int c;
do
{
c = next_inline();
if (c == '\n')
{
++cptr;
return 0;
}
else if (c == ' ' || c == '\t')
++cptr;
else
break;
}
while (c == ' ' || c == '\t');
return 1;
}
static int
scan_ident(void)
{
int c;
cinc = 0;
for (c = *cptr; IS_IDENT(c); c = *++cptr)
cachec(c);
cachec(NUL);
return cinc;
}
static void
hack_defines(void)
{
struct ainfo a;
if (!scan_blanks())
return;
begin_ainfo(a, 0);
if (!scan_ident())
{
end_ainfo(a);
}
if (!strcmp(cache, "api.pure"))
{
end_ainfo(a);
scan_blanks();
begin_ainfo(a, 0);
scan_ident();
if (!strcmp(cache, "false"))
pure_parser = 0;
else if (!strcmp(cache, "true")
|| !strcmp(cache, "full")
|| *cache == 0)
pure_parser = 1;
else
unexpected_value(&a);
end_ainfo(a);
}
else
{
unexpected_value(&a);
}
while (next_inline() != '\n')
++cptr;
}
static void
declare_types(void)
{
@ -1900,6 +2131,10 @@ read_declarations(void)
tflag = 1;
break;
case HACK_DEFINE:
hack_defines();
break;
case POSIX_YACC:
/* noop for bison compatibility. byacc is already designed to be posix
* yacc compatible. */
@ -1983,9 +2218,7 @@ copy_args(int *alen)
char c, quote = 0;
struct ainfo a;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line - 1);
begin_ainfo(a, 1);
while ((c = *cptr++) != R_PAREN || depth || quote)
{
@ -2029,7 +2262,7 @@ copy_args(int *alen)
}
if (alen)
*alen = len;
FREE(a.a_line);
end_ainfo(a);
return msdone(s);
}
@ -2681,9 +2914,7 @@ copy_action(void)
Value_t *offsets = NULL, maxoffset;
bucket **rhs;
a.a_lineno = lineno;
a.a_line = dup_line();
a.a_cptr = a.a_line + (cptr - line);
begin_ainfo(a, 0);
if (last_was_action)
insert_empty_rule();
@ -2877,10 +3108,8 @@ copy_action(void)
{
if (!locations)
{
int l_lineno = lineno;
char *l_line = dup_line();
char *l_cptr = l_line + (cptr - line);
syntax_error(l_lineno, l_line, l_cptr);
dislocations_warning();
locations = 1;
}
if (cptr[1] == '$')
{
@ -2949,7 +3178,7 @@ copy_action(void)
goto loop;
}
end_case(f);
FREE(a.a_line);
end_ainfo(a);
if (maxoffset > 0)
FREE(offsets);
return;
@ -2969,7 +3198,7 @@ copy_action(void)
if (depth > 0)
goto loop;
end_case(f);
free(a.a_line);
end_ainfo(a);
if (maxoffset > 0)
FREE(offsets);
return;
@ -3011,7 +3240,7 @@ copy_action(void)
}
#endif
end_case(f);
free(a.a_line);
end_ainfo(a);
if (maxoffset > 0)
FREE(offsets);
return;
@ -3057,9 +3286,7 @@ get_code(struct ainfo *a, const char *loc)
else
syntax_error(lineno, line, cptr);
a->a_lineno = lineno;
a->a_line = dup_line();
a->a_cptr = a->a_line + (cptr - line);
begin_ainfo((*a), 0);
depth = 0;
loop:
@ -3097,10 +3324,8 @@ get_code(struct ainfo *a, const char *loc)
{
if (!locations)
{
int l_lineno = lineno;
char *l_line = dup_line();
char *l_cptr = l_line + (cptr - line);
syntax_error(l_lineno, l_line, l_cptr);
dislocations_warning();
locations = 1;
}
msprintf(code_mstr, "%s", loc);
cptr += 2;
@ -3165,7 +3390,7 @@ copy_initial_action(void)
struct ainfo a;
initial_action = get_code(&a, "yyloc");
free(a.a_line);
end_ainfo(a);
}
static void
@ -3247,7 +3472,7 @@ copy_destructor(void)
else
break;
}
free(a.a_line);
end_ainfo(a);
free(code_text);
}

View File

@ -1,4 +0,0 @@
-- $Id: README,v 1.1 2004/03/28 19:10:48 tom Exp $
The files in this directory are input (.y) and output (.output, .tab.c, .tab.h)
examples.

View File

@ -1,30 +0,0 @@
Usage: YACC [options] filename
Options:
-b file_prefix set filename prefix (default "y.")
-B create a backtracking parser
-d write definitions (.tab.h)
-h print this help-message
-H defines_file write definitions to defines_file
-i write interface (y.tab.i)
-g write a graphical description
-l suppress #line directives
-L enable position processing, e.g., "%locations"
-o output_file (default ".tab.c")
-p symbol_prefix set symbol prefix (default "yy")
-P create a reentrant parser, e.g., "%pure-parser"
-r produce separate code and table files (y.code.c)
-s suppress #define's for quoted names in %token lines
-t add debugging support
-v write description (y.output)
-V show version information and exit
Long options:
--defines -H
--file-prefix -b
--graph -g
--help -h
--name-prefix -p
--no-lines -l
--output -o
--version -V

View File

@ -1,30 +0,0 @@
Usage: YACC [options] filename
Options:
-b file_prefix set filename prefix (default "y.")
-B create a backtracking parser
-d write definitions (.tab.h)
-h print this help-message
-H defines_file write definitions to defines_file
-i write interface (y.tab.i)
-g write a graphical description
-l suppress #line directives
-L enable position processing, e.g., "%locations"
-o output_file (default ".tab.c")
-p symbol_prefix set symbol prefix (default "yy")
-P create a reentrant parser, e.g., "%pure-parser"
-r produce separate code and table files (y.code.c)
-s suppress #define's for quoted names in %token lines
-t add debugging support
-v write description (y.output)
-V show version information and exit
Long options:
--defines -H
--file-prefix -b
--graph -g
--help -h
--name-prefix -p
--no-lines -l
--output -o
--version -V

View File

@ -1 +0,0 @@
YACC: 17 shift/reduce conflicts, 27 reduce/reduce conflicts.

View File

@ -1,949 +0,0 @@
0 $accept : lines $end
1 lines :
2 | lines line '\n'
3 | lines error '\n'
4 line : dexp
5 | vexp
6 | DREG '=' dexp
7 | VREG '=' vexp
8 dexp : CONST
9 | DREG
10 | dexp '+' dexp
11 | dexp '-' dexp
12 | dexp '*' dexp
13 | dexp '/' dexp
14 | '-' dexp
15 | '(' dexp ')'
16 vexp : dexp
17 | '(' dexp ',' dexp ')'
18 | VREG
19 | vexp '+' vexp
20 | dexp '+' vexp
21 | vexp '-' vexp
22 | dexp '-' vexp
23 | vexp '*' vexp
24 | dexp '*' vexp
25 | vexp '/' vexp
26 | dexp '/' vexp
27 | '-' vexp
28 | '(' vexp ')'
state 0
$accept : . lines $end (0)
lines : . (1)
. reduce 1
lines goto 1
state 1
$accept : lines . $end (0)
lines : lines . line '\n' (2)
lines : lines . error '\n' (3)
$end accept
error shift 2
DREG shift 3
VREG shift 4
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 8
vexp goto 9
line goto 10
state 2
lines : lines error . '\n' (3)
'\n' shift 11
. error
state 3
line : DREG . '=' dexp (6)
dexp : DREG . (9)
'=' shift 12
'+' reduce 9
'-' reduce 9
'*' reduce 9
'/' reduce 9
'\n' reduce 9
state 4
line : VREG . '=' vexp (7)
vexp : VREG . (18)
'=' shift 13
'+' reduce 18
'-' reduce 18
'*' reduce 18
'/' reduce 18
'\n' reduce 18
state 5
dexp : CONST . (8)
. reduce 8
state 6
dexp : '-' . dexp (14)
vexp : '-' . vexp (27)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 16
vexp goto 17
state 7
dexp : '(' . dexp ')' (15)
vexp : '(' . dexp ',' dexp ')' (17)
vexp : '(' . vexp ')' (28)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 18
vexp goto 19
8: shift/reduce conflict (shift 20, reduce 16) on '+'
8: shift/reduce conflict (shift 21, reduce 16) on '-'
8: shift/reduce conflict (shift 22, reduce 16) on '*'
8: shift/reduce conflict (shift 23, reduce 16) on '/'
8: reduce/reduce conflict (reduce 4, reduce 16) on '\n'
state 8
line : dexp . (4)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] shift 20
'-' [trial] shift 21
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 16
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' [trial] reduce 4
'\n' [trial] reduce 16
state 9
line : vexp . (5)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' reduce 5
state 10
lines : lines line . '\n' (2)
'\n' shift 28
. error
state 11
lines : lines error '\n' . (3)
. reduce 3
state 12
line : DREG '=' . dexp (6)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 31
state 13
line : VREG '=' . vexp (7)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 33
state 14
dexp : DREG . (9)
. reduce 9
state 15
vexp : VREG . (18)
. reduce 18
16: reduce/reduce conflict (reduce 14, reduce 16) on '+'
16: reduce/reduce conflict (reduce 14, reduce 16) on '-'
16: reduce/reduce conflict (reduce 14, reduce 16) on '*'
16: reduce/reduce conflict (reduce 14, reduce 16) on '/'
16: reduce/reduce conflict (reduce 14, reduce 16) on '\n'
16: reduce/reduce conflict (reduce 14, reduce 16) on ')'
state 16
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] reduce 14
'+' [trial] reduce 16
'-' [trial] reduce 14
'-' [trial] reduce 16
'*' [trial] reduce 14
'*' [trial] reduce 16
'/' [trial] reduce 14
'/' [trial] reduce 16
'\n' [trial] reduce 14
'\n' [trial] reduce 16
')' [trial] reduce 14
')' [trial] reduce 16
',' reduce 14
state 17
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '-' vexp . (27)
. reduce 27
18: shift/reduce conflict (shift 20, reduce 16) on '+'
18: shift/reduce conflict (shift 21, reduce 16) on '-'
18: shift/reduce conflict (shift 22, reduce 16) on '*'
18: shift/reduce conflict (shift 23, reduce 16) on '/'
18: shift/reduce conflict (shift 34, reduce 16) on ')'
state 18
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
vexp : dexp . (16)
vexp : '(' dexp . ',' dexp ')' (17)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] shift 20
'-' [trial] shift 21
'*' [trial] shift 22
'/' [trial] shift 23
')' [trial] shift 34
',' shift 35
'+' [trial] reduce 16
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
')' [trial] reduce 16
state 19
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '(' vexp . ')' (28)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
')' shift 36
. error
state 20
dexp : dexp '+' . dexp (10)
vexp : dexp '+' . vexp (20)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 37
vexp goto 38
state 21
dexp : dexp '-' . dexp (11)
vexp : dexp '-' . vexp (22)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 39
vexp goto 40
state 22
dexp : dexp '*' . dexp (12)
vexp : dexp '*' . vexp (24)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 41
vexp goto 42
state 23
dexp : dexp '/' . dexp (13)
vexp : dexp '/' . vexp (26)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 43
vexp goto 44
state 24
vexp : vexp '+' . vexp (19)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 45
state 25
vexp : vexp '-' . vexp (21)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 46
state 26
vexp : vexp '*' . vexp (23)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 47
state 27
vexp : vexp '/' . vexp (25)
DREG shift 14
VREG shift 15
CONST shift 5
'-' shift 6
'(' shift 7
. error
dexp goto 32
vexp goto 48
state 28
lines : lines line '\n' . (2)
. reduce 2
state 29
dexp : '-' . dexp (14)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 49
state 30
dexp : '(' . dexp ')' (15)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 50
state 31
line : DREG '=' dexp . (6)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
'\n' reduce 6
32: shift/reduce conflict (shift 20, reduce 16) on '+'
32: shift/reduce conflict (shift 21, reduce 16) on '-'
32: shift/reduce conflict (shift 22, reduce 16) on '*'
32: shift/reduce conflict (shift 23, reduce 16) on '/'
state 32
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] shift 20
'-' [trial] shift 21
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 16
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' reduce 16
')' reduce 16
state 33
line : VREG '=' vexp . (7)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' reduce 7
state 34
dexp : '(' dexp ')' . (15)
. reduce 15
state 35
vexp : '(' dexp ',' . dexp ')' (17)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 55
state 36
vexp : '(' vexp ')' . (28)
. reduce 28
37: reduce/reduce conflict (reduce 10, reduce 16) on '+'
37: reduce/reduce conflict (reduce 10, reduce 16) on '-'
37: shift/reduce conflict (shift 22, reduce 16) on '*'
37: shift/reduce conflict (shift 23, reduce 16) on '/'
37: reduce/reduce conflict (reduce 10, reduce 16) on '\n'
37: reduce/reduce conflict (reduce 10, reduce 16) on ')'
state 37
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 10
'+' [trial] reduce 16
'-' [trial] reduce 10
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' [trial] reduce 10
'\n' [trial] reduce 16
')' [trial] reduce 10
')' [trial] reduce 16
',' reduce 10
state 38
vexp : vexp . '+' vexp (19)
vexp : dexp '+' vexp . (20)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 20
'-' reduce 20
'\n' reduce 20
')' reduce 20
39: reduce/reduce conflict (reduce 11, reduce 16) on '+'
39: reduce/reduce conflict (reduce 11, reduce 16) on '-'
39: shift/reduce conflict (shift 22, reduce 16) on '*'
39: shift/reduce conflict (shift 23, reduce 16) on '/'
39: reduce/reduce conflict (reduce 11, reduce 16) on '\n'
39: reduce/reduce conflict (reduce 11, reduce 16) on ')'
state 39
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' [trial] shift 22
'/' [trial] shift 23
'+' [trial] reduce 11
'+' [trial] reduce 16
'-' [trial] reduce 11
'-' [trial] reduce 16
'*' [trial] reduce 16
'/' [trial] reduce 16
'\n' [trial] reduce 11
'\n' [trial] reduce 16
')' [trial] reduce 11
')' [trial] reduce 16
',' reduce 11
state 40
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : dexp '-' vexp . (22)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 22
'-' reduce 22
'\n' reduce 22
')' reduce 22
41: reduce/reduce conflict (reduce 12, reduce 16) on '+'
41: reduce/reduce conflict (reduce 12, reduce 16) on '-'
41: reduce/reduce conflict (reduce 12, reduce 16) on '*'
41: reduce/reduce conflict (reduce 12, reduce 16) on '/'
41: reduce/reduce conflict (reduce 12, reduce 16) on '\n'
41: reduce/reduce conflict (reduce 12, reduce 16) on ')'
state 41
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] reduce 12
'+' [trial] reduce 16
'-' [trial] reduce 12
'-' [trial] reduce 16
'*' [trial] reduce 12
'*' [trial] reduce 16
'/' [trial] reduce 12
'/' [trial] reduce 16
'\n' [trial] reduce 12
'\n' [trial] reduce 16
')' [trial] reduce 12
')' [trial] reduce 16
',' reduce 12
state 42
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : dexp '*' vexp . (24)
vexp : vexp . '/' vexp (25)
. reduce 24
43: reduce/reduce conflict (reduce 13, reduce 16) on '+'
43: reduce/reduce conflict (reduce 13, reduce 16) on '-'
43: reduce/reduce conflict (reduce 13, reduce 16) on '*'
43: reduce/reduce conflict (reduce 13, reduce 16) on '/'
43: reduce/reduce conflict (reduce 13, reduce 16) on '\n'
43: reduce/reduce conflict (reduce 13, reduce 16) on ')'
state 43
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' [trial] reduce 13
'+' [trial] reduce 16
'-' [trial] reduce 13
'-' [trial] reduce 16
'*' [trial] reduce 13
'*' [trial] reduce 16
'/' [trial] reduce 13
'/' [trial] reduce 16
'\n' [trial] reduce 13
'\n' [trial] reduce 16
')' [trial] reduce 13
')' [trial] reduce 16
',' reduce 13
state 44
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : dexp '/' vexp . (26)
. reduce 26
state 45
vexp : vexp . '+' vexp (19)
vexp : vexp '+' vexp . (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 19
'-' reduce 19
'\n' reduce 19
')' reduce 19
state 46
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp '-' vexp . (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 21
'-' reduce 21
'\n' reduce 21
')' reduce 21
state 47
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp '*' vexp . (23)
vexp : vexp . '/' vexp (25)
. reduce 23
state 48
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : vexp '/' vexp . (25)
. reduce 25
state 49
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
. reduce 14
state 50
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 34
. error
state 51
dexp : dexp '+' . dexp (10)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 56
state 52
dexp : dexp '-' . dexp (11)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 57
state 53
dexp : dexp '*' . dexp (12)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 58
state 54
dexp : dexp '/' . dexp (13)
DREG shift 14
CONST shift 5
'-' shift 29
'(' shift 30
. error
dexp goto 59
state 55
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : '(' dexp ',' dexp . ')' (17)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 60
. error
state 56
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 10
'-' reduce 10
'\n' reduce 10
')' reduce 10
state 57
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 11
'-' reduce 11
'\n' reduce 11
')' reduce 11
state 58
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
. reduce 12
state 59
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
. reduce 13
state 60
vexp : '(' dexp ',' dexp ')' . (17)
. reduce 17
State 8 contains 4 shift/reduce conflicts, 1 reduce/reduce conflict.
State 16 contains 6 reduce/reduce conflicts.
State 18 contains 5 shift/reduce conflicts.
State 32 contains 4 shift/reduce conflicts.
State 37 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 39 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 41 contains 6 reduce/reduce conflicts.
State 43 contains 6 reduce/reduce conflicts.
15 terminals, 5 nonterminals
29 grammar rules, 61 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DREG
3 258 VREG
4 259 CONST
5 43 '+'
6 45 '-'
7 42 '*'
8 47 '/'
9 260 UMINUS
10 10 '\n'
11 61 '='
12 40 '('
13 41 ')'
14 44 ','
15 261 $accept
16 262 lines
17 263 dexp
18 264 vexp
19 265 line

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +0,0 @@
#ifndef _calc1__defines_h_
#define _calc1__defines_h_
#define DREG 257
#define VREG 258
#define CONST 259
#define UMINUS 260
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union YYSTYPE
{
int ival;
double dval;
INTERVAL vval;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
#endif /* _calc1__defines_h_ */

View File

@ -1 +0,0 @@
YACC: 12 shift/reduce conflicts.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +0,0 @@
#ifndef _demo__defines_h_
#define _demo__defines_h_
#define PREFIX 257
#define POSTFIX 258
#define ID 259
#define CONSTANT 260
#define EXTERN 261
#define REGISTER 262
#define STATIC 263
#define CONST 264
#define VOLATILE 265
#define IF 266
#define THEN 267
#define ELSE 268
#define CLCL 269
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union YYSTYPE {
Scope *scope;
Expr *expr;
Expr_List *elist;
Type *type;
Decl *decl;
Decl_List *dlist;
Code *code;
char *id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE demo_lval;
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
/* Default: YYLTYPE is the text position type. */
typedef struct YYLTYPE
{
int first_line;
int first_column;
int last_line;
int last_column;
unsigned source;
} YYLTYPE;
#define YYLTYPE_IS_DECLARED 1
#endif
#define YYRHSLOC(rhs, k) ((rhs)[k])
extern YYLTYPE demo_lloc;
#endif /* _demo__defines_h_ */

View File

@ -1,247 +0,0 @@
0 $accept : declaration $end
1 declaration : class type namelist '(' class ',' type ')'
2 | type locnamelist '(' class ')'
3 class : GLOBAL
4 | LOCAL
5 type : REAL
6 | INTEGER
7 namelist : namelist NAME
8 | NAME
9 locnamelist : namelist '(' LOCAL ',' type ')'
state 0
$accept : . declaration $end (0)
GLOBAL shift 1
LOCAL shift 2
REAL shift 3
INTEGER shift 4
. error
declaration goto 5
class goto 6
type goto 7
state 1
class : GLOBAL . (3)
. reduce 3
state 2
class : LOCAL . (4)
. reduce 4
state 3
type : REAL . (5)
. reduce 5
state 4
type : INTEGER . (6)
. reduce 6
state 5
$accept : declaration . $end (0)
$end accept
state 6
declaration : class . type namelist '(' class ',' type ')' (1)
REAL shift 3
INTEGER shift 4
. error
type goto 8
state 7
declaration : type . locnamelist '(' class ')' (2)
NAME shift 9
. error
locnamelist goto 10
namelist goto 11
state 8
declaration : class type . namelist '(' class ',' type ')' (1)
NAME shift 9
. error
namelist goto 12
state 9
namelist : NAME . (8)
. reduce 8
state 10
declaration : type locnamelist . '(' class ')' (2)
'(' shift 13
. error
state 11
namelist : namelist . NAME (7)
locnamelist : namelist . '(' LOCAL ',' type ')' (9)
NAME shift 14
'(' shift 15
. error
state 12
declaration : class type namelist . '(' class ',' type ')' (1)
namelist : namelist . NAME (7)
NAME shift 14
'(' shift 16
. error
state 13
declaration : type locnamelist '(' . class ')' (2)
GLOBAL shift 1
LOCAL shift 2
. error
class goto 17
state 14
namelist : namelist NAME . (7)
. reduce 7
state 15
locnamelist : namelist '(' . LOCAL ',' type ')' (9)
LOCAL shift 18
. error
state 16
declaration : class type namelist '(' . class ',' type ')' (1)
GLOBAL shift 1
LOCAL shift 2
. error
class goto 19
state 17
declaration : type locnamelist '(' class . ')' (2)
')' shift 20
. error
state 18
locnamelist : namelist '(' LOCAL . ',' type ')' (9)
',' shift 21
. error
state 19
declaration : class type namelist '(' class . ',' type ')' (1)
',' shift 22
. error
state 20
declaration : type locnamelist '(' class ')' . (2)
. reduce 2
state 21
locnamelist : namelist '(' LOCAL ',' . type ')' (9)
REAL shift 3
INTEGER shift 4
. error
type goto 23
state 22
declaration : class type namelist '(' class ',' . type ')' (1)
REAL shift 3
INTEGER shift 4
. error
type goto 24
state 23
locnamelist : namelist '(' LOCAL ',' type . ')' (9)
')' shift 25
. error
state 24
declaration : class type namelist '(' class ',' type . ')' (1)
')' shift 26
. error
state 25
locnamelist : namelist '(' LOCAL ',' type ')' . (9)
. reduce 9
state 26
declaration : class type namelist '(' class ',' type ')' . (1)
. reduce 1
10 terminals, 6 nonterminals
10 grammar rules, 27 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 GLOBAL
3 258 LOCAL
4 259 REAL
5 260 INTEGER
6 261 NAME
7 40 '('
8 44 ','
9 41 ')'
10 262 $accept
11 263 declaration
12 264 locnamelist
13 265 class
14 266 type
15 267 namelist

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +0,0 @@
#ifndef _destroy1__defines_h_
#define _destroy1__defines_h_
#define GLOBAL 257
#define LOCAL 258
#define REAL 259
#define INTEGER 260
#define NAME 261
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union YYSTYPE
{
class cval;
type tval;
namelist * nlist;
name id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE destroy1_lval;
#endif /* _destroy1__defines_h_ */

View File

@ -1,247 +0,0 @@
0 $accept : declaration $end
1 declaration : class type namelist '(' class ',' type ')'
2 | type locnamelist '(' class ')'
3 class : GLOBAL
4 | LOCAL
5 type : REAL
6 | INTEGER
7 namelist : namelist NAME
8 | NAME
9 locnamelist : namelist '(' LOCAL ',' type ')'
state 0
$accept : . declaration $end (0)
GLOBAL shift 1
LOCAL shift 2
REAL shift 3
INTEGER shift 4
. error
declaration goto 5
class goto 6
type goto 7
state 1
class : GLOBAL . (3)
. reduce 3
state 2
class : LOCAL . (4)
. reduce 4
state 3
type : REAL . (5)
. reduce 5
state 4
type : INTEGER . (6)
. reduce 6
state 5
$accept : declaration . $end (0)
$end accept
state 6
declaration : class . type namelist '(' class ',' type ')' (1)
REAL shift 3
INTEGER shift 4
. error
type goto 8
state 7
declaration : type . locnamelist '(' class ')' (2)
NAME shift 9
. error
locnamelist goto 10
namelist goto 11
state 8
declaration : class type . namelist '(' class ',' type ')' (1)
NAME shift 9
. error
namelist goto 12
state 9
namelist : NAME . (8)
. reduce 8
state 10
declaration : type locnamelist . '(' class ')' (2)
'(' shift 13
. error
state 11
namelist : namelist . NAME (7)
locnamelist : namelist . '(' LOCAL ',' type ')' (9)
NAME shift 14
'(' shift 15
. error
state 12
declaration : class type namelist . '(' class ',' type ')' (1)
namelist : namelist . NAME (7)
NAME shift 14
'(' shift 16
. error
state 13
declaration : type locnamelist '(' . class ')' (2)
GLOBAL shift 1
LOCAL shift 2
. error
class goto 17
state 14
namelist : namelist NAME . (7)
. reduce 7
state 15
locnamelist : namelist '(' . LOCAL ',' type ')' (9)
LOCAL shift 18
. error
state 16
declaration : class type namelist '(' . class ',' type ')' (1)
GLOBAL shift 1
LOCAL shift 2
. error
class goto 19
state 17
declaration : type locnamelist '(' class . ')' (2)
')' shift 20
. error
state 18
locnamelist : namelist '(' LOCAL . ',' type ')' (9)
',' shift 21
. error
state 19
declaration : class type namelist '(' class . ',' type ')' (1)
',' shift 22
. error
state 20
declaration : type locnamelist '(' class ')' . (2)
. reduce 2
state 21
locnamelist : namelist '(' LOCAL ',' . type ')' (9)
REAL shift 3
INTEGER shift 4
. error
type goto 23
state 22
declaration : class type namelist '(' class ',' . type ')' (1)
REAL shift 3
INTEGER shift 4
. error
type goto 24
state 23
locnamelist : namelist '(' LOCAL ',' type . ')' (9)
')' shift 25
. error
state 24
declaration : class type namelist '(' class ',' type . ')' (1)
')' shift 26
. error
state 25
locnamelist : namelist '(' LOCAL ',' type ')' . (9)
. reduce 9
state 26
declaration : class type namelist '(' class ',' type ')' . (1)
. reduce 1
10 terminals, 6 nonterminals
10 grammar rules, 27 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 GLOBAL
3 258 LOCAL
4 259 REAL
5 260 INTEGER
6 261 NAME
7 40 '('
8 44 ','
9 41 ')'
10 262 $accept
11 263 declaration
12 264 locnamelist
13 265 class
14 266 type
15 267 namelist

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +0,0 @@
#ifndef _destroy2__defines_h_
#define _destroy2__defines_h_
#define GLOBAL 257
#define LOCAL 258
#define REAL 259
#define INTEGER 260
#define NAME 261
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union YYSTYPE
{
class cval;
type tval;
namelist * nlist;
name id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE destroy2_lval;
#endif /* _destroy2__defines_h_ */

View File

@ -1,247 +0,0 @@
0 $accept : declaration $end
1 declaration : class type namelist '(' class ',' type ')'
2 | type locnamelist '(' class ')'
3 class : GLOBAL
4 | LOCAL
5 type : REAL
6 | INTEGER
7 namelist : namelist NAME
8 | NAME
9 locnamelist : namelist '(' LOCAL ',' type ')'
state 0
$accept : . declaration $end (0)
GLOBAL shift 1
LOCAL shift 2
REAL shift 3
INTEGER shift 4
. error
declaration goto 5
class goto 6
type goto 7
state 1
class : GLOBAL . (3)
. reduce 3
state 2
class : LOCAL . (4)
. reduce 4
state 3
type : REAL . (5)
. reduce 5
state 4
type : INTEGER . (6)
. reduce 6
state 5
$accept : declaration . $end (0)
$end accept
state 6
declaration : class . type namelist '(' class ',' type ')' (1)
REAL shift 3
INTEGER shift 4
. error
type goto 8
state 7
declaration : type . locnamelist '(' class ')' (2)
NAME shift 9
. error
locnamelist goto 10
namelist goto 11
state 8
declaration : class type . namelist '(' class ',' type ')' (1)
NAME shift 9
. error
namelist goto 12
state 9
namelist : NAME . (8)
. reduce 8
state 10
declaration : type locnamelist . '(' class ')' (2)
'(' shift 13
. error
state 11
namelist : namelist . NAME (7)
locnamelist : namelist . '(' LOCAL ',' type ')' (9)
NAME shift 14
'(' shift 15
. error
state 12
declaration : class type namelist . '(' class ',' type ')' (1)
namelist : namelist . NAME (7)
NAME shift 14
'(' shift 16
. error
state 13
declaration : type locnamelist '(' . class ')' (2)
GLOBAL shift 1
LOCAL shift 2
. error
class goto 17
state 14
namelist : namelist NAME . (7)
. reduce 7
state 15
locnamelist : namelist '(' . LOCAL ',' type ')' (9)
LOCAL shift 18
. error
state 16
declaration : class type namelist '(' . class ',' type ')' (1)
GLOBAL shift 1
LOCAL shift 2
. error
class goto 19
state 17
declaration : type locnamelist '(' class . ')' (2)
')' shift 20
. error
state 18
locnamelist : namelist '(' LOCAL . ',' type ')' (9)
',' shift 21
. error
state 19
declaration : class type namelist '(' class . ',' type ')' (1)
',' shift 22
. error
state 20
declaration : type locnamelist '(' class ')' . (2)
. reduce 2
state 21
locnamelist : namelist '(' LOCAL ',' . type ')' (9)
REAL shift 3
INTEGER shift 4
. error
type goto 23
state 22
declaration : class type namelist '(' class ',' . type ')' (1)
REAL shift 3
INTEGER shift 4
. error
type goto 24
state 23
locnamelist : namelist '(' LOCAL ',' type . ')' (9)
')' shift 25
. error
state 24
declaration : class type namelist '(' class ',' type . ')' (1)
')' shift 26
. error
state 25
locnamelist : namelist '(' LOCAL ',' type ')' . (9)
. reduce 9
state 26
declaration : class type namelist '(' class ',' type ')' . (1)
. reduce 1
10 terminals, 6 nonterminals
10 grammar rules, 27 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 GLOBAL
3 258 LOCAL
4 259 REAL
5 260 INTEGER
6 261 NAME
7 40 '('
8 44 ','
9 41 ')'
10 262 $accept
11 263 declaration
12 264 locnamelist
13 265 class
14 266 type
15 267 namelist

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +0,0 @@
#ifndef _destroy3__defines_h_
#define _destroy3__defines_h_
#define GLOBAL 257
#define LOCAL 258
#define REAL 259
#define INTEGER 260
#define NAME 261
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union YYSTYPE
{
class cval;
type tval;
namelist * nlist;
name id;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE destroy3_lval;
#endif /* _destroy3__defines_h_ */

View File

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
#ifndef _calc__defines_h_
#define _calc__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc__defines_h_ */

View File

@ -1,2 +0,0 @@
YACC: 2 rules never reduced
YACC: 18 shift/reduce conflicts, 26 reduce/reduce conflicts.

View File

@ -1,900 +0,0 @@
0 $accept : line $end
1 lines :
2 | lines line
3 line : dexp '\n'
4 | vexp '\n'
5 | DREG '=' dexp '\n'
6 | VREG '=' vexp '\n'
7 | error '\n'
8 dexp : CONST
9 | DREG
10 | dexp '+' dexp
11 | dexp '-' dexp
12 | dexp '*' dexp
13 | dexp '/' dexp
14 | '-' dexp
15 | '(' dexp ')'
16 vexp : dexp
17 | '(' dexp ',' dexp ')'
18 | VREG
19 | vexp '+' vexp
20 | dexp '+' vexp
21 | vexp '-' vexp
22 | dexp '-' vexp
23 | vexp '*' vexp
24 | dexp '*' vexp
25 | vexp '/' vexp
26 | dexp '/' vexp
27 | '-' vexp
28 | '(' vexp ')'
state 0
$accept : . line $end (0)
error shift 1
DREG shift 2
VREG shift 3
CONST shift 4
'-' shift 5
'(' shift 6
. error
line goto 7
dexp goto 8
vexp goto 9
state 1
line : error . '\n' (7)
'\n' shift 10
. error
state 2
line : DREG . '=' dexp '\n' (5)
dexp : DREG . (9)
'=' shift 11
'+' reduce 9
'-' reduce 9
'*' reduce 9
'/' reduce 9
'\n' reduce 9
state 3
line : VREG . '=' vexp '\n' (6)
vexp : VREG . (18)
'=' shift 12
'+' reduce 18
'-' reduce 18
'*' reduce 18
'/' reduce 18
'\n' reduce 18
state 4
dexp : CONST . (8)
. reduce 8
state 5
dexp : '-' . dexp (14)
vexp : '-' . vexp (27)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 15
vexp goto 16
state 6
dexp : '(' . dexp ')' (15)
vexp : '(' . dexp ',' dexp ')' (17)
vexp : '(' . vexp ')' (28)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 17
vexp goto 18
state 7
$accept : line . $end (0)
$end accept
8: shift/reduce conflict (shift 19, reduce 16) on '+'
8: shift/reduce conflict (shift 20, reduce 16) on '-'
8: shift/reduce conflict (shift 21, reduce 16) on '*'
8: shift/reduce conflict (shift 22, reduce 16) on '/'
8: shift/reduce conflict (shift 23, reduce 16) on '\n'
state 8
line : dexp . '\n' (3)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' shift 19
'-' shift 20
'*' shift 21
'/' shift 22
'\n' shift 23
state 9
line : vexp . '\n' (4)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' shift 28
. error
state 10
line : error '\n' . (7)
. reduce 7
state 11
line : DREG '=' . dexp '\n' (5)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 31
state 12
line : VREG '=' . vexp '\n' (6)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 33
state 13
dexp : DREG . (9)
. reduce 9
state 14
vexp : VREG . (18)
. reduce 18
15: reduce/reduce conflict (reduce 14, reduce 16) on '+'
15: reduce/reduce conflict (reduce 14, reduce 16) on '-'
15: reduce/reduce conflict (reduce 14, reduce 16) on '*'
15: reduce/reduce conflict (reduce 14, reduce 16) on '/'
15: reduce/reduce conflict (reduce 14, reduce 16) on '\n'
15: reduce/reduce conflict (reduce 14, reduce 16) on ')'
state 15
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
. reduce 14
state 16
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '-' vexp . (27)
. reduce 27
17: shift/reduce conflict (shift 19, reduce 16) on '+'
17: shift/reduce conflict (shift 20, reduce 16) on '-'
17: shift/reduce conflict (shift 21, reduce 16) on '*'
17: shift/reduce conflict (shift 22, reduce 16) on '/'
17: shift/reduce conflict (shift 34, reduce 16) on ')'
state 17
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
vexp : dexp . (16)
vexp : '(' dexp . ',' dexp ')' (17)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' shift 19
'-' shift 20
'*' shift 21
'/' shift 22
')' shift 34
',' shift 35
state 18
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : '(' vexp . ')' (28)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
')' shift 36
. error
state 19
dexp : dexp '+' . dexp (10)
vexp : dexp '+' . vexp (20)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 37
vexp goto 38
state 20
dexp : dexp '-' . dexp (11)
vexp : dexp '-' . vexp (22)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 39
vexp goto 40
state 21
dexp : dexp '*' . dexp (12)
vexp : dexp '*' . vexp (24)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 41
vexp goto 42
state 22
dexp : dexp '/' . dexp (13)
vexp : dexp '/' . vexp (26)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 43
vexp goto 44
state 23
line : dexp '\n' . (3)
. reduce 3
state 24
vexp : vexp '+' . vexp (19)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 45
state 25
vexp : vexp '-' . vexp (21)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 46
state 26
vexp : vexp '*' . vexp (23)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 47
state 27
vexp : vexp '/' . vexp (25)
DREG shift 13
VREG shift 14
CONST shift 4
'-' shift 5
'(' shift 6
. error
dexp goto 32
vexp goto 48
state 28
line : vexp '\n' . (4)
. reduce 4
state 29
dexp : '-' . dexp (14)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 49
state 30
dexp : '(' . dexp ')' (15)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 50
state 31
line : DREG '=' dexp . '\n' (5)
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
'\n' shift 55
. error
32: shift/reduce conflict (shift 19, reduce 16) on '+'
32: shift/reduce conflict (shift 20, reduce 16) on '-'
32: shift/reduce conflict (shift 21, reduce 16) on '*'
32: shift/reduce conflict (shift 22, reduce 16) on '/'
state 32
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'+' shift 19
'-' shift 20
'*' shift 21
'/' shift 22
'\n' reduce 16
')' reduce 16
state 33
line : VREG '=' vexp . '\n' (6)
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'+' shift 24
'-' shift 25
'*' shift 26
'/' shift 27
'\n' shift 56
. error
state 34
dexp : '(' dexp ')' . (15)
. reduce 15
state 35
vexp : '(' dexp ',' . dexp ')' (17)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 57
state 36
vexp : '(' vexp ')' . (28)
. reduce 28
37: reduce/reduce conflict (reduce 10, reduce 16) on '+'
37: reduce/reduce conflict (reduce 10, reduce 16) on '-'
37: shift/reduce conflict (shift 21, reduce 16) on '*'
37: shift/reduce conflict (shift 22, reduce 16) on '/'
37: reduce/reduce conflict (reduce 10, reduce 16) on '\n'
37: reduce/reduce conflict (reduce 10, reduce 16) on ')'
state 37
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' shift 21
'/' shift 22
'+' reduce 10
'-' reduce 10
'\n' reduce 10
')' reduce 10
',' reduce 10
state 38
vexp : vexp . '+' vexp (19)
vexp : dexp '+' vexp . (20)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 20
'-' reduce 20
'\n' reduce 20
')' reduce 20
39: reduce/reduce conflict (reduce 11, reduce 16) on '+'
39: reduce/reduce conflict (reduce 11, reduce 16) on '-'
39: shift/reduce conflict (shift 21, reduce 16) on '*'
39: shift/reduce conflict (shift 22, reduce 16) on '/'
39: reduce/reduce conflict (reduce 11, reduce 16) on '\n'
39: reduce/reduce conflict (reduce 11, reduce 16) on ')'
state 39
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
'*' shift 21
'/' shift 22
'+' reduce 11
'-' reduce 11
'\n' reduce 11
')' reduce 11
',' reduce 11
state 40
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : dexp '-' vexp . (22)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 22
'-' reduce 22
'\n' reduce 22
')' reduce 22
41: reduce/reduce conflict (reduce 12, reduce 16) on '+'
41: reduce/reduce conflict (reduce 12, reduce 16) on '-'
41: reduce/reduce conflict (reduce 12, reduce 16) on '*'
41: reduce/reduce conflict (reduce 12, reduce 16) on '/'
41: reduce/reduce conflict (reduce 12, reduce 16) on '\n'
41: reduce/reduce conflict (reduce 12, reduce 16) on ')'
state 41
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
. reduce 12
state 42
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : dexp '*' vexp . (24)
vexp : vexp . '/' vexp (25)
. reduce 24
43: reduce/reduce conflict (reduce 13, reduce 16) on '+'
43: reduce/reduce conflict (reduce 13, reduce 16) on '-'
43: reduce/reduce conflict (reduce 13, reduce 16) on '*'
43: reduce/reduce conflict (reduce 13, reduce 16) on '/'
43: reduce/reduce conflict (reduce 13, reduce 16) on '\n'
43: reduce/reduce conflict (reduce 13, reduce 16) on ')'
state 43
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
vexp : dexp . (16)
vexp : dexp . '+' vexp (20)
vexp : dexp . '-' vexp (22)
vexp : dexp . '*' vexp (24)
vexp : dexp . '/' vexp (26)
. reduce 13
state 44
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : dexp '/' vexp . (26)
. reduce 26
state 45
vexp : vexp . '+' vexp (19)
vexp : vexp '+' vexp . (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 19
'-' reduce 19
'\n' reduce 19
')' reduce 19
state 46
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp '-' vexp . (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
'*' shift 26
'/' shift 27
'+' reduce 21
'-' reduce 21
'\n' reduce 21
')' reduce 21
state 47
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp '*' vexp . (23)
vexp : vexp . '/' vexp (25)
. reduce 23
state 48
vexp : vexp . '+' vexp (19)
vexp : vexp . '-' vexp (21)
vexp : vexp . '*' vexp (23)
vexp : vexp . '/' vexp (25)
vexp : vexp '/' vexp . (25)
. reduce 25
state 49
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '-' dexp . (14)
. reduce 14
state 50
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : '(' dexp . ')' (15)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 34
. error
state 51
dexp : dexp '+' . dexp (10)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 58
state 52
dexp : dexp '-' . dexp (11)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 59
state 53
dexp : dexp '*' . dexp (12)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 60
state 54
dexp : dexp '/' . dexp (13)
DREG shift 13
CONST shift 4
'-' shift 29
'(' shift 30
. error
dexp goto 61
state 55
line : DREG '=' dexp '\n' . (5)
. reduce 5
state 56
line : VREG '=' vexp '\n' . (6)
. reduce 6
state 57
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
vexp : '(' dexp ',' dexp . ')' (17)
'+' shift 51
'-' shift 52
'*' shift 53
'/' shift 54
')' shift 62
. error
state 58
dexp : dexp . '+' dexp (10)
dexp : dexp '+' dexp . (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 10
'-' reduce 10
'\n' reduce 10
')' reduce 10
state 59
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp '-' dexp . (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
'*' shift 53
'/' shift 54
'+' reduce 11
'-' reduce 11
'\n' reduce 11
')' reduce 11
state 60
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp '*' dexp . (12)
dexp : dexp . '/' dexp (13)
. reduce 12
state 61
dexp : dexp . '+' dexp (10)
dexp : dexp . '-' dexp (11)
dexp : dexp . '*' dexp (12)
dexp : dexp . '/' dexp (13)
dexp : dexp '/' dexp . (13)
. reduce 13
state 62
vexp : '(' dexp ',' dexp ')' . (17)
. reduce 17
Rules never reduced:
lines : (1)
lines : lines line (2)
State 8 contains 5 shift/reduce conflicts.
State 15 contains 6 reduce/reduce conflicts.
State 17 contains 5 shift/reduce conflicts.
State 32 contains 4 shift/reduce conflicts.
State 37 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 39 contains 2 shift/reduce conflicts, 4 reduce/reduce conflicts.
State 41 contains 6 reduce/reduce conflicts.
State 43 contains 6 reduce/reduce conflicts.
15 terminals, 5 nonterminals
29 grammar rules, 63 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DREG
3 258 VREG
4 259 CONST
5 43 '+'
6 45 '-'
7 42 '*'
8 47 '/'
9 260 UMINUS
10 10 '\n'
11 61 '='
12 40 '('
13 41 ')'
14 44 ','
15 261 $accept
16 262 line
17 263 dexp
18 264 vexp
19 265 lines

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +0,0 @@
#ifndef _calc1__defines_h_
#define _calc1__defines_h_
#define DREG 257
#define VREG 258
#define CONST 259
#define UMINUS 260
#ifdef YYSTYPE
#undef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
#endif
#ifndef YYSTYPE_IS_DECLARED
#define YYSTYPE_IS_DECLARED 1
typedef union YYSTYPE
{
int ival;
double dval;
INTERVAL vval;
} YYSTYPE;
#endif /* !YYSTYPE_IS_DECLARED */
extern YYSTYPE calc1_lval;
#endif /* _calc1__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
#ifndef _calc2__defines_h_
#define _calc2__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc2__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
#ifndef _calc3__defines_h_
#define _calc3__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc3__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +0,0 @@
#ifndef _calc_code_all__defines_h_
#define _calc_code_all__defines_h_
/* %code "requires" block start */
#line 3 "calc_code_all.y"
/* CODE-REQUIRES */
/* %code "requires" block end */
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
/* %code "provides" block start */
#line 4 "calc_code_all.y"
/* CODE-PROVIDES */
#line 6 "calc_code_all.y"
/* CODE-PROVIDES2 */
/* %code "provides" block end */
#endif /* _calc_code_all__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
#ifndef _calc_code_default__defines_h_
#define _calc_code_default__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc_code_default__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
#ifndef _calc_code_imports__defines_h_
#define _calc_code_imports__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc_code_imports__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +0,0 @@
#ifndef _calc_code_provides__defines_h_
#define _calc_code_provides__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
/* %code "provides" block start */
#line 1 "calc_code_provides.y"
/* CODE-PROVIDES */
#line 2 "calc_code_provides.y"
/* CODE-PROVIDES2 */
/* %code "provides" block end */
#endif /* _calc_code_provides__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +0,0 @@
#ifndef _calc_code_requires__defines_h_
#define _calc_code_requires__defines_h_
/* %code "requires" block start */
#line 1 "calc_code_requires.y"
/* CODE-REQUIRES */
#line 2 "calc_code_requires.y"
/* CODE-REQUIRES2 */
/* %code "requires" block end */
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc_code_requires__defines_h_ */

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
#ifndef _calc_code_top__defines_h_
#define _calc_code_top__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#endif /* _calc_code_top__defines_h_ */

File diff suppressed because it is too large Load Diff

View File

@ -1,485 +0,0 @@
0 $accept : list $end
1 list :
2 | list stat '\n'
3 | list error '\n'
4 stat : expr
5 | LETTER '=' expr
6 expr : '(' expr ')'
7 | expr '+' expr
8 | expr '-' expr
9 | expr '*' expr
10 | expr '/' expr
11 | expr '%' expr
12 | expr '&' expr
13 | expr '|' expr
14 | '-' expr
15 | LETTER
16 | number
17 number : DIGIT
18 | number DIGIT
state 0
$accept : . list $end (0)
list : . (1)
. reduce 1
list goto 1
state 1
$accept : list . $end (0)
list : list . stat '\n' (2)
list : list . error '\n' (3)
$end accept
error shift 2
DIGIT shift 3
LETTER shift 4
'-' shift 5
'(' shift 6
. error
stat goto 7
expr goto 8
number goto 9
state 2
list : list error . '\n' (3)
'\n' shift 10
. error
state 3
number : DIGIT . (17)
. reduce 17
state 4
stat : LETTER . '=' expr (5)
expr : LETTER . (15)
'=' shift 11
'|' reduce 15
'&' reduce 15
'+' reduce 15
'-' reduce 15
'*' reduce 15
'/' reduce 15
'%' reduce 15
'\n' reduce 15
state 5
expr : '-' . expr (14)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 13
number goto 9
state 6
expr : '(' . expr ')' (6)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 14
number goto 9
state 7
list : list stat . '\n' (2)
'\n' shift 15
. error
state 8
stat : expr . (4)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 4
state 9
expr : number . (16)
number : number . DIGIT (18)
DIGIT shift 23
'|' reduce 16
'&' reduce 16
'+' reduce 16
'-' reduce 16
'*' reduce 16
'/' reduce 16
'%' reduce 16
'\n' reduce 16
')' reduce 16
state 10
list : list error '\n' . (3)
. reduce 3
state 11
stat : LETTER '=' . expr (5)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 24
number goto 9
state 12
expr : LETTER . (15)
. reduce 15
state 13
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : '-' expr . (14)
. reduce 14
state 14
expr : '(' expr . ')' (6)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
')' shift 25
. error
state 15
list : list stat '\n' . (2)
. reduce 2
state 16
expr : expr '|' . expr (13)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 26
number goto 9
state 17
expr : expr '&' . expr (12)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 27
number goto 9
state 18
expr : expr '+' . expr (7)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 28
number goto 9
state 19
expr : expr '-' . expr (8)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 29
number goto 9
state 20
expr : expr '*' . expr (9)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 30
number goto 9
state 21
expr : expr '/' . expr (10)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 31
number goto 9
state 22
expr : expr '%' . expr (11)
DIGIT shift 3
LETTER shift 12
'-' shift 5
'(' shift 6
. error
expr goto 32
number goto 9
state 23
number : number DIGIT . (18)
. reduce 18
state 24
stat : LETTER '=' expr . (5)
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'|' shift 16
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'\n' reduce 5
state 25
expr : '(' expr ')' . (6)
. reduce 6
state 26
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
expr : expr '|' expr . (13)
'&' shift 17
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 13
'\n' reduce 13
')' reduce 13
state 27
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr '&' expr . (12)
expr : expr . '|' expr (13)
'+' shift 18
'-' shift 19
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 12
'&' reduce 12
'\n' reduce 12
')' reduce 12
state 28
expr : expr . '+' expr (7)
expr : expr '+' expr . (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 7
'&' reduce 7
'+' reduce 7
'-' reduce 7
'\n' reduce 7
')' reduce 7
state 29
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr '-' expr . (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
'*' shift 20
'/' shift 21
'%' shift 22
'|' reduce 8
'&' reduce 8
'+' reduce 8
'-' reduce 8
'\n' reduce 8
')' reduce 8
state 30
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr '*' expr . (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 9
state 31
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr '/' expr . (10)
expr : expr . '%' expr (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 10
state 32
expr : expr . '+' expr (7)
expr : expr . '-' expr (8)
expr : expr . '*' expr (9)
expr : expr . '/' expr (10)
expr : expr . '%' expr (11)
expr : expr '%' expr . (11)
expr : expr . '&' expr (12)
expr : expr . '|' expr (13)
. reduce 11
16 terminals, 5 nonterminals
19 grammar rules, 33 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 DIGIT
3 258 LETTER
4 124 '|'
5 38 '&'
6 43 '+'
7 45 '-'
8 42 '*'
9 47 '/'
10 37 '%'
11 259 UMINUS
12 10 '\n'
13 61 '='
14 40 '('
15 41 ')'
16 260 $accept
17 261 list
18 262 stat
19 263 expr
20 264 number

View File

@ -1,165 +0,0 @@
#undef YYBTYACC
#define YYBTYACC 0
#define YYDEBUGSTR YYPREFIX "debug"
typedef int YYINT;
const YYINT calc_lhs[] = { -1,
0, 0, 0, 1, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 3, 3,
};
const YYINT calc_len[] = { 2,
0, 3, 3, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 2, 1, 1, 1, 2,
};
const YYINT calc_defred[] = { 1,
0, 0, 17, 0, 0, 0, 0, 0, 0, 3,
0, 15, 14, 0, 2, 0, 0, 0, 0, 0,
0, 0, 18, 0, 6, 0, 0, 0, 0, 9,
10, 11,
};
#if defined(YYDESTRUCT_CALL) || defined(YYSTYPE_TOSTRING)
const YYINT calc_stos[] = { 0,
261, 256, 257, 258, 45, 40, 262, 263, 264, 10,
61, 258, 263, 263, 10, 124, 38, 43, 45, 42,
47, 37, 257, 263, 41, 263, 263, 263, 263, 263,
263, 263,
};
#endif /* YYDESTRUCT_CALL || YYSTYPE_TOSTRING */
const YYINT calc_dgoto[] = { 1,
7, 8, 9,
};
const YYINT calc_sindex[] = { 0,
-40, -7, 0, -55, -38, -38, 1, -29, -247, 0,
-38, 0, 0, 22, 0, -38, -38, -38, -38, -38,
-38, -38, 0, -29, 0, 51, 60, -20, -20, 0,
0, 0,
};
const YYINT calc_rindex[] = { 0,
0, 0, 0, 2, 0, 0, 0, 9, -9, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 10, 0, -6, 14, 5, 13, 0,
0, 0,
};
#if YYBTYACC
const YYINT calc_cindex[] = { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
};
#endif
const YYINT calc_gindex[] = { 0,
0, 65, 0,
};
const YYINT calc_table[] = { 6,
16, 6, 10, 13, 5, 11, 5, 22, 17, 23,
15, 15, 20, 18, 7, 19, 22, 21, 4, 5,
0, 20, 8, 12, 0, 0, 21, 16, 16, 0,
0, 16, 16, 16, 13, 16, 0, 16, 15, 15,
0, 0, 7, 15, 15, 7, 15, 7, 15, 7,
8, 12, 0, 8, 12, 8, 0, 8, 22, 17,
0, 0, 25, 20, 18, 0, 19, 0, 21, 13,
14, 0, 0, 0, 0, 24, 0, 0, 0, 0,
26, 27, 28, 29, 30, 31, 32, 22, 17, 0,
0, 0, 20, 18, 16, 19, 22, 21, 0, 0,
0, 20, 18, 0, 19, 0, 21, 0, 0, 0,
0, 0, 0, 0, 16, 0, 0, 13, 0, 0,
0, 0, 0, 0, 0, 15, 0, 0, 7, 0,
0, 0, 0, 0, 0, 0, 8, 12, 0, 0,
0, 0, 0, 0, 0, 16, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 3, 4, 3, 12,
};
const YYINT calc_check[] = { 40,
10, 40, 10, 10, 45, 61, 45, 37, 38, 257,
10, 10, 42, 43, 10, 45, 37, 47, 10, 10,
-1, 42, 10, 10, -1, -1, 47, 37, 38, -1,
-1, 41, 42, 43, 41, 45, -1, 47, 37, 38,
-1, -1, 38, 42, 43, 41, 45, 43, 47, 45,
38, 38, -1, 41, 41, 43, -1, 45, 37, 38,
-1, -1, 41, 42, 43, -1, 45, -1, 47, 5,
6, -1, -1, -1, -1, 11, -1, -1, -1, -1,
16, 17, 18, 19, 20, 21, 22, 37, 38, -1,
-1, -1, 42, 43, 124, 45, 37, 47, -1, -1,
-1, 42, 43, -1, 45, -1, 47, -1, -1, -1,
-1, -1, -1, -1, 124, -1, -1, 124, -1, -1,
-1, -1, -1, -1, -1, 124, -1, -1, 124, -1,
-1, -1, -1, -1, -1, -1, 124, 124, -1, -1,
-1, -1, -1, -1, -1, 124, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 256, 257, 258, 257, 258,
};
#if YYBTYACC
const YYINT calc_ctable[] = { -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1,
};
#endif
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
const char *const calc_name[] = {
"$end",0,0,0,0,0,0,0,0,0,"'\\n'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
0,0,0,"'='",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,"error","DIGIT","LETTER","UMINUS","$accept","list","stat","expr","number",
"illegal-symbol",
};
#if YYDEBUG
const char *const calc_rule[] = {
"$accept : list",
"list :",
"list : list stat '\\n'",
"list : list error '\\n'",
"stat : expr",
"stat : LETTER '=' expr",
"expr : '(' expr ')'",
"expr : expr '+' expr",
"expr : expr '-' expr",
"expr : expr '*' expr",
"expr : expr '/' expr",
"expr : expr '%' expr",
"expr : expr '&' expr",
"expr : expr '|' expr",
"expr : '-' expr",
"expr : LETTER",
"expr : number",
"number : DIGIT",
"number : number DIGIT",
};
#endif

View File

@ -1,10 +0,0 @@
#ifndef _calc__defines_h_
#define _calc__defines_h_
#define DIGIT 257
#define LETTER 258
#define UMINUS 259
#undef yytname
#define yytname yyname
#endif /* _calc__defines_h_ */

File diff suppressed because it is too large Load Diff

View File

@ -1,34 +0,0 @@
0 $accept : S $end
1 S : error
state 0
$accept : . S $end (0)
error shift 1
. error
S goto 2
state 1
S : error . (1)
. reduce 1
state 2
$accept : S . $end (0)
$end accept
2 terminals, 2 nonterminals
2 grammar rules, 3 states
grammar parser grammar
symbol# value# symbol
0 0 $end
1 256 error
2 257 $accept
3 258 S

Some files were not shown because too many files have changed in this diff Show More