enahnced qse_awk_parsesimple()
This commit is contained in:
@ -1,9 +1,10 @@
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||
|
||||
bin_PROGRAMS = awk01 awk03
|
||||
bin_PROGRAMS = awk01 awk02 awk03
|
||||
|
||||
LDFLAGS = -L../../lib/cmn -L../../lib/utl -L../../lib/awk
|
||||
LDADD = -lqseawk -lqseutl -lqsecmn $(LIBM)
|
||||
|
||||
awk01_SOURCES = awk01.c
|
||||
awk02_SOURCES = awk02.c
|
||||
awk03_SOURCES = awk03.c
|
||||
|
@ -32,7 +32,7 @@ PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
bin_PROGRAMS = awk01$(EXEEXT) awk03$(EXEEXT)
|
||||
bin_PROGRAMS = awk01$(EXEEXT) awk02$(EXEEXT) awk03$(EXEEXT)
|
||||
subdir = test/awk
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
@ -50,6 +50,10 @@ awk01_OBJECTS = $(am_awk01_OBJECTS)
|
||||
awk01_LDADD = $(LDADD)
|
||||
am__DEPENDENCIES_1 =
|
||||
awk01_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am_awk02_OBJECTS = awk02.$(OBJEXT)
|
||||
awk02_OBJECTS = $(am_awk02_OBJECTS)
|
||||
awk02_LDADD = $(LDADD)
|
||||
awk02_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am_awk03_OBJECTS = awk03.$(OBJEXT)
|
||||
awk03_OBJECTS = $(am_awk03_OBJECTS)
|
||||
awk03_LDADD = $(LDADD)
|
||||
@ -66,8 +70,8 @@ CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(awk01_SOURCES) $(awk03_SOURCES)
|
||||
DIST_SOURCES = $(awk01_SOURCES) $(awk03_SOURCES)
|
||||
SOURCES = $(awk01_SOURCES) $(awk02_SOURCES) $(awk03_SOURCES)
|
||||
DIST_SOURCES = $(awk01_SOURCES) $(awk02_SOURCES) $(awk03_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
@ -195,6 +199,7 @@ top_srcdir = @top_srcdir@
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||
LDADD = -lqseawk -lqseutl -lqsecmn $(LIBM)
|
||||
awk01_SOURCES = awk01.c
|
||||
awk02_SOURCES = awk02.c
|
||||
awk03_SOURCES = awk03.c
|
||||
all: all-am
|
||||
|
||||
@ -260,6 +265,9 @@ clean-binPROGRAMS:
|
||||
awk01$(EXEEXT): $(awk01_OBJECTS) $(awk01_DEPENDENCIES)
|
||||
@rm -f awk01$(EXEEXT)
|
||||
$(LINK) $(awk01_OBJECTS) $(awk01_LDADD) $(LIBS)
|
||||
awk02$(EXEEXT): $(awk02_OBJECTS) $(awk02_DEPENDENCIES)
|
||||
@rm -f awk02$(EXEEXT)
|
||||
$(LINK) $(awk02_OBJECTS) $(awk02_LDADD) $(LIBS)
|
||||
awk03$(EXEEXT): $(awk03_OBJECTS) $(awk03_DEPENDENCIES)
|
||||
@rm -f awk03$(EXEEXT)
|
||||
$(LINK) $(awk03_OBJECTS) $(awk03_LDADD) $(LIBS)
|
||||
@ -271,6 +279,7 @@ distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk01.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk02.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk03.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
|
@ -41,7 +41,6 @@ int main ()
|
||||
qse_awk_t* awk = QSE_NULL;
|
||||
qse_awk_rtx_t* rtx = QSE_NULL;
|
||||
int ret;
|
||||
const qse_char_t* co[] = { QSE_T(""), QSE_NULL };
|
||||
|
||||
awk = qse_awk_opensimple ();
|
||||
if (awk == QSE_NULL)
|
||||
@ -52,8 +51,10 @@ int main ()
|
||||
|
||||
ret = qse_awk_parsesimple (
|
||||
awk,
|
||||
QSE_AWK_SOURCE_STRING, src, /* parse AWK source in a string */
|
||||
QSE_NULL /* no parse output */
|
||||
/* parse AWK source in a string */
|
||||
QSE_AWK_PARSESIMPLE_STR, src,
|
||||
/* no deparse output */
|
||||
QSE_AWK_PARSESIMPLE_NONE, QSE_NULL
|
||||
);
|
||||
if (ret == -1)
|
||||
{
|
||||
@ -65,7 +66,7 @@ int main ()
|
||||
rtx = qse_awk_rtx_opensimple (
|
||||
awk,
|
||||
QSE_NULL, /* no console input */
|
||||
QSE_AWK_CONSOLE_STDIO /* use standard out for console output */
|
||||
QSE_AWK_RTX_OPENSIMPLE_STDIO /* stdout for console output */
|
||||
);
|
||||
if (rtx == QSE_NULL)
|
||||
{
|
||||
|
102
qse/test/awk/awk02.c
Normal file
102
qse/test/awk/awk02.c
Normal file
@ -0,0 +1,102 @@
|
||||
/*
|
||||
* $Id: awk.c 501 2008-12-17 08:39:15Z baconevi $
|
||||
*
|
||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
/****S* AWK/Basic Loop
|
||||
* DESCRIPTION
|
||||
* This program demonstrates how to use qse_awk_rtx_loop().
|
||||
* SOURCE
|
||||
*/
|
||||
|
||||
#include <qse/awk/awk.h>
|
||||
#include <qse/cmn/mem.h>
|
||||
#include <qse/utl/stdio.h>
|
||||
|
||||
static const qse_char_t* src = QSE_T(
|
||||
"BEGIN {"
|
||||
" for (i=2;i<=9;i++)"
|
||||
" {"
|
||||
" for (j=1;j<=9;j++)"
|
||||
" print i \"*\" j \"=\" i * j;"
|
||||
" print \"---------------------\";"
|
||||
" }"
|
||||
"}"
|
||||
);
|
||||
|
||||
static qse_char_t srcout[5000];
|
||||
|
||||
int main ()
|
||||
{
|
||||
qse_awk_t* awk = QSE_NULL;
|
||||
qse_awk_rtx_t* rtx = QSE_NULL;
|
||||
int ret;
|
||||
|
||||
awk = qse_awk_opensimple ();
|
||||
if (awk == QSE_NULL)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("error: cannot open awk\n"));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
qse_memset (srcout, QSE_T(' '), QSE_COUNTOF(srcout)-1);
|
||||
srcout[QSE_COUNTOF(srcout)-1] = QSE_T('\0');
|
||||
|
||||
ret = qse_awk_parsesimple (
|
||||
awk,
|
||||
/* parse the source in src */
|
||||
QSE_AWK_PARSESIMPLE_STR, src,
|
||||
/* deparse into srcout */
|
||||
QSE_AWK_PARSESIMPLE_STR, srcout
|
||||
);
|
||||
if (ret == -1)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"),
|
||||
qse_awk_geterrmsg(awk));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
qse_printf (QSE_T("DEPARSED SOURCE:\n%s\n"), srcout);
|
||||
qse_printf (QSE_T("=================================\n"));
|
||||
qse_fflush (QSE_STDOUT);
|
||||
|
||||
rtx = qse_awk_rtx_opensimple (
|
||||
awk,
|
||||
QSE_NULL, /* no console input */
|
||||
QSE_AWK_RTX_OPENSIMPLE_STDIO /* stdout for console output */
|
||||
);
|
||||
if (rtx == QSE_NULL)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"),
|
||||
qse_awk_geterrmsg(awk));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
ret = qse_awk_rtx_loop (rtx);
|
||||
if (ret == -1)
|
||||
{
|
||||
qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"),
|
||||
qse_awk_rtx_geterrmsg(rtx));
|
||||
goto oops;
|
||||
}
|
||||
|
||||
oops:
|
||||
if (rtx != QSE_NULL) qse_awk_rtx_close (rtx);
|
||||
if (awk != QSE_NULL) qse_awk_close (awk);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/******/
|
@ -63,9 +63,9 @@ int main ()
|
||||
ret = qse_awk_parsesimple (
|
||||
awk,
|
||||
/* parse AWK source in a string */
|
||||
QSE_AWK_SOURCE_STRING, src,
|
||||
QSE_AWK_PARSESIMPLE_STR, src,
|
||||
/* no parse output */
|
||||
QSE_NULL
|
||||
QSE_AWK_PARSESIMPLE_NONE, QSE_NULL
|
||||
);
|
||||
if (ret == -1)
|
||||
{
|
||||
@ -77,8 +77,8 @@ int main ()
|
||||
/* create a runtime context */
|
||||
rtx = qse_awk_rtx_opensimple (
|
||||
awk,
|
||||
QSE_NULL, /* no console input */
|
||||
QSE_AWK_CONSOLE_STDIO /* console output */
|
||||
QSE_NULL, /* no console input */
|
||||
QSE_AWK_RTX_OPENSIMPLE_STDIO /* stdout for console output */
|
||||
);
|
||||
if (rtx == QSE_NULL)
|
||||
{
|
||||
|
Reference in New Issue
Block a user