From 8cb6370effd9f2dacc6dc9b662a43ea19ee637ac Mon Sep 17 00:00:00 2001 From: George Lebl Date: Sun, 14 Nov 1999 02:36:00 -0800 Subject: [PATCH] Release 0.90.3 --- ChangeLog | 34 +++ Makefile.am | 5 +- Makefile.in | 10 +- NEWS | 7 + README | 10 + configure | 168 +++++------ configure.in | 27 +- doc/Makefile.am | 3 +- doc/Makefile.in | 158 ++++++++-- doc/gob.1 | 287 ------------------ doc/gob.1.in | 15 + gob.spec | 2 +- src/Makefile.am | 9 +- src/Makefile.in | 161 ++++++++-- src/lexer.c | 779 +++++++++++++++++++++++++----------------------- src/lexer.l | 38 ++- src/main.c | 101 ++++++- src/out.c | 5 +- src/parse.c | 216 +++++++++----- 19 files changed, 1107 insertions(+), 928 deletions(-) delete mode 100644 doc/gob.1 diff --git a/ChangeLog b/ChangeLog index cddb2f4..8f913fb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,37 @@ +Sat Nov 13 17:22:49 1999 George Lebl + + * **/Makefile.am, configure.in: fix the conditional installation + stuff, don't even go into the doc directory if we aren't installing + +Sat Nov 13 16:53:20 1999 George Lebl + + * doc/gob.1.in: describe BUGS better + +Sat Nov 13 16:20:41 1999 George Lebl + + * src/lexer.l: don't kill C++ style comments from C blocks + +Sat Nov 13 16:16:59 1999 George Lebl + + * src/{lexer.l,main.c,out.c}: fixed spurious newline printing, don't + kill comments from C blocks so that line counts are right, accept + newlines in strings, and don't take \'\"\' as a string delimiter + +Sat Nov 13 14:53:26 1999 George Lebl + + * src/main.c: don't add gtk_object_class to class_init if we only + have non-GtkObject overrides to avoid warning + +Sat Nov 13 14:31:25 1999 George Lebl + + * configure.in,src/Makefile.am,doc/Makefile.am: check for + ../NOINST_GOB and in case it's found don't install self + +Fri Nov 12 16:25:35 1999 George Lebl + + * configure.in,Makefile.am,src/main.c: don't use popt, our arguments + are simple enough and popt doesn't seem to be widely used yet + Sun Sep 05 22:08:40 1999 George Lebl * Release 0.90.2 diff --git a/Makefile.am b/Makefile.am index a5e1570..997c25a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,7 @@ -SUBDIRS = src doc +SUBDIRS = @SUBDIRS@ +DIST_SUBDIRS = src doc EXTRA_DIST = gob.spec.in -dist-hook: +dist-hook: gob.spec cp gob.spec $(distdir) diff --git a/Makefile.in b/Makefile.in index 85ebb52..8f02198 100644 --- a/Makefile.in +++ b/Makefile.in @@ -61,6 +61,7 @@ CC = @CC@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_CONFIG = @GLIB_CONFIG@ GLIB_LIBS = @GLIB_LIBS@ @@ -69,14 +70,15 @@ LEX = @LEX@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MV = @MV@ +NOINSTGOB = @NOINSTGOB@ PACKAGE = @PACKAGE@ -POPT_LIB = @POPT_LIB@ RM = @RM@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ -SUBDIRS = src doc +SUBDIRS = @SUBDIRS@ +DIST_SUBDIRS = src doc EXTRA_DIST = gob.spec.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -275,7 +277,7 @@ distdir: $(DISTFILES) || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - for subdir in $(SUBDIRS); do \ + for subdir in $(DIST_SUBDIRS); do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ @@ -360,7 +362,7 @@ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean -dist-hook: +dist-hook: gob.spec cp gob.spec $(distdir) # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/NEWS b/NEWS index 1b09790..e21dbac 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,10 @@ +0.90.3 + * does not require popt + * don't kill comments from C code blocks + * support for being "embedded" inside other projects to avoid + dependencies (look at README) + * a bunch of fixes + 0.90.2 * add support for private signals and virtuals * fix bug with varargs diff --git a/README b/README index b0637d8..454ed59 100644 --- a/README +++ b/README @@ -30,6 +30,16 @@ How to write .gob files? 2) if you can't find what you need, read src/test.gob and src/lexer.l and src/parse.y (in other words: RTFS) +How to include gob inside your project: + + Put the gob distribution into a subdirectory in your main + project directory. Use the AC_CONFIG_SUBDIRS to include that + directory in your configure run. And finally add a file called + NOINST_GOB into your toplevel project directory (this can be done + inside your configure script in fact) so that gob doesn't install + itself. Then just use the made gob binary as you would other + preprocessors. + TODO: - clean up code - make it behave nice diff --git a/configure b/configure index e077fee..1c3665e 100755 --- a/configure +++ b/configure @@ -703,7 +703,7 @@ fi PACKAGE=gob -VERSION=0.90.2 +VERSION=0.90.3 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } @@ -786,10 +786,25 @@ fi +if test -f ../NOINST_GOB ; then + DOINSTGOB= + NOINSTGOB=gob + echo "$ac_t""*** NOT Going to install GOB ***" 1>&6 + SUBDIRS="src" + +else + DOINSTGOB=gob + NOINSTGOB= + SUBDIRS="src doc" + +fi + + + # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:793: checking for $ac_word" >&5 +echo "configure:808: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -819,7 +834,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:823: checking for $ac_word" >&5 +echo "configure:838: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -870,7 +885,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:874: checking for $ac_word" >&5 +echo "configure:889: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -902,7 +917,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:906: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:921: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -913,12 +928,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 917 "configure" +#line 932 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -944,12 +959,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:948: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:963: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:953: checking whether we are using GNU C" >&5 +echo "configure:968: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -958,7 +973,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -977,7 +992,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:981: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:996: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1009,7 +1024,7 @@ else fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1013: checking how to run the C preprocessor" >&5 +echo "configure:1028: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1024,13 +1039,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1041,13 +1056,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1066: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1058,13 +1073,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1068: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1089,12 +1104,12 @@ fi echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1093: checking for ANSI C header files" >&5 +echo "configure:1108: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1102,7 +1117,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1106: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1121: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1119,7 +1134,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1137,7 +1152,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -1158,7 +1173,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1169,7 +1184,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:1173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1197,7 +1212,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1201: checking for $ac_word" >&5 +echo "configure:1216: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1233,7 +1248,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1237: checking for $ac_word" >&5 +echo "configure:1252: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1266,7 +1281,7 @@ test -n "$LEX" || LEX=""$missing_dir/missing flex"" # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1270: checking for $ac_word" >&5 +echo "configure:1285: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1300,7 +1315,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:1304: checking for yywrap in -l$ac_lib" >&5 +echo "configure:1319: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1308,7 +1323,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1342,7 +1357,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:1346: checking lex output file root" >&5 +echo "configure:1361: checking lex output file root" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1363,7 +1378,7 @@ echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:1367: checking whether yytext is a pointer" >&5 +echo "configure:1382: checking whether yytext is a pointer" >&5 if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1375,14 +1390,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c ac_save_LIBS="$LIBS" LIBS="$LIBS $LEXLIB" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_prog_lex_yytext_pointer=yes else @@ -1415,7 +1430,7 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1419: checking for a BSD compatible install" >&5 +echo "configure:1434: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1468,7 +1483,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1472: checking how to run the C preprocessor" >&5 +echo "configure:1487: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1483,13 +1498,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1493: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1508: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1500,13 +1515,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1525: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1517,13 +1532,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1527: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1542: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1550,7 +1565,7 @@ echo "$ac_t""$CPP" 1>&6 # Extract the first word of "rm", so it can be a program name with args. set dummy rm; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1554: checking for $ac_word" >&5 +echo "configure:1569: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1586,7 +1601,7 @@ fi # Extract the first word of "mv", so it can be a program name with args. set dummy mv; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1590: checking for $ac_word" >&5 +echo "configure:1605: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1622,7 +1637,7 @@ fi # Extract the first word of "tar", so it can be a program name with args. set dummy tar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1626: checking for $ac_word" >&5 +echo "configure:1641: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1708,7 +1723,7 @@ fi # Extract the first word of "glib-config", so it can be a program name with args. set dummy glib-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1712: checking for $ac_word" >&5 +echo "configure:1727: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GLIB_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1743,7 +1758,7 @@ fi min_glib_version=1.2.0 echo $ac_n "checking for GLIB - version >= $min_glib_version""... $ac_c" 1>&6 -echo "configure:1747: checking for GLIB - version >= $min_glib_version" >&5 +echo "configure:1762: checking for GLIB - version >= $min_glib_version" >&5 no_glib="" if test "$GLIB_CONFIG" = "no" ; then no_glib=yes @@ -1766,7 +1781,7 @@ echo "configure:1747: checking for GLIB - version >= $min_glib_version" >&5 echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -1842,7 +1857,7 @@ main () } EOF -if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1876,7 +1891,7 @@ fi CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat > conftest.$ac_ext < @@ -1886,7 +1901,7 @@ int main() { return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } EOF -if { (eval echo configure:1890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" @@ -1924,54 +1939,11 @@ rm -f conftest* rm -f conf.glibtest -echo $ac_n "checking for poptGetContext in -lpopt""... $ac_c" 1>&6 -echo "configure:1929: checking for poptGetContext in -lpopt" >&5 -ac_lib_var=`echo popt'_'poptGetContext | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lpopt $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - POPT_LIB="-lpopt" -else - echo "$ac_t""no" 1>&6 -{ echo "configure: error: Popt library not found" 1>&2; exit 1; } -fi - - -#AM_PROG_LIBTOOL echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:1975: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:1947: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -2147,6 +2119,9 @@ s%@AUTOMAKE@%$AUTOMAKE%g s%@AUTOHEADER@%$AUTOHEADER%g s%@MAKEINFO@%$MAKEINFO%g s%@SET_MAKE@%$SET_MAKE%g +s%@SUBDIRS@%$SUBDIRS%g +s%@DOINSTGOB@%$DOINSTGOB%g +s%@NOINSTGOB@%$NOINSTGOB%g s%@CC@%$CC%g s%@CPP@%$CPP%g s%@YACC@%$YACC%g @@ -2159,7 +2134,6 @@ s%@TAR@%$TAR%g s%@GLIB_CONFIG@%$GLIB_CONFIG%g s%@GLIB_CFLAGS@%$GLIB_CFLAGS%g s%@GLIB_LIBS@%$GLIB_LIBS%g -s%@POPT_LIB@%$POPT_LIB%g s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g s%@MAINT@%$MAINT%g diff --git a/configure.in b/configure.in index 1dc72a0..325f17a 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,22 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.2) AC_INIT(src/tree.h) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(gob,0.90.2) +AM_INIT_AUTOMAKE(gob,0.90.3) + +if test -f ../NOINST_GOB ; then + DOINSTGOB= + NOINSTGOB=gob + AC_MSG_RESULT([*** NOT Going to install GOB ***]) + SUBDIRS="src" + AC_SUBST(SUBDIRS) +else + DOINSTGOB=gob + NOINSTGOB= + SUBDIRS="src doc" + AC_SUBST(SUBDIRS) +fi +AC_SUBST(DOINSTGOB) +AC_SUBST(NOINSTGOB) dnl Checks for programs. AC_PROG_CC @@ -15,12 +30,14 @@ AC_PATH_PROG(RM, rm, /bin/rm) AC_PATH_PROG(MV, mv, /bin/mv) AC_PATH_PROG(TAR, tar, /bin/tar) AM_PATH_GLIB(1.2.0,,,) -AC_CHECK_LIB(popt,poptGetContext, [POPT_LIB="-lpopt"], - AC_MSG_ERROR(Popt library not found)) -AC_SUBST(POPT_LIB) +dnl We don't check popt since we're not using it at the moment, but +dnl We just might use it later +dnl AC_CHECK_LIB(popt,poptGetContext, [POPT_LIB="-lpopt"], +dnl AC_MSG_ERROR(Popt library not found, find it on ftp://ftp.redhat.com/pub/redhat/code/)) +dnl AC_SUBST(POPT_LIB) -#AM_PROG_LIBTOOL +dnl AM_PROG_LIBTOOL AM_MAINTAINER_MODE diff --git a/doc/Makefile.am b/doc/Makefile.am index 9346657..ffe8556 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,3 +1,4 @@ man_MANS = gob.1 +SUBDIRS = -EXTRA_DIST = $(man_MANS) +EXTRA_DIST = gob.1.in diff --git a/doc/Makefile.in b/doc/Makefile.in index e257a0a..ce6de43 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -61,6 +61,7 @@ CC = @CC@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_CONFIG = @GLIB_CONFIG@ GLIB_LIBS = @GLIB_LIBS@ @@ -69,16 +70,17 @@ LEX = @LEX@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MV = @MV@ +NOINSTGOB = @NOINSTGOB@ PACKAGE = @PACKAGE@ -POPT_LIB = @POPT_LIB@ RM = @RM@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ man_MANS = gob.1 +SUBDIRS = -EXTRA_DIST = $(man_MANS) +EXTRA_DIST = gob.1.in mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = gob.1 @@ -142,9 +144,95 @@ install-man: $(MANS) uninstall-man: @$(NORMAL_UNINSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + tags: TAGS -TAGS: +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) @@ -161,30 +249,41 @@ distdir: $(DISTFILES) || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done info-am: -info: info-am +info: info-recursive dvi-am: -dvi: dvi-am +dvi: dvi-recursive check-am: all-am -check: check-am +check: check-recursive installcheck-am: -installcheck: installcheck-am +installcheck: installcheck-recursive install-exec-am: -install-exec: install-exec-am +install-exec: install-exec-recursive install-data-am: install-man -install-data: install-data-am +install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am +install: install-recursive uninstall-am: uninstall-man -uninstall: uninstall-am +uninstall: uninstall-recursive all-am: Makefile $(MANS) -all-redirect: all-am +all-redirect: all-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: +installdirs: installdirs-recursive +installdirs-am: $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 @@ -197,28 +296,35 @@ distclean-generic: -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: -mostlyclean-am: mostlyclean-generic +mostlyclean-am: mostlyclean-tags mostlyclean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive -clean-am: clean-generic mostlyclean-am +clean-am: clean-tags clean-generic mostlyclean-am -clean: clean-am +clean: clean-recursive -distclean-am: distclean-generic clean-am +distclean-am: distclean-tags distclean-generic clean-am -distclean: distclean-am +distclean: distclean-recursive -maintainer-clean-am: maintainer-clean-generic distclean-am +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -maintainer-clean: maintainer-clean-am - -.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \ -distdir info-am info dvi-am dvi check check-am installcheck-am \ -installcheck install-exec-am install-exec install-data-am install-data \ -install-am install uninstall-am uninstall all-redirect all-am all \ +maintainer-clean: maintainer-clean-recursive + +.PHONY: install-man1 uninstall-man1 install-man uninstall-man \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean diff --git a/doc/gob.1 b/doc/gob.1 deleted file mode 100644 index 73c5385..0000000 --- a/doc/gob.1 +++ /dev/null @@ -1,287 +0,0 @@ -.\" -.\" gob manual page -.\" (C) 1999 George Lebl -.\" -.\" This manual page is covered by the terms of the GNU General -.\" Public License. -.\" -.TH GOB 1 "GOB 0.90.2" -.SH NAME -GOB \- The GTK+ Object Builder -.SH SYNOPSIS -.PP -.B gob -.SH DESCRIPTION -.PP -GTK+ Object Builder is a simple preprocessor for easily creating -GTK+ objects. It does not parse any C code and ignores any C errors. It -is in spirit similar to things like lex or yacc. - -.SH TYPENAMES -.PP -Because we need to parse out different parts of the typename, -sometimes you need to specify the typename with some special syntax. -Types are specified in capitalized form and words are separated by ':'. -The first word of the type (which can be empty) is the "namespace". This -fact is for example used for the type checking macro. For "Gtk:New:Button", -the macro will be GTK_IS_NEW_BUTTON. This format of typenames is used in -the class declaration header and for method argument types. - -.SH OUTPUT FILE NAMES -.PP -The filenames are created from the typename. The words are -separated by '-' and all in lower case. For example for an object named -"Gtk:New:Button", the files are gtk-new-button.c and gtk-new-button.h. - -.SH INCLUDING NORMAL C CODE IN THE OUTPUT FILES -.PP -To include some code directly in the output C file begin with -'%{' on an empty line and end the code with a '%{' on an empty line. To -put the code in the output header file, start the code with a '%h{'. -For example: -.nf - - %h{ - void somefunc(int i); - %} - %{ - void somefunc(int i) - { - /* some code */ - } - %} - -.fi - -.SH MAKING A NEW CLASS -.PP -The class header: -.PP -There can be only one class per input file. Defining a class -is sort of like in Java, you define the class and write inline code -directly into the class definition. To define a class you need to specify -the new object name and the name of the object from which it is derived -from, such as this "class from { }". -For example: -.nf - - class Gtk:New:Button from Gtk:Button { - - } - -.fi -.PP -Data members: -.PP -There are three types of data members. Two of them are normal -data numbers, and one is a virtual one, usually linked to a normal public -data member. The two normal data members are public or private. They are -basically just copied into the object directly. There is only one -identifier allowed per typename unlike in normal C. Example: -.nf - - public int i; - private GtkWidget *h; - -.fi -.PP -The private members are not currently protected from outside use, -they are just marked by a comment in the header file, this will most likely -be somehow solved in some future version. -.PP -The third type is an argument type. It is a named datamember which -is one of the features of the GTK+ object system. You need to define a get -and a set handler. They are fragments of C code that will be used to -get the value or set the value of the argument. Inside them you can use the -define ARG to which you assign the data or get the data. You can also use -the identifier "self" as pointer to the object instance. The type is -defined as one of the gtk type enums, but without the GTK_TYPE_ prefix. -For example: -.nf - - public int height; - argument INT height set { self->height = ARG; } get { ARG = self->height; }; - -.fi -.PP -If you don't define a set or a get handler it will be a readonly -or a writeonly argument. If you want to add extra argument flags, add -them into parenthesis after the argument keyword, separated by '|' and -without the GTK_ARG_ prefix. For example: -.nf - - public int height; - argument (CONSTRUCT) INT height get { ARG = self->height; }; - -.fi -.PP -Methods: -.PP -There is a whole array of possible methods. The two normal, -"familiar" method types are private and public. Public are defined as -normal functions with a prototype in the header file. Private methods -are defined as static functions with prototypes at the top of the .c -file. Then there are signal, virtual and override methods. You can also -define init and init_class methods with a special definition if you want -to add code to the constructors or you can just leave them out. -.PP -Argument lists: -.PP -For all but the init and init_class methods, you use the -following syntax for arguments. The first argument can be just "self", -which gob will translate into a pointer to the object instance. The rest -of the arguments are very similar to normal C arguments. If the -typename is an object pointer you should use the syntax defined above -with the words separated by ':' -.nf - -or - (check ) -.fi -.PP -The checks are glib type preconditions, and can be the following: -"null", which tests pointers for being NULL, "type" which checks GTK+ -object pointers for being the right type, " " which tests -numeric arguments for being a certain value. The test can be a <,>,<=,>= -!= or ==. Example: -.nf - - public int foo(self, int h (check > 0 < 11), Gtk:Widget *w (check null type)) - -.fi -.PP -This will be the prototype of a function which has a self pointer -as the first argument, an integer argument which will be checked and has -to be more then 0 and less then 11, and a pointer to a GtkWidget object -instance and it is checked for being null and the type will also be -checked. -.PP -Error return: -.PP -Methods which have a return value, there also has to be something -returned if there is an error, such as if a precondition is not met. The -default is 0, casted to the type of the method. If you need to return -something else then you can specify an "onerror" keyword after the -prototype and after that a number, a token (an identifier) or a bit of C -code enclosed in braces {}. The braces will not be printed into the -output, they just delimit the string. For example -.nf - - public void * get_something(self, int i (check >= 0)) onerror NULL { - ... - } - -.fi -.PP -Virtual methods: -.PP -Virtual methods are basically pointers in the class structure, -so that one can override the method in derived methods. They can be empty -(if you put ';' instead of the C code). A wrapper will also be defined -which makes calling the methods he same as public methods. This type of -method is just a little bit "slower" then normal functions, but not as -slow as signals. You define them by using "virtual" keyword before the -prototype. If you put the keyword "private" right after the "virtual" -keyword, the wrapper will not be a public method, but a private one. -.PP -Signals: -.PP -Signals are methods to which the user can bind other handlers -and override the default handler. The default handler is basically the -method body. This is the most versatile and flexible type of a method -and also the slowest. You need to specify a whole bunch of things when -you define a signal. One thing is when the default handler will be run, -first or last. You specify that by "first" or "last" right after the -"signal" keyword. Then you need to define the gtk enum types (again -without the GTK_TYPE_ prefix). For that you define the return types -and the types of arguments after the "self" pointer (not including the -"self" pointer). You put it in the following syntax " ()". If the return type is void, the type should be "NONE", -the same should be for the argument list. The rest of the prototype is -the same as for other method types. The body can also be empty, and -also there is a public method wrapper which you can use for calling the -signal just like a public method. Example: -.nf - - signal first INT(POINTER,INT) - int do_something(self, Gtk:Widget *w (check null type), int length) - { - ... - } - -or - - signal last NONE(NONE) void foo(self); - -.fi -.PP -If you don't want the wrapper that emits the signal to be public, you can -include the keyword "private" after the "signal" keyword. This will make -the wrapper a normal private method. -.PP -If you don't define a "first" or a "last", the default will be taken as -"last". -.PP -Override methods: -.PP -If you need to override some method (a signal or a virtual method -of some class in the parent tree of the new object), you can define and -override method. After the "override" keyword, you should put the -typename of the class you are overriding a method from. Other then that -it is the same as for other methods. The "self" pointer in this case -should be the type of the method you are overriding so that you don't -get warnings during compilation. Example: -.nf - - override (Gtk:Container) void - add (Gtk:Container *self (check null type), Gtk:Widget *wid (check null type)) - { - ... - } -.fi -.PP -Calling methods: -.PP -Inside the code, defines are set for the methods, so that you don't -have to type the class name before each call. Example: -.nf - - private int - foo(self) - { - return self->len; - } - - private int - bar(self,int i) - { - return foo(self) + i; - } - -.fi -.PP -Making new objects: -.PP -You should define a new method which should be a normal public method. Inside -this method, you can use the GET_NEW macro that is defined for you and that -will fetch a new object, so a fairly standard new method would look like: -.nf - - public GtkWidget * - new(void) { - GtkObject *ret; - ret = GTK_OBJECT (GET_NEW); - return ret; - } - -.fi - -.SH BUGS -.PP -The generated header file is included as the first file in the .c file, no -matter what. This means that you will have to put things that need to be -included before that, into an %h{ } section. - -.SH AUTHOR -.PP -George Lebl diff --git a/doc/gob.1.in b/doc/gob.1.in index afd3bf5..82f31ab 100644 --- a/doc/gob.1.in +++ b/doc/gob.1.in @@ -281,6 +281,21 @@ will fetch a new object, so a fairly standard new method would look like: The generated header file is included as the first file in the .c file, no matter what. This means that you will have to put things that need to be included before that, into an %h{ } section. +.PP +Also the lexer does not actually parse the C code, so I'm sure that some corner +cases or maybe even some not so corner cases of C syntax might confuse gob +completely. If you find any, send me the source that makes it go gaga and I'll +try to make the lexer try to handle it properly, but no promises. +.PP +Gob uses a lot of #define's so sometimes it can confuse your code. One way +to make sure you don't get confused is not to use method names for absolutely +anything else since gob will use defines of the type: +.nf + + #define method_name class_name_method_name + +.fi +For your class code. .SH AUTHOR .PP diff --git a/gob.spec b/gob.spec index 5a91ffd..7bfc8f2 100644 --- a/gob.spec +++ b/gob.spec @@ -1,4 +1,4 @@ -%define ver 0.90.2 +%define ver 0.90.3 %define rel 1 %define prefix /usr diff --git a/src/Makefile.am b/src/Makefile.am index 3754187..58a6157 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,9 +1,12 @@ #YACCFLAGS += -d -t YFLAGS += -d -t +SUBDIRS = INCLUDES = @GLIB_CFLAGS@ -I$(includedir) -bin_PROGRAMS = gob +bin_PROGRAMS = @DOINSTGOB@ +noinst_PROGRAMS = @NOINSTGOB@ +EXTRA_PROGRAMS = gob gob_SOURCES = \ main.c \ @@ -17,10 +20,12 @@ gob_SOURCES = \ gob_LDADD = \ -lm \ - @POPT_LIB@ \ $(GLIB_LIBS) \ @LEXLIB@ +# we might want popt back in the future +# @POPT_LIB@ + BUILT_SOURCES = parse.h parse.c lexer.c CLEANFILES += $(BUILT_SOURCES) gtk-weird-button.* diff --git a/src/Makefile.in b/src/Makefile.in index 4b076bd..2cf3140 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -63,6 +63,7 @@ CC = @CC@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +DOINSTGOB = @DOINSTGOB@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_CONFIG = @GLIB_CONFIG@ GLIB_LIBS = @GLIB_LIBS@ @@ -71,25 +72,31 @@ LEX = @LEX@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MV = @MV@ +NOINSTGOB = @NOINSTGOB@ PACKAGE = @PACKAGE@ -POPT_LIB = @POPT_LIB@ RM = @RM@ TAR = @TAR@ VERSION = @VERSION@ YACC = @YACC@ YFLAGS = -d -t +SUBDIRS = INCLUDES = @GLIB_CFLAGS@ -I$(includedir) -bin_PROGRAMS = gob +bin_PROGRAMS = @DOINSTGOB@ +noinst_PROGRAMS = @NOINSTGOB@ +EXTRA_PROGRAMS = gob gob_SOURCES = main.c main.h tree.c tree.h out.c out.h parse.y lexer.l -gob_LDADD = -lm @POPT_LIB@ $(GLIB_LIBS) @LEXLIB@ +gob_LDADD = -lm $(GLIB_LIBS) @LEXLIB@ +# we might want popt back in the future +# @POPT_LIB@ + BUILT_SOURCES = parse.h parse.c lexer.c CLEANFILES = $(BUILT_SOURCES) gtk-weird-button.* @@ -98,7 +105,7 @@ EXTRA_DIST = test.gob mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = -PROGRAMS = $(bin_PROGRAMS) +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I.. @@ -156,6 +163,15 @@ uninstall-binPROGRAMS: rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done +mostlyclean-noinstPROGRAMS: + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +distclean-noinstPROGRAMS: + +maintainer-clean-noinstPROGRAMS: + .c.o: $(COMPILE) -c $< @@ -188,6 +204,61 @@ gob: $(gob_OBJECTS) $(gob_DEPENDENCIES) parse.h: parse.c +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) @@ -198,9 +269,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ @@ -232,6 +308,16 @@ distdir: $(DISTFILES) || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done lexer.o: lexer.c ../config.h parse.h main.o: main.c ../config.h tree.h parse.h out.h main.h out.o: out.c out.h @@ -239,29 +325,30 @@ parse.o: parse.c ../config.h tree.h main.h tree.o: tree.c ../config.h tree.h info-am: -info: info-am +info: info-recursive dvi-am: -dvi: dvi-am +dvi: dvi-recursive check-am: all-am -check: check-am +check: check-recursive installcheck-am: -installcheck: installcheck-am +installcheck: installcheck-recursive install-exec-am: install-binPROGRAMS -install-exec: install-exec-am +install-exec: install-exec-recursive install-data-am: -install-data: install-data-am +install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am +install: install-recursive uninstall-am: uninstall-binPROGRAMS -uninstall: uninstall-am +uninstall: uninstall-recursive all-am: Makefile $(PROGRAMS) -all-redirect: all-am +all-redirect: all-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: +installdirs: installdirs-recursive +installdirs-am: $(mkinstalldirs) $(DESTDIR)$(bindir) @@ -276,39 +363,49 @@ distclean-generic: maintainer-clean-generic: -test -z "lexerlparsehparsec$(BUILT_SOURCES)" || rm -f lexerl parseh parsec $(BUILT_SOURCES) -mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ - mostlyclean-tags mostlyclean-generic +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \ + mostlyclean-compile mostlyclean-tags \ + mostlyclean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive -clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ - mostlyclean-am +clean-am: clean-binPROGRAMS clean-noinstPROGRAMS clean-compile \ + clean-tags clean-generic mostlyclean-am -clean: clean-am +clean: clean-recursive -distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ - distclean-generic clean-am +distclean-am: distclean-binPROGRAMS distclean-noinstPROGRAMS \ + distclean-compile distclean-tags distclean-generic \ + clean-am -distclean: distclean-am +distclean: distclean-recursive maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-noinstPROGRAMS \ maintainer-clean-compile maintainer-clean-tags \ maintainer-clean-generic distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive .PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \ +clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS \ mostlyclean-compile distclean-compile clean-compile \ -maintainer-clean-compile tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ -check-am installcheck-am installcheck install-exec-am install-exec \ -install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean +maintainer-clean-compile install-data-recursive \ +uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean parse.h: parse.y diff --git a/src/lexer.c b/src/lexer.c index 95f6964..0902fb5 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -284,92 +284,94 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 61 -#define YY_END_OF_BUFFER 62 -static yyconst short int yy_acclist[302] = +#define YY_NUM_RULES 65 +#define YY_END_OF_BUFFER 66 +static yyconst short int yy_acclist[323] = { 0, - 62, 60, 61, 59, 60, 61, 1, 59, 61, 60, - 61, 60, 61, 60, 61, 60, 61, 12, 60, 61, - 1, 13, 61, 12, 60, 61, 12, 60, 61, 28, - 60, 61, 1, 29, 61, 22, 28, 60, 61, 28, - 60, 61, 28, 60, 61, 28, 60, 61, 28, 60, - 61, 26, 28, 60, 61, 27, 28, 60, 61, 28, - 60, 61, 25, 60, 61, 1, 61, 24, 25, 60, - 61, 25, 60, 61, 25, 60, 61, 60, 61, 60, - 61, 55, 60, 61, 55, 60, 61, 55, 60, 61, - 56, 60, 61, 60, 61, 60, 61, 53, 60, 61, - - 53, 60, 61, 55, 60, 61, 55, 60, 61, 55, - 60, 61, 55, 60, 61, 55, 60, 61, 55, 60, - 61, 55, 60, 61, 55, 60, 61, 55, 60, 61, - 55, 60, 61, 55, 60, 61, 55, 60, 61, 57, - 60, 61, 58, 60, 61, 7, 15, 11, 8, 21, - 16, 23, 9, 55, 54, 55, 55, 53, 10, 53, - 53, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 3, - 14, 17, 19, 4, 5, 54, 55, 55, 45, 53, - 6, 53, 53, 55, 55, 55, 55, 55, 55, 40, - - 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, - 55, 55, 55, 18, 20, 55, 31, 55, 55, 43, - 55, 55, 55, 35, 55, 55, 38, 55, 55, 55, - 55, 55, 55, 55, 55, 55, 55, 55, 32, 55, - 30, 55, 55, 44, 55, 55, 41, 55, 55, 55, - 55, 55, 39, 55, 55, 55, 55, 34, 55, 55, - 55, 55, 55, 42, 55, 55, 55, 55, 46, 55, - 50, 55, 36, 55, 33, 55, 55, 55, 55, 55, - 52, 55, 55, 47, 55, 55, 49, 55, 55, 48, - 55, 51, 55, 37, 55, 55, 55, 55, 2, 2, - - 55 + 66, 63, 65, 62, 63, 65, 1, 64, 65, 63, + 64, 65, 63, 65, 63, 65, 63, 65, 63, 65, + 12, 63, 65, 1, 13, 64, 65, 12, 63, 64, + 65, 12, 63, 65, 12, 63, 65, 31, 63, 65, + 1, 32, 64, 65, 31, 63, 64, 65, 24, 31, + 63, 65, 31, 63, 65, 31, 63, 65, 31, 63, + 65, 31, 63, 65, 29, 31, 63, 65, 30, 31, + 63, 65, 31, 63, 65, 27, 63, 65, 1, 28, + 64, 65, 27, 63, 64, 65, 26, 27, 63, 65, + 27, 63, 65, 27, 63, 65, 63, 65, 63, 65, + + 58, 63, 65, 58, 63, 65, 58, 63, 65, 59, + 63, 65, 63, 65, 63, 65, 56, 63, 65, 56, + 63, 65, 58, 63, 65, 58, 63, 65, 58, 63, + 65, 58, 63, 65, 58, 63, 65, 58, 63, 65, + 58, 63, 65, 58, 63, 65, 58, 63, 65, 58, + 63, 65, 58, 63, 65, 58, 63, 65, 60, 63, + 65, 61, 63, 65, 7, 15, 11, 8, 23, 16, + 25, 9, 58, 57, 58, 58, 56, 10, 56, 56, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 3, 14, + + 21, 17, 19, 4, 5, 57, 58, 58, 48, 56, + 6, 56, 56, 58, 58, 58, 58, 58, 58, 43, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 58, 22, 18, 20, 58, 34, 58, 58, + 46, 58, 58, 58, 38, 58, 58, 41, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 35, + 58, 33, 58, 58, 47, 58, 58, 44, 58, 58, + 58, 58, 58, 42, 58, 58, 58, 58, 37, 58, + 58, 58, 58, 58, 45, 58, 58, 58, 58, 49, + 58, 53, 58, 39, 58, 36, 58, 58, 58, 58, + + 58, 55, 58, 58, 50, 58, 58, 52, 58, 58, + 51, 58, 54, 58, 40, 58, 58, 58, 58, 2, + 2, 58 } ; -static yyconst short int yy_accept[233] = +static yyconst short int yy_accept[241] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 4, 7, 10, 12, 14, 16, - 18, 21, 24, 27, 30, 33, 36, 40, 43, 46, - 49, 52, 56, 60, 63, 66, 68, 72, 75, 78, - 80, 82, 85, 88, 91, 94, 96, 98, 101, 104, - 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, - 137, 140, 143, 146, 147, 147, 147, 147, 147, 148, - 149, 149, 149, 149, 150, 150, 151, 152, 153, 154, - 154, 154, 155, 156, 157, 158, 158, 159, 160, 160, - 160, 161, 161, 161, 162, 163, 164, 165, 166, 167, - - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 180, 181, 181, 181, 182, 182, 182, - 183, 184, 184, 185, 185, 186, 186, 187, 188, 189, - 190, 191, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 214, 214, 215, 216, 217, - 219, 220, 222, 223, 224, 226, 227, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 241, 241, - 242, 243, 244, 246, 247, 249, 250, 251, 252, 253, - 255, 256, 257, 258, 260, 261, 262, 262, 263, 264, - - 266, 267, 268, 269, 271, 273, 275, 277, 278, 279, - 279, 280, 281, 283, 284, 286, 287, 289, 289, 290, - 292, 294, 296, 296, 297, 297, 298, 298, 299, 300, - 302, 302 + 1, 1, 1, 2, 4, 7, 10, 13, 15, 17, + 19, 21, 24, 28, 32, 35, 38, 41, 45, 49, + 53, 56, 59, 62, 65, 69, 73, 76, 79, 83, + 87, 91, 94, 97, 99, 101, 104, 107, 110, 113, + 115, 117, 120, 123, 126, 129, 132, 135, 138, 141, + 144, 147, 150, 153, 156, 159, 162, 165, 166, 166, + 166, 166, 166, 167, 168, 168, 168, 168, 168, 169, + 169, 170, 171, 172, 173, 173, 173, 174, 175, 176, + 177, 177, 178, 179, 179, 179, 180, 180, 180, 181, + + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 199, 200, + 200, 200, 201, 202, 202, 202, 202, 203, 204, 204, + 205, 205, 206, 206, 207, 208, 209, 210, 211, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 234, 234, 235, 236, 237, 238, 240, 241, + 243, 244, 245, 247, 248, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 262, 262, 263, 264, + 265, 267, 268, 270, 271, 272, 273, 274, 276, 277, + + 278, 279, 281, 282, 283, 283, 284, 285, 287, 288, + 289, 290, 292, 294, 296, 298, 299, 300, 300, 301, + 302, 304, 305, 307, 308, 310, 310, 311, 313, 315, + 317, 317, 318, 318, 319, 319, 320, 321, 323, 323 } ; static yyconst int yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 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, 2, 1, 4, 1, 1, 5, 1, 6, 1, - 1, 7, 1, 1, 1, 8, 9, 10, 11, 11, - 11, 11, 11, 11, 11, 12, 12, 13, 1, 1, - 1, 1, 1, 1, 14, 14, 15, 14, 16, 17, - 18, 19, 18, 18, 20, 18, 21, 18, 22, 18, - 18, 23, 18, 24, 25, 18, 18, 18, 18, 18, - 1, 26, 1, 1, 18, 1, 27, 28, 29, 30, - - 31, 32, 33, 34, 35, 18, 18, 36, 37, 38, - 39, 40, 18, 41, 42, 43, 44, 45, 18, 46, - 18, 18, 47, 1, 48, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 1, 1, 6, 1, 7, 1, + 1, 8, 1, 1, 1, 9, 10, 11, 12, 12, + 12, 12, 12, 12, 12, 13, 13, 14, 1, 1, + 1, 1, 1, 1, 15, 15, 16, 15, 17, 18, + 19, 20, 19, 19, 21, 19, 22, 19, 23, 19, + 19, 24, 19, 25, 26, 19, 19, 19, 19, 19, + 1, 27, 1, 1, 19, 1, 28, 29, 30, 31, + + 32, 33, 34, 35, 36, 19, 19, 37, 38, 39, + 40, 41, 19, 42, 43, 44, 45, 46, 19, 47, + 19, 19, 48, 1, 49, 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, @@ -386,203 +388,207 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[49] = +static yyconst int yy_meta[50] = { 0, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 3, - 3, 3, 4, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 1, 5, 5, 5, 5, - 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 1, 1 + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 4, 5, 5, 5, 5, 6, 6, + 6, 6, 6, 6, 6, 6, 1, 5, 5, 5, + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 1, 1 } ; -static yyconst short int yy_base[248] = +static yyconst short int yy_base[256] = { 0, - 0, 2, 3, 5, 29, 75, 13, 15, 123, 171, - 212, 0, 493, 494, 494, 494, 6, 470, 455, 6, - 494, 494, 481, 467, 494, 494, 494, 1, 13, 466, - 0, 494, 494, 439, 494, 494, 494, 464, 0, 21, - 0, 472, 24, 1, 494, 46, 36, 51, 56, 31, - 52, 12, 47, 34, 56, 60, 62, 61, 69, 70, - 74, 494, 494, 494, 481, 459, 455, 434, 494, 494, - 41, 474, 473, 494, 475, 494, 494, 494, 494, 474, - 463, 462, 461, 82, 77, 465, 107, 494, 469, 127, - 135, 140, 0, 146, 107, 140, 128, 98, 146, 147, - - 148, 149, 79, 175, 58, 172, 150, 180, 155, 191, - 186, 181, 468, 494, 451, 427, 494, 462, 461, 494, - 494, 463, 494, 462, 494, 451, 450, 102, 188, 494, - 197, 459, 494, 200, 0, 151, 189, 156, 201, 218, - 219, 448, 202, 204, 221, 192, 225, 223, 215, 227, - 236, 237, 245, 250, 444, 417, 494, 494, 252, 445, - 253, 444, 254, 256, 443, 257, 442, 260, 261, 264, - 263, 265, 268, 85, 266, 270, 269, 441, 430, 494, - 271, 274, 439, 276, 438, 272, 280, 273, 283, 437, - 293, 296, 297, 436, 301, 304, 431, 305, 306, 434, - - 307, 308, 310, 433, 432, 431, 430, 311, 314, 417, - 312, 315, 427, 320, 383, 317, 377, 342, 319, 343, - 342, 341, 333, 323, 336, 333, 142, 322, 494, 39, - 494, 358, 364, 370, 376, 382, 388, 394, 396, 400, - 406, 412, 418, 422, 426, 432, 436 + 0, 3, 12, 15, 35, 82, 24, 44, 131, 180, + 221, 0, 509, 510, 510, 510, 510, 4, 485, 470, + 6, 510, 510, 510, 496, 482, 510, 510, 510, 510, + 16, 16, 481, 0, 510, 510, 454, 510, 510, 510, + 510, 479, 0, 42, 0, 487, 21, 17, 510, 61, + 45, 66, 82, 18, 62, 42, 22, 44, 66, 76, + 82, 84, 111, 85, 87, 510, 510, 510, 497, 474, + 470, 449, 510, 510, 489, 58, 488, 487, 510, 490, + 510, 510, 510, 510, 489, 477, 476, 475, 86, 108, + 479, 56, 510, 484, 106, 148, 154, 0, 159, 135, + + 148, 136, 106, 159, 138, 181, 160, 182, 183, 184, + 187, 163, 192, 194, 203, 195, 186, 483, 510, 465, + 441, 510, 510, 476, 475, 474, 510, 510, 477, 510, + 476, 510, 464, 463, 94, 197, 510, 229, 473, 510, + 232, 0, 205, 196, 204, 198, 210, 245, 461, 241, + 242, 246, 249, 254, 251, 257, 258, 260, 262, 263, + 266, 457, 430, 510, 510, 510, 98, 458, 264, 457, + 265, 267, 456, 268, 455, 269, 271, 273, 272, 275, + 278, 191, 276, 280, 285, 454, 443, 510, 302, 291, + 452, 303, 451, 304, 306, 307, 308, 450, 310, 314, + + 311, 449, 313, 315, 444, 318, 317, 446, 319, 323, + 325, 402, 396, 363, 362, 326, 327, 349, 320, 334, + 360, 335, 359, 339, 358, 355, 140, 355, 354, 352, + 344, 89, 346, 345, 199, 336, 510, 3, 510, 378, + 384, 390, 396, 402, 408, 414, 416, 420, 426, 432, + 438, 442, 446, 452, 456 } ; -static yyconst short int yy_def[248] = +static yyconst short int yy_def[256] = { 0, - 232, 232, 233, 233, 234, 234, 235, 235, 236, 236, - 10, 11, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 237, 231, 231, 231, 231, 231, 231, 231, 238, 231, - 239, 240, 240, 240, 231, 231, 231, 231, 231, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 231, 231, 231, 241, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 242, 231, 231, 231, 231, 243, - 244, 240, 245, 240, 240, 231, 231, 231, 246, 231, - 231, 231, 247, 231, 240, 240, 240, 240, 240, 240, - - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 241, 231, 231, 231, 231, 231, 231, 231, - 231, 242, 231, 243, 231, 244, 245, 240, 240, 231, - 231, 246, 231, 231, 247, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 231, 231, 231, 231, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 240, 240, 231, 231, - 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, - 240, 240, 240, 240, 240, 240, 231, 240, 240, 240, - - 240, 240, 240, 240, 240, 240, 240, 240, 240, 231, - 240, 240, 240, 240, 240, 240, 240, 231, 240, 240, - 240, 240, 231, 240, 231, 240, 231, 240, 231, 240, - 0, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231 + 240, 240, 241, 241, 242, 242, 243, 243, 244, 244, + 10, 11, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 245, 239, 239, 239, 239, 239, 239, + 239, 239, 246, 239, 247, 248, 248, 248, 239, 239, + 239, 239, 239, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 239, 239, 239, 249, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 250, + 239, 239, 239, 239, 251, 252, 248, 253, 248, 248, + 239, 239, 239, 254, 239, 239, 239, 255, 239, 248, + + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 249, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 250, 239, + 251, 239, 252, 253, 248, 248, 239, 239, 254, 239, + 239, 255, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 239, 239, 239, 239, 239, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 239, 239, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + + 248, 248, 248, 248, 239, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 239, 248, 248, + 248, 248, 248, 248, 248, 239, 248, 248, 248, 248, + 239, 248, 239, 248, 239, 248, 239, 248, 0, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239 } ; -static yyconst short int yy_nxt[543] = +static yyconst short int yy_nxt[560] = { 0, - 231, 15, 16, 15, 16, 22, 20, 22, 17, 23, - 17, 23, 64, 83, 65, 36, 37, 36, 37, 74, - 18, 75, 18, 24, 83, 24, 71, 79, 19, 80, - 19, 26, 27, 38, 28, 38, 83, 29, 39, 68, - 39, 85, 88, 83, 89, 84, 83, 72, 73, 30, - 98, 83, 69, 86, 31, 87, 87, 87, 90, 83, - 91, 91, 92, 90, 83, 94, 94, 94, 83, 100, - 83, 95, 83, 83, 83, 32, 33, 26, 27, 34, - 28, 83, 83, 29, 99, 96, 83, 118, 119, 83, - 97, 83, 146, 101, 83, 30, 93, 83, 102, 103, - - 31, 105, 107, 108, 106, 128, 104, 110, 111, 144, - 83, 109, 112, 193, 83, 129, 131, 131, 131, 83, - 159, 32, 33, 14, 15, 16, 14, 14, 14, 14, - 14, 40, 14, 14, 14, 41, 134, 134, 134, 136, - 83, 139, 90, 43, 91, 91, 92, 90, 14, 92, - 92, 92, 83, 90, 44, 94, 94, 94, 83, 83, - 83, 83, 83, 83, 229, 138, 137, 83, 83, 45, - 14, 14, 15, 16, 14, 14, 14, 14, 14, 40, - 14, 14, 14, 41, 83, 141, 143, 83, 148, 140, - 142, 43, 83, 83, 161, 150, 14, 163, 83, 147, - - 83, 83, 44, 83, 83, 145, 131, 131, 131, 134, - 134, 134, 149, 83, 83, 154, 83, 45, 14, 46, - 47, 48, 49, 49, 160, 151, 153, 83, 164, 162, - 83, 83, 152, 83, 167, 83, 170, 83, 50, 83, - 51, 52, 53, 54, 168, 166, 55, 56, 83, 83, - 57, 58, 173, 59, 165, 60, 61, 83, 62, 63, - 171, 169, 83, 172, 83, 83, 83, 181, 83, 83, - 174, 176, 83, 83, 175, 83, 83, 83, 83, 178, - 83, 83, 83, 83, 83, 83, 83, 177, 83, 182, - 188, 184, 83, 198, 191, 83, 183, 189, 192, 185, - - 186, 187, 195, 194, 199, 83, 200, 190, 83, 83, - 201, 204, 196, 83, 202, 203, 83, 83, 83, 83, - 83, 211, 83, 83, 83, 206, 83, 83, 205, 83, - 209, 83, 83, 224, 83, 83, 219, 214, 208, 207, - 215, 216, 226, 212, 230, 83, 222, 213, 228, 217, - 221, 227, 225, 83, 83, 83, 223, 220, 14, 14, - 14, 14, 14, 14, 21, 21, 21, 21, 21, 21, - 25, 25, 25, 25, 25, 25, 35, 35, 35, 35, - 35, 35, 42, 42, 42, 42, 42, 42, 76, 83, - 76, 76, 76, 76, 78, 83, 78, 78, 78, 78, - - 81, 81, 82, 82, 82, 82, 113, 113, 113, 113, - 113, 113, 122, 122, 122, 122, 122, 122, 124, 124, - 124, 124, 124, 124, 126, 126, 126, 126, 127, 127, - 127, 127, 132, 132, 132, 132, 132, 132, 135, 83, - 135, 218, 83, 83, 83, 83, 83, 210, 83, 83, - 83, 83, 197, 83, 83, 83, 83, 83, 180, 179, - 83, 133, 83, 83, 125, 123, 158, 157, 156, 155, - 114, 133, 130, 83, 83, 83, 125, 123, 121, 120, - 117, 116, 115, 114, 83, 66, 77, 66, 66, 70, - 67, 66, 231, 13, 231, 231, 231, 231, 231, 231, - - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231 + 239, 15, 16, 17, 15, 16, 17, 239, 21, 18, + 239, 68, 18, 69, 23, 24, 88, 23, 24, 25, + 75, 19, 25, 79, 19, 80, 39, 40, 41, 20, + 88, 88, 20, 26, 88, 88, 26, 28, 29, 30, + 72, 31, 76, 89, 32, 42, 39, 40, 41, 84, + 43, 85, 93, 73, 94, 88, 33, 88, 90, 100, + 104, 34, 124, 77, 78, 42, 138, 138, 138, 91, + 43, 92, 92, 92, 95, 88, 96, 96, 97, 88, + 105, 103, 35, 36, 28, 29, 30, 37, 31, 88, + 95, 32, 99, 99, 99, 88, 101, 88, 88, 88, + + 88, 102, 88, 33, 106, 125, 126, 88, 34, 234, + 135, 88, 98, 167, 189, 107, 141, 141, 141, 88, + 108, 88, 116, 115, 88, 110, 117, 109, 111, 35, + 36, 14, 15, 16, 17, 14, 14, 14, 14, 14, + 44, 14, 14, 14, 45, 112, 113, 136, 88, 88, + 146, 88, 47, 88, 114, 232, 95, 14, 96, 96, + 97, 88, 95, 48, 97, 97, 97, 95, 143, 99, + 99, 99, 88, 88, 145, 144, 88, 148, 49, 14, + 14, 15, 16, 17, 14, 14, 14, 14, 14, 44, + 14, 14, 14, 45, 88, 88, 88, 88, 150, 88, + + 88, 47, 155, 147, 88, 88, 14, 88, 88, 88, + 88, 88, 48, 151, 152, 154, 88, 88, 88, 153, + 201, 161, 237, 88, 149, 156, 172, 49, 14, 50, + 51, 52, 53, 53, 168, 157, 160, 170, 158, 138, + 138, 138, 141, 141, 141, 159, 171, 173, 54, 169, + 55, 56, 57, 58, 88, 88, 59, 60, 88, 88, + 61, 62, 88, 63, 88, 64, 65, 88, 66, 67, + 88, 88, 174, 88, 175, 88, 88, 88, 88, 88, + 88, 88, 88, 176, 88, 88, 88, 177, 88, 88, + 179, 88, 180, 88, 178, 181, 186, 184, 88, 183, + + 196, 190, 182, 192, 88, 199, 185, 197, 191, 200, + 194, 193, 195, 203, 202, 88, 88, 88, 198, 88, + 88, 88, 207, 88, 88, 206, 88, 88, 88, 204, + 88, 88, 88, 88, 208, 219, 88, 212, 88, 88, + 88, 210, 217, 209, 214, 227, 213, 88, 88, 88, + 211, 216, 88, 222, 215, 220, 223, 224, 88, 238, + 221, 236, 235, 225, 233, 88, 229, 88, 88, 230, + 231, 88, 88, 88, 226, 88, 88, 228, 14, 14, + 14, 14, 14, 14, 22, 22, 22, 22, 22, 22, + 27, 27, 27, 27, 27, 27, 38, 38, 38, 38, + + 38, 38, 46, 46, 46, 46, 46, 46, 81, 88, + 81, 81, 81, 81, 83, 88, 83, 83, 83, 83, + 86, 86, 87, 87, 87, 87, 118, 118, 118, 118, + 118, 118, 129, 129, 129, 129, 129, 129, 131, 131, + 131, 131, 131, 131, 133, 133, 133, 133, 134, 134, + 134, 134, 139, 139, 139, 139, 139, 139, 142, 88, + 142, 218, 88, 88, 88, 88, 205, 88, 88, 88, + 88, 88, 188, 187, 88, 140, 88, 88, 132, 130, + 166, 165, 164, 163, 162, 119, 140, 137, 88, 88, + 88, 132, 130, 128, 127, 123, 122, 121, 120, 119, + + 88, 70, 82, 70, 70, 74, 71, 70, 239, 13, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239 } ; -static yyconst short int yy_chk[543] = +static yyconst short int yy_chk[560] = { 0, - 0, 1, 1, 2, 2, 3, 2, 4, 1, 3, - 2, 4, 17, 44, 17, 7, 7, 8, 8, 29, - 1, 29, 2, 3, 52, 4, 28, 40, 1, 40, - 2, 5, 5, 7, 5, 8, 43, 5, 7, 20, - 8, 44, 47, 50, 47, 43, 54, 28, 28, 5, - 52, 230, 20, 46, 5, 46, 46, 46, 48, 53, - 48, 48, 48, 49, 51, 49, 49, 49, 55, 54, - 105, 50, 56, 58, 57, 5, 5, 6, 6, 6, - 6, 59, 60, 6, 53, 51, 61, 71, 71, 85, - 51, 103, 105, 55, 84, 6, 48, 174, 56, 57, - - 6, 58, 59, 59, 58, 84, 57, 60, 61, 103, - 98, 59, 61, 174, 128, 85, 87, 87, 87, 95, - 128, 6, 6, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 90, 90, 90, 95, - 97, 98, 91, 9, 91, 91, 91, 92, 9, 92, - 92, 92, 96, 94, 9, 94, 94, 94, 99, 100, - 101, 102, 107, 136, 227, 97, 96, 109, 138, 9, - 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 106, 100, 102, 104, 107, 99, - 101, 10, 108, 112, 136, 109, 10, 138, 111, 106, - - 129, 137, 10, 110, 146, 104, 131, 131, 131, 134, - 134, 134, 108, 139, 143, 112, 144, 10, 10, 11, - 11, 11, 11, 11, 129, 110, 111, 149, 139, 137, - 140, 141, 110, 145, 143, 148, 146, 147, 11, 150, - 11, 11, 11, 11, 144, 141, 11, 11, 151, 152, - 11, 11, 149, 11, 140, 11, 11, 153, 11, 11, - 147, 145, 154, 148, 159, 161, 163, 159, 164, 166, - 150, 152, 168, 169, 151, 171, 170, 172, 175, 154, - 173, 177, 176, 181, 186, 188, 182, 153, 184, 161, - 170, 164, 187, 181, 173, 189, 163, 171, 173, 166, - - 168, 169, 176, 175, 182, 191, 184, 172, 192, 193, - 186, 189, 177, 195, 187, 188, 196, 198, 199, 201, - 202, 198, 203, 208, 211, 192, 209, 212, 191, 216, - 196, 219, 214, 219, 228, 224, 211, 202, 195, 193, - 203, 208, 224, 199, 228, 226, 216, 201, 226, 209, - 214, 225, 223, 222, 221, 220, 218, 212, 232, 232, - 232, 232, 232, 232, 233, 233, 233, 233, 233, 233, - 234, 234, 234, 234, 234, 234, 235, 235, 235, 235, - 235, 235, 236, 236, 236, 236, 236, 236, 237, 217, - 237, 237, 237, 237, 238, 215, 238, 238, 238, 238, - - 239, 239, 240, 240, 240, 240, 241, 241, 241, 241, - 241, 241, 242, 242, 242, 242, 242, 242, 243, 243, - 243, 243, 243, 243, 244, 244, 244, 244, 245, 245, - 245, 245, 246, 246, 246, 246, 246, 246, 247, 213, - 247, 210, 207, 206, 205, 204, 200, 197, 194, 190, - 185, 183, 179, 178, 167, 165, 162, 160, 156, 155, - 142, 132, 127, 126, 124, 122, 119, 118, 116, 115, - 113, 89, 86, 83, 82, 81, 80, 75, 73, 72, - 68, 67, 66, 65, 42, 38, 34, 30, 24, 23, - 19, 18, 13, 231, 231, 231, 231, 231, 231, 231, - - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231 + 0, 1, 1, 1, 2, 2, 2, 0, 2, 1, + 0, 18, 2, 18, 3, 3, 238, 4, 4, 3, + 31, 1, 4, 32, 2, 32, 7, 7, 7, 1, + 48, 54, 2, 3, 47, 57, 4, 5, 5, 5, + 21, 5, 31, 47, 5, 7, 8, 8, 8, 44, + 7, 44, 51, 21, 51, 56, 5, 58, 48, 54, + 57, 5, 76, 31, 31, 8, 92, 92, 92, 50, + 8, 50, 50, 50, 52, 55, 52, 52, 52, 59, + 58, 56, 5, 5, 6, 6, 6, 6, 6, 60, + 53, 6, 53, 53, 53, 61, 55, 62, 64, 89, + + 65, 55, 232, 6, 59, 76, 76, 135, 6, 232, + 89, 167, 52, 135, 167, 60, 95, 95, 95, 103, + 61, 90, 65, 64, 63, 62, 65, 61, 62, 6, + 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 63, 63, 90, 100, 102, + 103, 105, 9, 227, 63, 227, 96, 9, 96, 96, + 96, 101, 97, 9, 97, 97, 97, 99, 100, 99, + 99, 99, 104, 107, 102, 101, 112, 105, 9, 9, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 106, 108, 109, 110, 107, 117, + + 111, 10, 112, 104, 182, 113, 10, 114, 116, 144, + 136, 146, 10, 108, 109, 111, 115, 145, 143, 110, + 182, 117, 235, 147, 106, 113, 146, 10, 10, 11, + 11, 11, 11, 11, 136, 114, 116, 144, 115, 138, + 138, 138, 141, 141, 141, 115, 145, 147, 11, 143, + 11, 11, 11, 11, 150, 151, 11, 11, 148, 152, + 11, 11, 153, 11, 155, 11, 11, 154, 11, 11, + 156, 157, 148, 158, 150, 159, 160, 169, 171, 161, + 172, 174, 176, 151, 177, 179, 178, 152, 180, 183, + 154, 181, 155, 184, 153, 156, 161, 159, 185, 158, + + 178, 169, 157, 172, 190, 181, 160, 179, 171, 181, + 176, 174, 177, 184, 183, 189, 192, 194, 180, 195, + 196, 197, 190, 199, 201, 189, 203, 200, 204, 185, + 207, 206, 209, 219, 192, 206, 210, 197, 211, 216, + 217, 195, 204, 194, 200, 219, 199, 220, 222, 236, + 196, 203, 224, 210, 201, 207, 211, 216, 234, 236, + 209, 234, 233, 217, 231, 230, 222, 229, 228, 224, + 226, 225, 223, 221, 218, 215, 214, 220, 240, 240, + 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, + 242, 242, 242, 242, 242, 242, 243, 243, 243, 243, + + 243, 243, 244, 244, 244, 244, 244, 244, 245, 213, + 245, 245, 245, 245, 246, 212, 246, 246, 246, 246, + 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, + 249, 249, 250, 250, 250, 250, 250, 250, 251, 251, + 251, 251, 251, 251, 252, 252, 252, 252, 253, 253, + 253, 253, 254, 254, 254, 254, 254, 254, 255, 208, + 255, 205, 202, 198, 193, 191, 187, 186, 175, 173, + 170, 168, 163, 162, 149, 139, 134, 133, 131, 129, + 126, 125, 124, 121, 120, 118, 94, 91, 88, 87, + 86, 85, 80, 78, 77, 75, 72, 71, 70, 69, + + 46, 42, 37, 33, 26, 25, 20, 19, 13, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, + 239, 239, 239, 239, 239, 239, 239, 239, 239 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -668,7 +674,7 @@ add_to_cbuf(char *s) #define CLASS_CODE_I 5 -#line 672 "lex.yy.c" +#line 678 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -819,13 +825,13 @@ YY_MALLOC_DECL YY_DECL { register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; + register char *yy_cp = NULL, *yy_bp = NULL; register int yy_act; #line 66 "lexer.l" -#line 829 "lex.yy.c" +#line 835 "lex.yy.c" if ( yy_init ) { @@ -874,14 +880,14 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 232 ) + if ( yy_current_state >= 240 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 494 ); + while ( yy_base[yy_current_state] != 510 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -934,7 +940,7 @@ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 73 "lexer.l" -{ ; /*comment, ignore*/ } +{ add_to_cbuf(yytext); /*comment, ignore*/ } YY_BREAK case 5: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ @@ -960,36 +966,49 @@ YY_RULE_SETUP case 8: YY_RULE_SETUP #line 77 "lexer.l" -{BEGIN(COMMENT); before_comment = C_CODE; } +{ + add_to_cbuf(yytext); + BEGIN(COMMENT); + before_comment = C_CODE; +} YY_BREAK case 9: YY_RULE_SETUP -#line 78 "lexer.l" +#line 82 "lexer.l" {BEGIN(COMMENT); before_comment = CLASS_CODE; } YY_BREAK case 10: YY_RULE_SETUP -#line 79 "lexer.l" +#line 83 "lexer.l" {BEGIN(COMMENT); before_comment = CLASS_CODE_I; } YY_BREAK case 11: YY_RULE_SETUP -#line 80 "lexer.l" -{BEGIN(before_comment);} +#line 84 "lexer.l" +{ + if(before_comment == C_CODE) add_to_cbuf(yytext); + BEGIN(before_comment); + } YY_BREAK case 12: YY_RULE_SETUP -#line 81 "lexer.l" -{ ; /* comment, ignore */ } +#line 88 "lexer.l" +{ + /* comment, ignore */ + if(before_comment == C_CODE) add_to_cbuf(yytext); + } YY_BREAK case 13: YY_RULE_SETUP -#line 82 "lexer.l" -{ ; /* comment, ignore */ } +#line 92 "lexer.l" +{ + /* comment, ignore */ + if(before_comment == C_CODE) add_to_cbuf(yytext); + } YY_BREAK case 14: YY_RULE_SETUP -#line 84 "lexer.l" +#line 97 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1001,7 +1020,7 @@ YY_RULE_SETUP YY_BREAK case 15: YY_RULE_SETUP -#line 92 "lexer.l" +#line 105 "lexer.l" { BEGIN(C_CODE); parenth_depth = 1; @@ -1013,7 +1032,7 @@ YY_RULE_SETUP YY_BREAK case 16: YY_RULE_SETUP -#line 100 "lexer.l" +#line 113 "lexer.l" { BEGIN(INITIAL); yylval.cbuf = cbuf; @@ -1026,70 +1045,81 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 110 "lexer.l" +#line 123 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 18: YY_RULE_SETUP -#line 111 "lexer.l" +#line 124 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 19: YY_RULE_SETUP -#line 112 "lexer.l" +#line 125 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 20: YY_RULE_SETUP -#line 113 "lexer.l" +#line 126 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 21: YY_RULE_SETUP -#line 115 "lexer.l" +#line 127 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK case 22: YY_RULE_SETUP -#line 116 "lexer.l" +#line 128 "lexer.l" +{ add_to_cbuf(yytext); } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 130 "lexer.l" +{ add_to_cbuf(yytext); } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 131 "lexer.l" { BEGIN(C_CODE_STRING); add_to_cbuf(yytext); } YY_BREAK -case 23: +case 25: YY_RULE_SETUP -#line 120 "lexer.l" -{ - add_to_cbuf(yytext); - } +#line 135 "lexer.l" +{ add_to_cbuf(yytext); } YY_BREAK -case 24: +case 26: YY_RULE_SETUP -#line 123 "lexer.l" +#line 136 "lexer.l" { BEGIN(C_CODE); add_to_cbuf(yytext); } YY_BREAK -case 25: +case 27: YY_RULE_SETUP -#line 127 "lexer.l" -{ - add_to_cbuf(yytext); - } +#line 140 "lexer.l" +{ add_to_cbuf(yytext); } YY_BREAK -case 26: +case 28: YY_RULE_SETUP -#line 131 "lexer.l" +#line 141 "lexer.l" +{ add_to_cbuf(yytext); } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 143 "lexer.l" { parenth_depth++; add_to_cbuf(yytext); } YY_BREAK -case 27: +case 30: YY_RULE_SETUP -#line 135 "lexer.l" +#line 147 "lexer.l" { parenth_depth--; if(parenth_depth<0) { @@ -1103,169 +1133,169 @@ YY_RULE_SETUP add_to_cbuf(yytext); } YY_BREAK -case 28: +case 31: YY_RULE_SETUP -#line 148 "lexer.l" +#line 160 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 29: +case 32: YY_RULE_SETUP -#line 149 "lexer.l" +#line 161 "lexer.l" { add_to_cbuf(yytext); } YY_BREAK -case 30: +case 33: YY_RULE_SETUP -#line 151 "lexer.l" +#line 163 "lexer.l" { BEGIN(CLASS_CODE); return CLASS; } YY_BREAK -case 31: +case 34: YY_RULE_SETUP -#line 156 "lexer.l" +#line 168 "lexer.l" {return FROM;} YY_BREAK -case 32: +case 35: YY_RULE_SETUP -#line 158 "lexer.l" +#line 170 "lexer.l" {return VOID;} YY_BREAK -case 33: +case 36: YY_RULE_SETUP -#line 159 "lexer.l" +#line 171 "lexer.l" {return STRUCT;} YY_BREAK -case 34: +case 37: YY_RULE_SETUP -#line 160 "lexer.l" +#line 172 "lexer.l" {return UNION;} YY_BREAK -case 35: +case 38: YY_RULE_SETUP -#line 161 "lexer.l" +#line 173 "lexer.l" {return ENUM;} YY_BREAK -case 36: +case 39: YY_RULE_SETUP -#line 162 "lexer.l" +#line 174 "lexer.l" {return SIGNED;} YY_BREAK -case 37: +case 40: YY_RULE_SETUP -#line 163 "lexer.l" +#line 175 "lexer.l" {return UNSIGNED;} YY_BREAK -case 38: +case 41: YY_RULE_SETUP -#line 164 "lexer.l" +#line 176 "lexer.l" {return LONG;} YY_BREAK -case 39: +case 42: YY_RULE_SETUP -#line 165 "lexer.l" +#line 177 "lexer.l" {return SHORT;} YY_BREAK -case 40: +case 43: YY_RULE_SETUP -#line 166 "lexer.l" +#line 178 "lexer.l" {return INT;} YY_BREAK -case 41: +case 44: YY_RULE_SETUP -#line 167 "lexer.l" +#line 179 "lexer.l" {return FLOAT;} YY_BREAK -case 42: +case 45: YY_RULE_SETUP -#line 168 "lexer.l" +#line 180 "lexer.l" {return DOUBLE;} YY_BREAK -case 43: +case 46: YY_RULE_SETUP -#line 169 "lexer.l" +#line 181 "lexer.l" {return CHAR;} YY_BREAK -case 44: +case 47: YY_RULE_SETUP -#line 170 "lexer.l" +#line 182 "lexer.l" {return CONST;} YY_BREAK -case 45: +case 48: YY_RULE_SETUP -#line 172 "lexer.l" +#line 184 "lexer.l" {return THREEDOTS;} YY_BREAK -case 46: +case 49: YY_RULE_SETUP -#line 174 "lexer.l" +#line 186 "lexer.l" {yylval.line = line_no; return PUBLIC;} YY_BREAK -case 47: +case 50: YY_RULE_SETUP -#line 175 "lexer.l" +#line 187 "lexer.l" {yylval.line = line_no; return PRIVATE;} YY_BREAK -case 48: +case 51: YY_RULE_SETUP -#line 176 "lexer.l" +#line 188 "lexer.l" {yylval.line = line_no; return ARGUMENT;} YY_BREAK -case 49: +case 52: YY_RULE_SETUP -#line 177 "lexer.l" +#line 189 "lexer.l" {yylval.line = line_no; return VIRTUAL;} YY_BREAK -case 50: +case 53: YY_RULE_SETUP -#line 178 "lexer.l" +#line 190 "lexer.l" {yylval.line = line_no; return SIGNAL;} YY_BREAK -case 51: +case 54: YY_RULE_SETUP -#line 179 "lexer.l" +#line 191 "lexer.l" {yylval.line = line_no; return OVERRIDE;} YY_BREAK -case 52: +case 55: YY_RULE_SETUP -#line 180 "lexer.l" +#line 192 "lexer.l" {return ONERROR;} YY_BREAK -case 53: +case 56: YY_RULE_SETUP -#line 181 "lexer.l" +#line 193 "lexer.l" { yylval.id = g_strdup(yytext); return NUMBER; } YY_BREAK -case 54: +case 57: YY_RULE_SETUP -#line 185 "lexer.l" +#line 197 "lexer.l" { yylval.id = g_strdup(yytext); return TYPETOKEN; } YY_BREAK -case 55: +case 58: YY_RULE_SETUP -#line 189 "lexer.l" +#line 201 "lexer.l" { yylval.id = g_strdup(yytext); return TOKEN; } YY_BREAK -case 56: +case 59: YY_RULE_SETUP -#line 194 "lexer.l" +#line 206 "lexer.l" { BEGIN(CLASS_CODE_I); return '{'; } YY_BREAK -case 57: +case 60: YY_RULE_SETUP -#line 198 "lexer.l" +#line 210 "lexer.l" { BEGIN(C_CODE); parenth_depth=1; @@ -1275,33 +1305,38 @@ YY_RULE_SETUP return '{'; } YY_BREAK -case 58: +case 61: YY_RULE_SETUP -#line 206 "lexer.l" +#line 218 "lexer.l" { BEGIN(INITIAL); return '}'; } YY_BREAK -case 59: +case 62: YY_RULE_SETUP -#line 211 "lexer.l" +#line 223 "lexer.l" ; /*ignore*/ YY_BREAK -case 60: +case 63: YY_RULE_SETUP -#line 213 "lexer.l" +#line 225 "lexer.l" { yylval.line = line_no; return yytext[0]; } YY_BREAK -case 61: +case 64: +YY_RULE_SETUP +#line 230 "lexer.l" +; /*ignore*/ + YY_BREAK +case 65: YY_RULE_SETUP -#line 217 "lexer.l" +#line 231 "lexer.l" ECHO; YY_BREAK -#line 1305 "lex.yy.c" +#line 1340 "lex.yy.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(COMMENT): case YY_STATE_EOF(C_CODE): @@ -1596,7 +1631,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 232 ) + if ( yy_current_state >= 240 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1626,11 +1661,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 232 ) + if ( yy_current_state >= 240 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 231); + yy_is_jam = (yy_current_state == 239); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -2188,4 +2223,4 @@ int main() return 0; } #endif -#line 217 "lexer.l" +#line 231 "lexer.l" diff --git a/src/lexer.l b/src/lexer.l index cabafca..0037b85 100644 --- a/src/lexer.l +++ b/src/lexer.l @@ -70,16 +70,29 @@ add_to_cbuf(char *s) <*>MOTHERFUCKER { fprintf(stderr,"You are a bad bad person!\n"); REJECT; } \/\/.*$ { ; /*comment, ignore*/ } -\/\/.*$ { ; /*comment, ignore*/ } +\/\/.*$ { add_to_cbuf(yytext); /*comment, ignore*/ } \/\/.*$ { ; /*comment, ignore*/ } \/\/.*$ { ; /*comment, ignore*/ } \/\* {BEGIN(COMMENT); before_comment = INITIAL; } -\/\* {BEGIN(COMMENT); before_comment = C_CODE; } +\/\* { + add_to_cbuf(yytext); + BEGIN(COMMENT); + before_comment = C_CODE; +} \/\* {BEGIN(COMMENT); before_comment = CLASS_CODE; } \/\* {BEGIN(COMMENT); before_comment = CLASS_CODE_I; } -\*\/ {BEGIN(before_comment);} -. { ; /* comment, ignore */ } -\n { ; /* comment, ignore */ } +\*\/ { + if(before_comment == C_CODE) add_to_cbuf(yytext); + BEGIN(before_comment); + } +. { + /* comment, ignore */ + if(before_comment == C_CODE) add_to_cbuf(yytext); + } +\n { + /* comment, ignore */ + if(before_comment == C_CODE) add_to_cbuf(yytext); + } ^\%h\{ { BEGIN(C_CODE); @@ -111,22 +124,21 @@ add_to_cbuf(char *s) \'\\\{\' { add_to_cbuf(yytext); } \'\}\' { add_to_cbuf(yytext); } \'\\\}\' { add_to_cbuf(yytext); } +\'\"\' { add_to_cbuf(yytext); } +\'\\\"\' { add_to_cbuf(yytext); } \\. { add_to_cbuf(yytext); } \" { BEGIN(C_CODE_STRING); add_to_cbuf(yytext); } -\\. { - add_to_cbuf(yytext); - } +\\. { add_to_cbuf(yytext); } \" { BEGIN(C_CODE); add_to_cbuf(yytext); } -. { - add_to_cbuf(yytext); - } +. { add_to_cbuf(yytext); } +\n { add_to_cbuf(yytext); } \{ { parenth_depth++; @@ -208,9 +220,11 @@ class { return '}'; } -[\n\t ] ; /*ignore*/ +[\t ] ; /*ignore*/ <*>. { yylval.line = line_no; return yytext[0]; } + +<*>[\n\r] ; /*ignore*/ diff --git a/src/main.c b/src/main.c index 1b2b19c..d706cef 100644 --- a/src/main.c +++ b/src/main.c @@ -21,7 +21,9 @@ #include "config.h" #include +#if 0 #include +#endif #include #include #include @@ -31,7 +33,7 @@ #include "out.h" #include "main.h" -char *filename = "stdin"; +char *filename = NULL; int yyparse(void); @@ -527,15 +529,17 @@ add_get_type(void) } static void -add_overrides(Class *c, char *oname) +add_overrides(Class *c, char *oname, gboolean did_gtk_obj) { GList *li; GHashTable *done; char *s; done = g_hash_table_new(g_str_hash,g_str_equal); - s = g_strdup("GtkObject"); /* This was already done */ - g_hash_table_insert(done,s,s); + if(did_gtk_obj) { + s = g_strdup("GtkObject"); /* This was already done */ + g_hash_table_insert(done,s,s); + } for(li=c->nodes;li;li=g_list_next(li)) { Node *n = li->data; char *f; @@ -737,8 +741,7 @@ add_inits(Class *c) out_addline_outfile(out); out_printf(out,"{\n"); if(signals>0 || - arguments>0 || - overrides>0) + arguments>0) out_printf(out, "\tGtkObjectClass *" "gtk_object_class = " @@ -747,7 +750,8 @@ add_inits(Class *c) if(overrides>0) add_overrides(c, - ((FuncArg *)m->args->data)->name); + ((FuncArg *)m->args->data)->name, + (signals>0 || arguments>0)); out_printf(out,"\n\tparent_class = " "gtk_type_class (%s_get_type ());\n", @@ -1270,13 +1274,15 @@ generate_outfiles(void) if(node->type == CCODE_NODE) { CCode *cc = (CCode *)node; FILE *fp; - if(cc->header) + if(cc->header) { fp = outh; - else { + out_printf(fp,"\n"); + } else { fp = out; + out_printf(fp,"\n"); out_addline_infile(fp,cc->line_no); } - out_printf(fp,"\n%s\n",cc->cbuf->str); + out_printf(fp,"%s\n",cc->cbuf->str); if(!cc->header) out_addline_outfile(fp); } else if(node->type == CLASS_NODE) { @@ -1389,6 +1395,7 @@ generate_outfiles(void) "#endif"); } +#if 0 static void usage(poptContext optCon, int exitcode, char *error, char *addl) { @@ -1396,11 +1403,80 @@ usage(poptContext optCon, int exitcode, char *error, char *addl) if (error) fprintf(stderr, "%s: %s", error, addl); exit(exitcode); } +#endif +static void +print_help(void) +{ + fprintf(stderr,"Gob version %s\n\n",VERSION); + fprintf(stderr,"Options:\n" + "\t--help,-h,-? Display this help\n" + "\t--exit-on-warn,-w Exit with an error on warnings\n" + "\t--no-exit-on-warn Don't exit on warnings [default]\n"); +} + +static void +parse_options(int argc, char *argv[]) +{ + int i; + int got_file = FALSE; + int no_opts = FALSE; + + filename = NULL; + + for(i=1;i #else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ #include +#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -#include +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include */ #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca #endif /* __hpux */ +#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action @@ -529,8 +549,8 @@ void *alloca (); #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the @@ -611,12 +631,12 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -int yyparse (void); -#endif +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -628,7 +648,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - int count; + unsigned int count; { register char *f = from; register char *t = to; @@ -643,10 +663,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, int count) +__yy_memcpy (char *to, char *from, unsigned int count) { - register char *f = from; register char *t = to; + register char *f = from; register int i = count; while (i-- > 0) @@ -656,7 +676,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/lib/bison.simple" +#line 217 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -677,6 +697,15 @@ __yy_memcpy (char *to, char *from, int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL @@ -705,6 +734,7 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -789,18 +819,32 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -1639,7 +1683,7 @@ case 93: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/lib/bison.simple" +#line 543 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -1834,6 +1878,30 @@ yyerrhandle: yystate = yyn; goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; } #line 634 "parse.y" -- 2.43.0