diff --git a/qse/configure b/qse/configure index 5f3e2781..84804385 100755 --- a/qse/configure +++ b/qse/configure @@ -20080,6 +20080,40 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi +if test ${ac_cv_sizeof___float128} -gt 0 +then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking __float128 with linking" >&5 +$as_echo_n "checking __float128 with linking... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + + __float128 x, y, z; + z = x * y + x; + printf ("%p", (char*)(int)z); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ac_cv_sizeof___float128=0 + + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi + cat >>confdefs.h <<_ACEOF #define QSE_SIZEOF_CHAR ${ac_cv_sizeof_char} diff --git a/qse/configure.ac b/qse/configure.ac index 367389d1..ba160443 100644 --- a/qse/configure.ac +++ b/qse/configure.ac @@ -442,6 +442,26 @@ then ) fi +dnl Some compilers doesn't seem to have full support for __float128 +dnl even if the type is available. +if test ${ac_cv_sizeof___float128} -gt 0 +then + AC_MSG_CHECKING([__float128 with linking]) + AC_TRY_LINK( + [#include ], + [ + __float128 x, y, z; + z = x * y + x; + printf ("%p", (char*)(int)z); + ], + [AC_MSG_RESULT(yes)], + [ + AC_MSG_RESULT(no) + ac_cv_sizeof___float128=0 + ] + ) +fi + AC_DEFINE_UNQUOTED(QSE_SIZEOF_CHAR, ${ac_cv_sizeof_char}, [sizeof(char)]) AC_DEFINE_UNQUOTED(QSE_SIZEOF_SHORT, ${ac_cv_sizeof_short}, [sizeof(short)]) AC_DEFINE_UNQUOTED(QSE_SIZEOF_INT, ${ac_cv_sizeof_int}, [sizeof(int)]) diff --git a/qse/lib/xli/read.c b/qse/lib/xli/read.c index 3a54134c..24a7d0d0 100644 --- a/qse/lib/xli/read.c +++ b/qse/lib/xli/read.c @@ -462,8 +462,8 @@ retry: int lead_digit = QSE_ISDIGIT(c); int all_digits = 1; - /* a normal identifier can be composed of wider varieties of characters - * than a keyword/directive */ + /* a normal identifier can be composed of wider varieties of + * characters than a keyword/directive */ while (1) { ADD_TOKEN_CHAR (xli, tok, c); @@ -596,7 +596,9 @@ retry: break; } - if (!QSE_ISALNUM(c) && c != QSE_T('-') && c != QSE_T('_')) + if (!QSE_ISALNUM(c) && c != QSE_T('-') && c != QSE_T('_') && + c != QSE_T(':') && c != QSE_T('*') && c != QSE_T('/') && + c != QSE_T(',') && c != QSE_T('.') && c != QSE_T('|')) { qse_char_t cc = (qse_char_t)c; qse_cstr_t ea;