From 2bf9b055e63b18638db0a414137f6b1fcf86af18 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 19 Jun 2007 13:14:00 +0000 Subject: [PATCH] Recovered from cvs revision 2007-06-19 03:59:00 --- ase/ase.bdsgroup | 6 +----- ase/awk/awk.h | 4 ++-- ase/awk/func.c | 35 ++++++++++++++++++++++++++++----- ase/awk/parse.c | 5 ++--- ase/change.log | 2 ++ ase/test/awk/asetestawk.bdsproj | 16 +++++++-------- 6 files changed, 45 insertions(+), 23 deletions(-) diff --git a/ase/ase.bdsgroup b/ase/ase.bdsgroup index ddc23fe5..d5e7bf1a 100644 --- a/ase/ase.bdsgroup +++ b/ase/ase.bdsgroup @@ -17,10 +17,6 @@ test\awk\asetestawk++.bdsproj asecmn.lib aseawk.lib aseawk++.lib aseutl.lib asetestawk.exe asetestawk++.exe - - - - - + diff --git a/ase/awk/awk.h b/ase/awk/awk.h index b1a6f232..9e275e85 100644 --- a/ase/awk/awk.h +++ b/ase/awk/awk.h @@ -1,5 +1,5 @@ /* - * $Id: awk.h,v 1.6 2007/06/17 14:54:10 bacon Exp $ + * $Id: awk.h,v 1.7 2007/06/18 14:05:18 bacon Exp $ * * {License} */ @@ -414,7 +414,7 @@ void ase_awk_setoption (ase_awk_t* awk, int opt); ase_size_t ase_awk_getmaxdepth (ase_awk_t* awk, int type); void ase_awk_setmaxdepth (ase_awk_t* awk, int types, ase_size_t depth); -int ase_awk_setkeyword (ase_awk_t* awk, +int ase_awk_setword (ase_awk_t* awk, const ase_char_t* okw, ase_size_t olen, const ase_char_t* nkw, ase_size_t nlen); diff --git a/ase/awk/func.c b/ase/awk/func.c index bf49e395..ab7e98ba 100644 --- a/ase/awk/func.c +++ b/ase/awk/func.c @@ -1,5 +1,5 @@ /* - * $Id: func.c,v 1.5 2007/05/28 13:54:47 bacon Exp $ + * $Id: func.c,v 1.7 2007/06/18 14:26:30 bacon Exp $ * * {License} */ @@ -156,14 +156,28 @@ ase_awk_bfn_t* ase_awk_getbfn ( ase_awk_t* awk, const ase_char_t* name, ase_size_t len) { ase_awk_bfn_t* p; + ase_awk_pair_t* pair; + const ase_char_t* k; + ase_size_t l; for (p = __sys_bfn; p->name.ptr != ASE_NULL; p++) { if (p->valid != 0 && (awk->option & p->valid) == 0) continue; - if (ase_strxncmp ( - p->name.ptr, p->name.len, name, len) == 0) return p; + pair = ase_awk_map_get (awk->kwtab, p->name.ptr, p->name.len); + if (pair != ASE_NULL) + { + k = ((ase_cstr_t*)(pair->val))->ptr; + l = ((ase_cstr_t*)(pair->val))->len; + } + else + { + k = p->name.ptr; + l = p->name.len; + } + + if (ase_strxncmp (k, l, name, len) == 0) return p; } for (p = awk->bfn.user; p != ASE_NULL; p = p->next) @@ -171,8 +185,19 @@ ase_awk_bfn_t* ase_awk_getbfn ( if (p->valid != 0 && (awk->option & p->valid) == 0) continue; - if (ase_strxncmp ( - p->name.ptr, p->name.len, name, len) == 0) return p; + pair = ase_awk_map_get (awk->kwtab, p->name.ptr, p->name.len); + if (pair != ASE_NULL) + { + k = ((ase_cstr_t*)(pair->val))->ptr; + l = ((ase_cstr_t*)(pair->val))->len; + } + else + { + k = p->name.ptr; + l = p->name.len; + } + + if (ase_strxncmp (k, l, name, len) == 0) return p; } return ASE_NULL; diff --git a/ase/awk/parse.c b/ase/awk/parse.c index 5a7ef422..003dd0ff 100644 --- a/ase/awk/parse.c +++ b/ase/awk/parse.c @@ -1,5 +1,5 @@ /* - * $Id: parse.c,v 1.7 2007/06/17 15:29:29 bacon Exp $ + * $Id: parse.c,v 1.8 2007/06/18 14:05:18 bacon Exp $ * * {License} */ @@ -398,7 +398,7 @@ const ase_char_t* ase_awk_getglobalname ( } -int ase_awk_setkeyword (ase_awk_t* awk, +int ase_awk_setword (ase_awk_t* awk, const ase_char_t* okw, ase_size_t olen, const ase_char_t* nkw, ase_size_t nlen) { @@ -4772,7 +4772,6 @@ static int classify_ident ( kwent_t* kwp; ase_awk_pair_t* pair; - for (kwp = kwtab; kwp->name != ASE_NULL; kwp++) { const ase_char_t* k; diff --git a/ase/change.log b/ase/change.log index b4f2d92b..26b1e6ae 100644 --- a/ase/change.log +++ b/ase/change.log @@ -1,6 +1,8 @@ [0.2.1] * changed the wrong macro name WIN32 to _WIN32 in utl/stdio.h +* added ase_awk_setword to enable customization of keywords and + implicit function names. [0.2.0] diff --git a/ase/test/awk/asetestawk.bdsproj b/ase/test/awk/asetestawk.bdsproj index 5c392e98..ae5457e0 100644 --- a/ase/test/awk/asetestawk.bdsproj +++ b/ase/test/awk/asetestawk.bdsproj @@ -215,7 +215,7 @@ - arg.awk "" + -f arg.awk "" True C:\projects\ase\test\awk @@ -248,16 +248,16 @@ - - mkdir $(PROJECTDIR)..\..\release\win32\bds + + mkdir $(PROJECTDIR)..\..\release\win32\bds mkdir $(PROJECTDIR)..\..\debug\win32\bds - - - mkdir $(PROJECTDIR)..\release\bin + + + mkdir $(PROJECTDIR)..\release\bin mkdir $(PROJECTDIR)..\debug\bin - - + +