enhanced regular expression handler

This commit is contained in:
hyung-hwan 2010-05-10 07:44:39 +00:00
parent b2e41d43f2
commit b0a03e0b4d
37 changed files with 495 additions and 423 deletions

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -304,7 +304,7 @@ distclean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -329,7 +329,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -493,7 +493,8 @@ distdir: $(DISTFILES)
fi; \
done
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
@ -537,17 +538,17 @@ dist dist-all: distdir
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac

10
qse/aclocal.m4 vendored
View File

@ -1,4 +1,4 @@
# generated automatically by aclocal 1.11 -*- Autoconf -*-
# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
@ -13,8 +13,8 @@
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],,
[m4_warning([this file was generated for autoconf 2.64.
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
[m4_warning([this file was generated for autoconf 2.65.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])])
@ -34,7 +34,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.11'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.11], [],
m4_if([$1], [1.11.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@ -50,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.11])dnl
[AM_AUTOMAKE_VERSION([1.11.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -277,7 +277,7 @@ clean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -302,7 +302,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

233
qse/configure vendored
View File

@ -1,12 +1,14 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.64 for qse 0.5.4.
# Generated by GNU Autoconf 2.65 for qse 0.5.4.
#
# Report bugs to <Chung, Hyung-Hwan (hyunghwan.chung@gmail.com)>.
#
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
# Foundation, Inc.
# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
#
#
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
@ -676,7 +678,8 @@ fi
exec 7<&0 </dev/null 6>&1
test -n "$DJDIR" || exec 7<&0 </dev/null
exec 6>&1
# Name of the host.
# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
@ -1568,7 +1571,7 @@ Some influential environment variables:
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
@ -1645,7 +1648,7 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
qse configure 0.5.4
generated by GNU Autoconf 2.64
generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
@ -1692,7 +1695,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
@ -1730,7 +1733,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_compile
@ -1768,7 +1771,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_objc_try_compile
@ -1814,7 +1817,7 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
@ -1882,7 +1885,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
@ -1924,7 +1927,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
@ -2028,7 +2031,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_cpp
@ -2074,7 +2077,7 @@ fi
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_link
@ -2399,7 +2402,7 @@ rm -f conftest.val
fi
eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
return $ac_retval
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
cat >config.log <<_ACEOF
@ -2407,7 +2410,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by qse $as_me 0.5.4, which was
generated by GNU Autoconf 2.64. Invocation command line was
generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@
@ -2660,7 +2663,7 @@ fi
for ac_site_file in "$ac_site_file1" "$ac_site_file2"
do
test "x$ac_site_file" = xNONE && continue
if test -r "$ac_site_file"; then
if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
$as_echo "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
@ -2669,9 +2672,9 @@ $as_echo "$as_me: loading site script $ac_site_file" >&6;}
done
if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
$as_echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
@ -3101,6 +3104,7 @@ IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
@ -3108,7 +3112,6 @@ fi
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
test -d ./--version && rmdir ./--version
MKDIR_P="$ac_install_sh -d"
fi
fi
@ -3588,32 +3591,30 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
rm -f conftest.er1 conftest.err
fi
rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
main ()
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
;
return 0;
}
_ACEOF
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
$as_echo_n "checking for C compiler default output file name... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
$as_echo_n "checking whether the C compiler works... " >&6; }
ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
@ -3675,10 +3676,10 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
else
ac_file=''
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
$as_echo "$ac_file" >&6; }
if test -z "$ac_file"; then :
$as_echo "$as_me: failed program was:" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
@ -3686,51 +3687,18 @@ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
{ as_fn_set_status 77
as_fn_error "C compiler cannot create executables
See \`config.log' for more details." "$LINENO" 5; }; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
$as_echo_n "checking for C compiler default output file name... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
$as_echo "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
$as_echo_n "checking whether the C compiler works... " >&6; }
# If not cross compiling, check that we can run a simple program.
if test "$cross_compiling" != yes; then
if { ac_try='./$ac_file'
{ { case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details." "$LINENO" 5; }
fi
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
$as_echo_n "checking whether we are cross compiling... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
$as_echo "$cross_compiling" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
$as_echo_n "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
@ -3763,13 +3731,72 @@ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details." "$LINENO" 5; }
fi
rm -f conftest$ac_cv_exeext
rm -f conftest conftest$ac_cv_exeext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
$as_echo "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
ac_exeext=$EXEEXT
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
main ()
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
;
return 0;
}
_ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
$as_echo_n "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details." "$LINENO" 5; }
fi
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
$as_echo "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
if test "${ac_cv_objext+set}" = set; then :
@ -4353,8 +4380,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
rm -f conftest.er1 conftest.err
fi
rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@ -4732,8 +4759,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
rm -f conftest.er1 conftest.err
fi
rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@ -6574,13 +6601,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
(eval echo "\"\$as_me:6577: $ac_compile\"" >&5)
(eval echo "\"\$as_me:6604: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
(eval echo "\"\$as_me:6580: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval echo "\"\$as_me:6607: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
(eval echo "\"\$as_me:6583: output\"" >&5)
(eval echo "\"\$as_me:6610: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@ -7786,7 +7813,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 7789 "configure"' > conftest.$ac_ext
echo '#line 7816 "configure"' > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -8946,8 +8973,8 @@ $as_echo "$ac_try_echo"; } >&5
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
rm -f conftest.er1 conftest.err
fi
rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@ -9843,11 +9870,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:9846: $lt_compile\"" >&5)
(eval echo "\"\$as_me:9873: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:9850: \$? = $ac_status" >&5
echo "$as_me:9877: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -10182,11 +10209,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:10185: $lt_compile\"" >&5)
(eval echo "\"\$as_me:10212: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:10189: \$? = $ac_status" >&5
echo "$as_me:10216: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -10287,11 +10314,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:10290: $lt_compile\"" >&5)
(eval echo "\"\$as_me:10317: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:10294: \$? = $ac_status" >&5
echo "$as_me:10321: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -10342,11 +10369,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:10345: $lt_compile\"" >&5)
(eval echo "\"\$as_me:10372: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:10349: \$? = $ac_status" >&5
echo "$as_me:10376: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -12725,7 +12752,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 12728 "configure"
#line 12755 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -12821,7 +12848,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 12824 "configure"
#line 12851 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -14777,11 +14804,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:14780: $lt_compile\"" >&5)
(eval echo "\"\$as_me:14807: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:14784: \$? = $ac_status" >&5
echo "$as_me:14811: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -14876,11 +14903,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:14879: $lt_compile\"" >&5)
(eval echo "\"\$as_me:14906: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:14883: \$? = $ac_status" >&5
echo "$as_me:14910: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -14928,11 +14955,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:14931: $lt_compile\"" >&5)
(eval echo "\"\$as_me:14958: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:14935: \$? = $ac_status" >&5
echo "$as_me:14962: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -18007,7 +18034,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by qse $as_me 0.5.4, which was
generated by GNU Autoconf 2.64. Invocation command line was
generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@ -18047,6 +18074,7 @@ Usage: $0 [OPTION]... [TAG]...
-h, --help print this help, then exit
-V, --version print version number and configuration settings, then exit
--config print configuration, then exit
-q, --quiet, --silent
do not print progress messages
-d, --debug don't remove temporary files
@ -18070,10 +18098,11 @@ qse home page: <http://qse.googlecode.com>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
qse config.status 0.5.4
configured by $0, generated by GNU Autoconf 2.64,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\"
Copyright (C) 2009 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
@ -18111,6 +18140,8 @@ do
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
$as_echo "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
$as_echo "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
@ -18682,7 +18713,7 @@ s/'"$ac_delim"'$//
t delim
:nl
h
s/\(.\{148\}\).*/\1/
s/\(.\{148\}\)..*/\1/
t more1
s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
p
@ -18696,7 +18727,7 @@ s/.\{148\}//
t nl
:delim
h
s/\(.\{148\}\).*/\1/
s/\(.\{148\}\)..*/\1/
t more2
s/["\\]/\\&/g; s/^/"/; s/$/"/
p

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -284,7 +284,7 @@ clean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -309,7 +309,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -279,7 +279,7 @@ clean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -304,7 +304,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -347,7 +347,7 @@ uninstall-pkgincludeHEADERS:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -372,7 +372,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,5 +1,5 @@
/*
* $Id: rex.h 312 2009-12-10 13:03:54Z hyunghwan.chung $
* $Id: rex.h 326 2010-05-09 13:44:39Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -59,10 +59,9 @@
* NOP -@ CHAR(b) -@ CHAR(c) -@ GROUPEND
*
* ab|cd
* +--@ CHAR(a) --@ CHAR(b) --+
* | <= u.b.left |
* START --@ NOP --@ BRANCH --+ +--@ END
* | <= u.b.right |
* START --@ NOP --@ BRANCH --+--@ CHAR(a) --@ CHAR(b) --+--@ END
* | |
* | <= u.b.alter |
* +--@ CHAR(c) --@ CHAR(d) --+
* @endcode
*
@ -145,19 +144,20 @@ struct qse_rex_node_t
struct
{
qse_rex_node_t* left;
qse_rex_node_t* right;
qse_rex_node_t* alter;
} b;
struct
{
qse_rex_node_t* head;
qse_rex_node_t* end;
int pseudo;
} g;
struct
{
qse_rex_node_t* group;
int pseudo;
} ge;
} u;

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -277,7 +277,7 @@ clean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -302,7 +302,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,5 +1,5 @@
/*
* $Id: rex.c 312 2009-12-10 13:03:54Z hyunghwan.chung $
* $Id: rex.c 326 2010-05-09 13:44:39Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -26,6 +26,8 @@
#define OCC_MAX QSE_TYPE_MAX(qse_size_t)
/*#define XTRA_DEBUG*/
typedef struct comp_t comp_t;
struct comp_t
{
@ -171,9 +173,8 @@ static void freeallnodes (qse_rex_node_t* start)
x = start->u.s.link;
while (x != QSE_NULL)
{
y = x->link;
freenode (x, mmgr);
x = y;
y = x; x = x->link;
freenode (y, mmgr);
}
QSE_MMGR_FREE (mmgr, start);
@ -310,13 +311,14 @@ static qse_rex_node_t* newcharnode (comp_t* c, qse_char_t ch)
}
static qse_rex_node_t* newbranchnode (
comp_t* c, qse_rex_node_t* left, qse_rex_node_t* right)
comp_t* c, qse_rex_node_t* left, qse_rex_node_t* alter)
{
qse_rex_node_t* n = newnode (c, QSE_REX_NODE_BRANCH);
if (n != QSE_NULL)
{
n->u.b.left = left;
n->u.b.right = right;
/*n->u.b.left = left; */
n->next = left;
n->u.b.alter = alter;
}
return n;
}
@ -363,7 +365,6 @@ static int getc (comp_t* com, int noesc)
if (noesc || com->c.value != QSE_T('\\')) return 0;
CHECK_END (com);
c = *com->ptr++;
@ -755,74 +756,119 @@ static int occbound (comp_t* com, qse_rex_node_t* n)
return 0;
}
static qse_rex_node_t* comp0 (comp_t* com, qse_rex_node_t* ge);
static qse_rex_node_t* comp_branches (comp_t* com, qse_rex_node_t* ge);
static qse_rex_node_t* comp2 (comp_t* com)
static qse_rex_node_t* comp_group (comp_t* com)
{
qse_rex_node_t* n;
/* enter a subgroup */
qse_rex_node_t* body, *g, * ge;
g = newgroupnode (com);
if (g == QSE_NULL) return QSE_NULL;
ge = newgroupendnode (com, g);
if (ge == QSE_NULL) return QSE_NULL;
/* skip '(' */
if (getc_esc(com) <= -1) return QSE_NULL;
com->gdepth++;
/* pass the GROUPEND node so that the
* last node in the subgroup links to
* this GROUPEND node. */
body = comp_branches (com, ge);
if (body == QSE_NULL) return QSE_NULL;
if (!IS_SPE(com,QSE_T(')')))
{
com->rex->errnum = QSE_REX_ERPAREN;
return QSE_NULL;
}
com->gdepth--;
/* skip ')' */
if (getc_esc(com) <= -1) return QSE_NULL;
g->u.g.head = body;
g->u.g.end = ge;
return g;
}
static qse_rex_node_t* comp_occ (comp_t* com, qse_rex_node_t* atom)
{
switch (com->c.value)
{
case QSE_T('?'):
atom->occ.min = 0;
atom->occ.max = 1;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('*'):
atom->occ.min = 0;
atom->occ.max = OCC_MAX;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('+'):
atom->occ.min = 1;
atom->occ.max = OCC_MAX;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('{'):
if (!(com->rex->option & QSE_REX_NOBOUND))
{
if (getc_noesc(com) <= -1)
return QSE_NULL;
if (occbound(com,atom) <= -1)
return QSE_NULL;
}
break;
}
return atom;
}
static qse_rex_node_t* comp_atom (comp_t* com)
{
qse_rex_node_t* atom;
if (!IS_ESC(com))
{
switch (com->c.value)
{
case QSE_T('('):
{
/* enter a subgroup */
qse_rex_node_t* x, * ge;
n = newgroupnode (com);
if (n == QSE_NULL) return QSE_NULL;
ge = newgroupendnode (com, n);
if (ge == QSE_NULL) return QSE_NULL;
if (getc_esc(com) <= -1) return QSE_NULL;
com->gdepth++;
/* pass the GROUPEND node so that the
* last node in the subgroup links to
* this GROUPEND node. */
x = comp0 (com, ge);
if (x == QSE_NULL) return QSE_NULL;
if (!IS_SPE(com,QSE_T(')')))
{
com->rex->errnum = QSE_REX_ERPAREN;
return QSE_NULL;
}
com->gdepth--;
if (getc_esc(com) <= -1) return QSE_NULL;
n->u.g.head = x;
n->u.g.end = ge;
atom = comp_group (com);
if (atom == QSE_NULL) return QSE_NULL;
break;
}
case QSE_T('.'):
n = newnode (com, QSE_REX_NODE_ANY);
if (n == QSE_NULL) return QSE_NULL;
atom = newnode (com, QSE_REX_NODE_ANY);
if (atom == QSE_NULL) return QSE_NULL;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('^'):
n = newnode (com, QSE_REX_NODE_BOL);
if (n == QSE_NULL) return QSE_NULL;
atom = newnode (com, QSE_REX_NODE_BOL);
if (atom == QSE_NULL) return QSE_NULL;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('$'):
n = newnode (com, QSE_REX_NODE_EOL);
if (n == QSE_NULL) return QSE_NULL;
atom = newnode (com, QSE_REX_NODE_EOL);
if (atom == QSE_NULL) return QSE_NULL;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('['):
n = newnode (com, QSE_REX_NODE_CSET);
if (n == QSE_NULL) return QSE_NULL;
atom = newnode (com, QSE_REX_NODE_CSET);
if (atom == QSE_NULL) return QSE_NULL;
if (getc_esc(com) <= -1) return QSE_NULL;
if (charset(com, n) <= -1) return QSE_NULL;
if (charset(com, atom) <= -1) return QSE_NULL;
break;
default:
@ -847,98 +893,111 @@ static qse_rex_node_t* comp2 (comp_t* com)
{
normal_char:
/* normal character */
n = newcharnode (com, com->c.value);
if (n == QSE_NULL) return QSE_NULL;
atom = newcharnode (com, com->c.value);
if (atom == QSE_NULL) return QSE_NULL;
if (getc_esc(com) <= -1) return QSE_NULL;
}
n->occ.min = 1;
n->occ.max = 1;
atom->occ.min = 1;
atom->occ.max = 1;
if (!IS_ESC(com))
{
/* handle the occurrence specifier, if any */
switch (com->c.value)
{
case QSE_T('?'):
n->occ.min = 0;
n->occ.max = 1;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('*'):
n->occ.min = 0;
n->occ.max = OCC_MAX;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('+'):
n->occ.min = 1;
n->occ.max = OCC_MAX;
if (getc_esc(com) <= -1) return QSE_NULL;
break;
case QSE_T('{'):
if (!(com->rex->option & QSE_REX_NOBOUND))
{
if (getc_noesc(com) <= -1)
return QSE_NULL;
if (occbound(com,n) <= -1)
return QSE_NULL;
}
break;
}
if (comp_occ (com, atom) == QSE_NULL) return QSE_NULL;
}
return n;
return atom;
}
static qse_rex_node_t* pseudo_group (comp_t* c, qse_rex_node_t* atom)
{
qse_rex_node_t* g, *ge, * b;
QSE_ASSERT (atom->occ.min <= 0);
g = newgroupnode (c);
if (g == QSE_NULL) return QSE_NULL;
ge = newgroupendnode (c, g);
if (ge == QSE_NULL) return QSE_NULL;
b = newbranchnode (c, atom, ge);
if (b == QSE_NULL) return QSE_NULL;
atom->occ.min = 1;
atom->next = ge;
QSE_ASSERT (atom->occ.max >= atom->occ.min);
g->occ.max = 1;
g->occ.min = 1;
g->u.g.end = ge;
g->u.g.head = b;
g->u.g.pseudo = 1;
ge->u.ge.pseudo = 1;
return g;
}
/* compile a list of atoms at the outermost level and/or
* within a subgroup */
static qse_rex_node_t* comp1 (comp_t* c, pair_t* pair)
static qse_rex_node_t* comp_branch (comp_t* c, pair_t* pair)
{
pair->head = newnopnode (c);
if (pair->head == QSE_NULL) return QSE_NULL;
#define REACHED_END(c) \
(IS_EOF(c) || IS_SPE(c,QSE_T('|')) || \
(c->gdepth > 0 && IS_SPE(c,QSE_T(')'))))
#ifdef DONOT_SKIP_NOP
pair->head->occ.min = 1;
pair->head->occ.max = 1;
#endif
pair->tail = pair->head;
while (!IS_SPE(c,QSE_T('|')) && !IS_EOF(c) &&
!(c->gdepth > 0 && IS_SPE(c,QSE_T(')'))))
if (REACHED_END(c))
{
qse_rex_node_t* tmp = comp2 (c);
if (tmp == QSE_NULL) return QSE_NULL;
qse_rex_node_t* nop = newnopnode (c);
if (nop == QSE_NULL) return QSE_NULL;
nop->occ.min = 1; nop->occ.max = 1;
pair->head = nop; pair->tail = nop;
}
else
{
pair->head = QSE_NULL; pair->tail = QSE_NULL;
if (tmp->id == QSE_REX_NODE_GROUP)
do
{
/* simple optimization to remove an empty group */
qse_rex_node_t* gg = tmp->u.g.head;
while (gg->id == QSE_REX_NODE_NOP) gg = gg->next;
if (gg->id == QSE_REX_NODE_GROUPEND)
qse_rex_node_t* atom = comp_atom (c);
if (atom == QSE_NULL) return QSE_NULL;
if (atom->occ.min <= 0)
{
/* exclude an empty subgroup */
continue;
/*
* Given an atom, this function encloses it with a pseudogroup
* head and a psuedo-group tail. the pseudogroup head is
* followed by a branch that conntects to the pseudogroup tail
* and the atom given. The atom given gets connected to the
* pseudogroup tail.
* Head -> BR -> Tail
* -> ORG(atom) -> Tail
*/
atom = pseudo_group (c, atom);
if (atom == QSE_NULL) return QSE_NULL;
}
if (pair->tail == QSE_NULL)
{
QSE_ASSERT (pair->head == QSE_NULL);
pair->head = atom;
}
else pair->tail->next = atom;
pair->tail = atom;
}
pair->tail->next = tmp;
pair->tail = tmp;
while (!REACHED_END(c));
}
return pair->head;
#undef REACHED_END
}
static qse_rex_node_t* comp0 (comp_t* c, qse_rex_node_t* ge)
static qse_rex_node_t* comp_branches (comp_t* c, qse_rex_node_t* ge)
{
qse_rex_node_t* left, * right, * tmp;
pair_t xpair;
left = comp1 (c, &xpair);
left = comp_branch (c, &xpair);
if (left == QSE_NULL) return QSE_NULL;
xpair.tail->next = ge;
@ -946,7 +1005,7 @@ static qse_rex_node_t* comp0 (comp_t* c, qse_rex_node_t* ge)
{
if (getc_esc(c) <= -1) return QSE_NULL;
right = comp1 (c, &xpair);
right = comp_branch (c, &xpair);
if (right == QSE_NULL) return QSE_NULL;
xpair.tail->next = ge;
@ -991,7 +1050,7 @@ qse_rex_node_t* qse_rex_comp (
return QSE_NULL;
}
body = comp0 (&c, end);
body = comp_branches (&c, end);
if (body == QSE_NULL)
{
freeallnodes (c.start);
@ -1025,7 +1084,6 @@ static void freegroupstack (group_t* gs, qse_mmgr_t* mmgr)
freegroupstackmembers (gs, mmgr);
}
static void refupgroupstack (group_t* gs)
{
if (gs != QSE_NULL)
@ -1243,12 +1301,6 @@ static int addsimplecand (
cand.group = group;
cand.mptr = mptr;
/*if (node->id == QSE_REX_NODE_CHAR)
qse_printf (QSE_T("adding %d %c\n"), node->id, node->u.c);
else
qse_printf (QSE_T("adding %d NA\n"), node->id);
*/
if (qse_lda_search (
&e->cand.set[e->cand.pending],
0, &cand, 1) != QSE_LDA_NIL)
@ -1315,44 +1367,59 @@ warpback:
group_t* gx = group;
int n;
QSE_ASSERTX (candnode->next == QSE_NULL,
"The current implementation does not link "
"nodes to a branch node via the next field."
"follow the left and the right field instead");
if (group != QSE_NULL)
{
gx = dupgroupstack (e, group);
if (gx == QSE_NULL) return -1;
}
#if 0
refupgroupstack (group);
refupgroupstack (gx);
n = addcands (e, group,
prevnode, candnode->u.b.left, mptr);
prevnode, candnode->next, mptr);
if (n >= 0)
{
n = addcands (e, gx,
prevnode, candnode->u.b.right, mptr);
prevnode, candnode->u.b.alter, mptr);
}
refdowngroupstack (gx, e->rex->mmgr);
refdowngroupstack (group, e->rex->mmgr);
if (n <= -1) return -1;
break;
#endif
refupgroupstack (gx);
n = addcands (e, gx,
prevnode, candnode->u.b.alter, mptr);
refdowngroupstack (gx, e->rex->mmgr);
if (n <= -1) return -1;
candnode = candnode->next;
goto warpback;
}
case QSE_REX_NODE_GROUP:
{
int n;
qse_rex_node_t* front;
group_t* gx;
/*qse_printf (QSE_T("GROUP %p PREV %p\n"), candnode, prevnode);*/
#ifdef XTRA_DEBUG
qse_printf (QSE_T("DEBUG: GROUP %p(pseudo=%d) PREV %p\n"),
candnode, candnode->u.g.pseudo, prevnode);
#endif
if (candnode->u.g.pseudo)
{
candnode = candnode->u.g.head;
goto warpback;
}
/* skip all NOP nodes */
front = candnode->u.g.head;
while (front->id == QSE_REX_NODE_NOP)
front = front->next;
if (front->id == QSE_REX_NODE_GROUPEND)
@ -1366,51 +1433,17 @@ warpback:
goto warpback;
}
if (candnode->occ.max > 0)
{
/* add the first node in a subgroup
* as a candidate */
gx = groupstackpush (e, group, candnode);
if (gx == QSE_NULL) return -1;
group_t* gx;
/* add the first node in the group to
* the candidate array */
refupgroupstack (gx);
n = addcands (e, gx, prevnode, front, mptr);
refdowngroupstack (gx, e->rex->mmgr);
/* push the current group node (candnode) to
* the group stack. if candnode->next is
* added to the candidate array, which means
* the group stack has already been used to
* a different path, the group stack is
* duplicated for this path. */
gx = (candnode->occ.min <= 0)?
dupgroupstackpush (e, group, candnode):
groupstackpush (e, group, candnode);
if (gx == QSE_NULL) return -1;
/* add the first node in the group to
* the candidate array */
refupgroupstack (gx);
n = addcands (e, gx, prevnode, front, mptr);
refdowngroupstack (gx, e->rex->mmgr);
if (n <= -1) return -1;
}
if (n <= -1) return -1;
if (candnode->occ.min <= 0)
{
/* if the group node is optional,
* add the next node to the candidate array. */
/* BEGIN avoid recursion */
#if 0
refupgroupstack (group);
n = addcands (e, group, prevnode, candnode->next, mptr);
refdowngroupstack (group, e->rex->mmgr);
if (n <= -1) return -1;
#endif
candnode = candnode->next;
goto warpback;
/* END avoid recursion */
}
break;
}
@ -1421,7 +1454,17 @@ warpback:
qse_rex_node_t* node;
qse_size_t occ;
/*qse_printf (QSE_T("GROUPEND %p PREV %p\n"), candnode, prevnode);*/
#ifdef XTRA_DEBUG
qse_printf (QSE_T("DEBUG: GROUPEND %p(pseudo=%d) PREV %p\n"),
candnode, candnode->u.ge.pseudo, prevnode);
#endif
if (candnode->u.ge.pseudo)
{
candnode = candnode->u.ge.group->next;
goto warpback;
}
QSE_ASSERTX (
group != QSE_NULL && group->next != QSE_NULL,
"GROUPEND must be paired up with GROUP");
@ -1491,15 +1534,13 @@ warpback:
}
refupgroupstack (gx);
if (prevnode != QSE_NULL &&
prevnode->id == QSE_REX_NODE_GROUPEND)
{
n = addcands (e, gx, prevnode, node->next, mptr);
}
else
{
n = addcands (e, gx, candnode, node->next, mptr);
}
refdowngroupstack (gx, e->rex->mmgr);
if (n <= -1) return -1;
}
@ -1507,7 +1548,6 @@ warpback:
if (occ < node->occ.max)
{
/* repeat itself. */
/* BEGIN avoid recursion */
#if 0
refupgroupstack (group);
@ -1529,49 +1569,11 @@ warpback:
{
int n;
if (candnode->occ.max > 0)
{
group_t* gx;
/* if the upper bound is greater than 0,
* this node is added to the candidate array */
if (group != QSE_NULL && candnode->occ.min <= 0)
{
/* if a group stack exists(group != QSE_NULL)
* for this path and it has been
* used for a different path above,
* duplicate the group stack */
gx = dupgroupstack (e, group);
if (gx == QSE_NULL) return -1;
}
else gx = group;
refupgroupstack (gx);
n = addsimplecand (e, gx, candnode, 1, mptr);
refdowngroupstack (gx, e->rex->mmgr);
if (n <= -1) return -1;
}
if (candnode->occ.min <= 0)
{
/* if the node is optional,
* add the next node to the candidate array */
/* BEGIN avoid recursion */
#if 0
refupgroupstack (group);
n = addcands (e, group, prevnode, candnode->next, mptr);
refdowngroupstack (group, e->rex->mmgr);
if (n <= -1) return -1;
#endif
candnode = candnode->next;
goto warpback;
/* END avoid recursion */
}
if (group) refupgroupstack (group);
n = addsimplecand (e, group, candnode, 1, mptr);
if (group) refdowngroupstack (group, e->rex->mmgr);
if (n <= -1) return -1;
break;
}
}
@ -1689,6 +1691,9 @@ static int match (exec_t* e)
* the same as ^ matches a position,
* not a character. */
nmptr = cand->mptr;
#ifdef XTRA_DEBUG
qse_printf (QSE_T("DEBUG: matched <^>\n"));
#endif
}
break;
@ -1699,6 +1704,9 @@ static int match (exec_t* e)
* the same as $ matches a position,
* not a character. */
nmptr = cand->mptr;
#ifdef XTRA_DEBUG
qse_printf (QSE_T("DEBUG: matched <$>\n"));
#endif
}
break;
@ -1708,6 +1716,9 @@ static int match (exec_t* e)
/* advance the match pointer to the
* next chracter.*/
nmptr = cand->mptr + 1;
#ifdef XTRA_DEBUG
qse_printf (QSE_T("DEBUG: matched <.>\n"));
#endif
}
break;
@ -1728,7 +1739,9 @@ static int match (exec_t* e)
* next chracter.*/
nmptr = cand->mptr + 1;
}
/*qse_printf (QSE_T("matched %c\n"), node->u.c);*/
#ifdef XTRA_DEBUG
qse_printf (QSE_T("DEBUG: matched %c\n"), node->u.c);
#endif
}
break;
}
@ -1846,41 +1859,40 @@ static int exec (exec_t* e)
/* clear the pending set */
qse_lda_clear (&e->cand.set[e->cand.pending]);
#if 0
{
int i;
qse_printf (QSE_T("SET="));
for (i = 0; i < QSE_LDA_SIZE(&e->cand.set[e->cand.active]); i++)
{
cand_t* cand = QSE_LDA_DPTR(&e->cand.set[e->cand.active],i);
qse_rex_node_t* node = cand->node;
#ifdef XTRA_DEBUG
{
int i;
qse_printf (QSE_T("SET="));
for (i = 0; i < QSE_LDA_SIZE(&e->cand.set[e->cand.active]); i++)
{
cand_t* cand = QSE_LDA_DPTR(&e->cand.set[e->cand.active],i);
qse_rex_node_t* node = cand->node;
if (node->id == QSE_REX_NODE_CHAR)
qse_printf (QSE_T("%c "), node->u.c);
else if (node->id == QSE_REX_NODE_ANY)
qse_printf (QSE_T(". "), node->u.c);
else if (node->id == QSE_REX_NODE_BOL)
qse_printf (QSE_T("^ "));
else if (node->id == QSE_REX_NODE_EOL)
qse_printf (QSE_T("$ "));
}
qse_printf (QSE_T("\n"));
}
if (node->id == QSE_REX_NODE_CHAR)
qse_printf (QSE_T("%c "), node->u.c);
else if (node->id == QSE_REX_NODE_ANY)
qse_printf (QSE_T(". "), node->u.c);
else if (node->id == QSE_REX_NODE_BOL)
qse_printf (QSE_T("^ "));
else if (node->id == QSE_REX_NODE_EOL)
qse_printf (QSE_T("$ "));
}
qse_printf (QSE_T("\n"));
}
#endif
if (match (e) <= -1) return -1;
}
while (1);
#if 0
if (e->nmatches > 0)
{
qse_printf (QSE_T("MATCH: %d [%.*s]\n"),
(int)(e->matchend - e->sub.ptr),
(int)(e->matchend - e->sub.ptr), e->sub.ptr);
}
qse_printf (QSE_T("TOTAL MATCHES FOUND... %d\n"), e->nmatches);
#ifdef XTRA_DEBUG
if (e->nmatches > 0)
{
qse_printf (QSE_T("MATCH: %d [%.*s]\n"),
(int)(e->matchend - e->sub.ptr),
(int)(e->matchend - e->sub.ptr), e->sub.ptr);
}
qse_printf (QSE_T("TOTAL MATCHES FOUND... %d\n"), e->nmatches);
#endif
return (e->nmatches > 0)? 1: 0;

View File

@ -1,5 +1,5 @@
/*
* $Id: str_bas.c 324 2010-04-29 13:14:13Z hyunghwan.chung $
* $Id: str_bas.c 326 2010-05-09 13:44:39Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -208,7 +208,14 @@ qse_size_t qse_strfncpy (
while (*f != QSE_T('\0'))
{
if (*f == QSE_T('$'))
if (*f == QSE_T('\\'))
{
// get the escaped character and treat it normally.
// if the escaper is the last character, treat it
// normally also.
if (f[1] != QSE_T('\0')) f++;
}
else if (*f == QSE_T('$'))
{
if (f[1] == QSE_T('{') &&
(f[2] >= QSE_T('0') && f[2] <= QSE_T('9')))
@ -259,7 +266,14 @@ qse_size_t qse_strxfcpy (
while (*f != QSE_T('\0'))
{
if (*f == QSE_T('$'))
if (*f == QSE_T('\\'))
{
// get the escaped character and treat it normally.
// if the escaper is the last character, treat it
// normally also.
if (f[1] != QSE_T('\0')) f++;
}
else if (*f == QSE_T('$'))
{
if (f[1] == QSE_T('{') &&
(f[2] >= QSE_T('0') && f[2] <= QSE_T('9')))
@ -314,7 +328,14 @@ qse_size_t qse_strxfncpy (
while (*f != QSE_T('\0'))
{
if (*f == QSE_T('$'))
if (*f == QSE_T('\\'))
{
// get the escaped character and treat it normally.
// if the escaper is the last character, treat it
// normally also.
if (f[1] != QSE_T('\0')) f++;
}
else if (*f == QSE_T('$'))
{
if (f[1] == QSE_T('{') &&
(f[2] >= QSE_T('0') && f[2] <= QSE_T('9')))
@ -371,7 +392,14 @@ qse_size_t qse_strxsubst (
while (*f != QSE_T('\0'))
{
if (*f == QSE_T('$'))
if (*f == QSE_T('\\'))
{
// get the escaped character and treat it normally.
// if the escaper is the last character, treat it
// normally also.
if (f[1] != QSE_T('\0')) f++;
}
else if (*f == QSE_T('$'))
{
if (f[1] == QSE_T('{'))
{
@ -414,7 +442,6 @@ fini:
return b - buf;
}
qse_size_t qse_strxcat (qse_char_t* buf, qse_size_t bsz, const qse_char_t* str)
{
qse_char_t* p, * p2;

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -277,7 +277,7 @@ clean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -302,7 +302,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -277,7 +277,7 @@ clean-libtool:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
@ -302,7 +302,7 @@ $(RECURSIVE_TARGETS):
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -40,6 +40,7 @@ qse_rex_setoption (rex, QSE_REX_STRICT);
str.ptr = argv[2];
str.len = qse_strlen(argv[2]);
qse_printf (QSE_T("compile ok\n"));
n = qse_rex_exec (rex, &str, &str, &matstr);
if (n <= -1)
{
@ -52,7 +53,7 @@ qse_rex_setoption (rex, QSE_REX_STRICT);
{
qse_printf (QSE_T("MATCH: [%.*s] beginning from char #%d\n"),
(int)matstr.len, matstr.ptr,
(int)(matstr.ptr, matstr.ptr - str.ptr + 1));
(int)(matstr.ptr - str.ptr + 1));
}
qse_rex_close (rex);

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,

View File

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,