*** empty log message ***
This commit is contained in:
parent
86f9f881d6
commit
e447b9543c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.c,v 1.64 2006-08-04 16:33:50 bacon Exp $
|
* $Id: awk.c,v 1.65 2006-08-04 17:02:02 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk.h>
|
#include <xp/awk/awk.h>
|
||||||
@ -516,7 +516,7 @@ static int __main (int argc, xp_char_t* argv[])
|
|||||||
xp_awk_t* awk;
|
xp_awk_t* awk;
|
||||||
xp_awk_runcb_t runcb;
|
xp_awk_runcb_t runcb;
|
||||||
struct src_io src_io = { NULL, NULL };
|
struct src_io src_io = { NULL, NULL };
|
||||||
|
int opt;
|
||||||
|
|
||||||
if ((awk = xp_awk_open()) == XP_NULL)
|
if ((awk = xp_awk_open()) == XP_NULL)
|
||||||
{
|
{
|
||||||
@ -550,10 +550,10 @@ static int __main (int argc, xp_char_t* argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
xp_awk_setparseopt (awk,
|
|
||||||
XP_AWK_EXPLICIT | XP_AWK_UNIQUE | XP_AWK_DBLSLASHES |
|
opt = XP_AWK_EXPLICIT | XP_AWK_UNIQUE | XP_AWK_DBLSLASHES |
|
||||||
XP_AWK_SHADING | XP_AWK_IMPLICIT | XP_AWK_SHIFT |
|
XP_AWK_SHADING | XP_AWK_IMPLICIT | XP_AWK_SHIFT |
|
||||||
XP_AWK_EXTIO | XP_AWK_BLOCKLESS);
|
XP_AWK_EXTIO | XP_AWK_BLOCKLESS;
|
||||||
|
|
||||||
if (argc == 2)
|
if (argc == 2)
|
||||||
{
|
{
|
||||||
@ -578,7 +578,7 @@ static int __main (int argc, xp_char_t* argv[])
|
|||||||
if (xp_strcmp(argv[1], XP_T("-m")) == 0)
|
if (xp_strcmp(argv[1], XP_T("-m")) == 0)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
xp_awk_setrunopt (awk, XP_AWK_RUNMAIN);
|
opt |= XP_AWK_RUNMAIN;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -596,6 +596,8 @@ static int __main (int argc, xp_char_t* argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xp_awk_setopt (awk, opt);
|
||||||
|
|
||||||
if (xp_awk_attsrc(awk, process_source, (void*)&src_io) == -1)
|
if (xp_awk_attsrc(awk, process_source, (void*)&src_io) == -1)
|
||||||
{
|
{
|
||||||
xp_awk_close (awk);
|
xp_awk_close (awk);
|
||||||
|
56
ase/test/awk/rex2.c
Normal file
56
ase/test/awk/rex2.c
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
#include <xp/awk/rex.h>
|
||||||
|
|
||||||
|
#ifdef __STAND_ALONE
|
||||||
|
#define xp_printf xp_awk_printf
|
||||||
|
extern int xp_awk_printf (const xp_char_t* fmt, ...);
|
||||||
|
#define xp_strcmp xp_awk_strcmp
|
||||||
|
extern int xp_awk_strcmp (const xp_char_t* s1, const xp_char_t* s2);
|
||||||
|
#define xp_strlen xp_awk_strlen
|
||||||
|
extern int xp_awk_strlen (const xp_char_t* s);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int xp_main (int argc, const xp_char_t* argv[])
|
||||||
|
{
|
||||||
|
void* rex;
|
||||||
|
const xp_char_t* ptn;
|
||||||
|
int errnum;
|
||||||
|
|
||||||
|
//ptn = XP_T("|");
|
||||||
|
//ptn = XP_T("^he.llo(jo(in|kk)s|com)+h*e{1,40}abc|[^abc][de-f]|^he.llo(jo(in|kk)s|com)+h*e{1,40}abc|[^abc][de-f]");
|
||||||
|
//ptn = XP_T("^he.llo(jo(in|kk)s|com)+h*e{1,40}abc|[^abc][de-f]");
|
||||||
|
//ptn = XP_T("^he.llo(jo(in|kk)s|com)|[^x[:space:][:alpha:]j][^abc][de-f]|^he.llo(jo(in|kk)s|com)|[^x[:space:][:alpha:]j][^abc][de-f]");
|
||||||
|
ptn = XP_T("^.{0,2}.z[^[:space:]]+(abc|zzz){1,2}khg");
|
||||||
|
|
||||||
|
rex = xp_awk_buildrex (ptn, xp_strlen(ptn), &errnum);
|
||||||
|
if (rex == XP_NULL)
|
||||||
|
{
|
||||||
|
xp_printf (XP_T("cannot compile pattern\n"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
xp_printf (XP_T("NA: %u\n"), (unsigned int)XP_AWK_REX_NA(rex));
|
||||||
|
xp_printf (XP_T("LEN: %u\n"), (unsigned int)XP_AWK_REX_LEN(rex));
|
||||||
|
xp_awk_printrex (rex);
|
||||||
|
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
const xp_char_t* match_ptr;
|
||||||
|
xp_size_t match_len;
|
||||||
|
|
||||||
|
//if (xp_awk_matchrex (rex, XP_T("azhabc"), 6, &match_ptr, &match_len) == 0)
|
||||||
|
n = xp_awk_matchrex (rex, XP_T("azhzzzabckhgi"), 13, &match_ptr, &match_len, &errnum);
|
||||||
|
if (n == 1)
|
||||||
|
{
|
||||||
|
xp_printf (XP_T("match = %s, match length = %u\n"), match_ptr, match_len);
|
||||||
|
}
|
||||||
|
else if (n == 0)
|
||||||
|
{
|
||||||
|
xp_printf (XP_T("go to hell\n"));
|
||||||
|
}
|
||||||
|
else /* if (n == -1) */
|
||||||
|
{
|
||||||
|
xp_printf (XP_T("ERROR: in match\n"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user