*** empty log message ***
This commit is contained in:
parent
899e913665
commit
0098186950
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h,v 1.149 2006-11-23 03:31:35 bacon Exp $
|
||||
* $Id: awk.h,v 1.150 2006-11-23 14:27:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_AWK_AWK_H_
|
||||
@ -190,7 +190,7 @@ enum
|
||||
ASE_AWK_STRIPSPACES = (1 << 12),
|
||||
|
||||
/* enable the nextoutfile keyword */
|
||||
ASE_AWK_NEXTOUTFILE = (1 << 13),
|
||||
ASE_AWK_NEXTOFILE = (1 << 13),
|
||||
|
||||
/* a newline terminates a statement */
|
||||
ASE_AWK_NEWLINE = (1 << 14)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: extio.c,v 1.63 2006-11-23 03:31:35 bacon Exp $
|
||||
* $Id: extio.c,v 1.64 2006-11-23 14:27:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/awk_i.h>
|
||||
@ -283,6 +283,7 @@ int ase_awk_readextio (
|
||||
* terminator of the previous line */
|
||||
/* TODO: handle different line terminator like \r\n */
|
||||
ASE_AWK_STR_LEN(buf) -= 1;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: jni.c,v 1.21 2006-11-23 03:31:36 bacon Exp $
|
||||
* $Id: jni.c,v 1.22 2006-11-23 14:27:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/jni.h>
|
||||
@ -197,7 +197,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
|
||||
opt = ASE_AWK_EXPLICIT | ASE_AWK_UNIQUE | ASE_AWK_DBLSLASHES |
|
||||
ASE_AWK_SHADING | ASE_AWK_IMPLICIT | ASE_AWK_SHIFT |
|
||||
ASE_AWK_EXTIO | ASE_AWK_BLOCKLESS | ASE_AWK_HASHSIGN |
|
||||
ASE_AWK_NEXTOUTFILE;
|
||||
ASE_AWK_NEXTOFILE;
|
||||
ase_awk_setopt (awk, opt);
|
||||
|
||||
printf ("__awk(native) done => %u, 0x%X\n", awk, awk);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: parse.c,v 1.205 2006-11-23 03:31:36 bacon Exp $
|
||||
* $Id: parse.c,v 1.206 2006-11-23 14:27:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/awk_i.h>
|
||||
@ -79,7 +79,7 @@ enum
|
||||
TOKEN_NEXT,
|
||||
TOKEN_NEXTFILE,
|
||||
TOKEN_NEXTINFILE,
|
||||
TOKEN_NEXTOUTFILE,
|
||||
TOKEN_NEXTOFILE,
|
||||
TOKEN_DELETE,
|
||||
TOKEN_PRINT,
|
||||
TOKEN_PRINTF,
|
||||
@ -128,7 +128,7 @@ static ase_awk_t* __parse_progunit (ase_awk_t* awk);
|
||||
static ase_awk_t* __collect_globals (ase_awk_t* awk);
|
||||
static ase_awk_t* __add_builtin_globals (ase_awk_t* awk);
|
||||
static ase_awk_t* __add_global (
|
||||
ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len);
|
||||
ase_awk_t* awk, const ase_char_t* name, ase_size_t len, int force);
|
||||
static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals);
|
||||
|
||||
static ase_awk_nde_t* __parse_function (ase_awk_t* awk);
|
||||
@ -245,7 +245,7 @@ static struct __kwent __kwtab[] =
|
||||
{ ASE_T("exit"), 4, TOKEN_EXIT, 0 },
|
||||
{ ASE_T("next"), 4, TOKEN_NEXT, 0 },
|
||||
{ ASE_T("nextfile"), 8, TOKEN_NEXTFILE, 0 },
|
||||
{ ASE_T("nextoutfile"), 11, TOKEN_NEXTOUTFILE, ASE_AWK_NEXTOUTFILE },
|
||||
{ ASE_T("nextofile"), 9, TOKEN_NEXTOFILE, ASE_AWK_NEXTOFILE },
|
||||
{ ASE_T("delete"), 6, TOKEN_DELETE, 0 },
|
||||
{ ASE_T("print"), 5, TOKEN_PRINT, ASE_AWK_EXTIO },
|
||||
{ ASE_T("printf"), 6, TOKEN_PRINTF, ASE_AWK_EXTIO },
|
||||
@ -279,10 +279,9 @@ static struct __bvent __bvtab[] =
|
||||
{ ASE_T("OFMT"), 4, 0 },
|
||||
{ ASE_T("OFS"), 3, 0 },
|
||||
{ ASE_T("ORS"), 3, 0 },
|
||||
{ ASE_T("RS"), 2, 0 },
|
||||
{ ASE_T("RT"), 2, 0 },
|
||||
{ ASE_T("RSTART"), 6, 0 },
|
||||
{ ASE_T("RLENGTH"), 7, 0 },
|
||||
{ ASE_T("RS"), 2, 0 },
|
||||
{ ASE_T("RSTART"), 6, 0 },
|
||||
{ ASE_T("SUBSEP"), 6, 0 },
|
||||
{ ASE_NULL, 0, 0 }
|
||||
};
|
||||
@ -1009,12 +1008,26 @@ and merged to top-level block */
|
||||
static ase_awk_t* __add_builtin_globals (ase_awk_t* awk)
|
||||
{
|
||||
struct __bvent* p = __bvtab;
|
||||
ase_awk_t* tmp;
|
||||
|
||||
awk->tree.nbglobals = 0;
|
||||
while (p->name != ASE_NULL)
|
||||
{
|
||||
if (__add_global (awk,
|
||||
p->name, p->name_len) == ASE_NULL) return ASE_NULL;
|
||||
|
||||
if (p->valid != 0 && (awk->option & p->valid) == 0)
|
||||
{
|
||||
/* an invalid global variable are still added
|
||||
* to the global variable table with an empty name.
|
||||
* this is to prevent the run-time from looking up
|
||||
* the variable */
|
||||
tmp =__add_global (awk, ASE_T(""), 0, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp =__add_global (awk, p->name, p->name_len, 0);
|
||||
}
|
||||
if (tmp == ASE_NULL) return ASE_NULL;
|
||||
|
||||
awk->tree.nbglobals++;
|
||||
p++;
|
||||
}
|
||||
@ -1023,22 +1036,27 @@ static ase_awk_t* __add_builtin_globals (ase_awk_t* awk)
|
||||
}
|
||||
|
||||
static ase_awk_t* __add_global (
|
||||
ase_awk_t* awk, const ase_char_t* name, ase_size_t len)
|
||||
ase_awk_t* awk, const ase_char_t* name, ase_size_t len, int force)
|
||||
{
|
||||
if (!force)
|
||||
{
|
||||
if (awk->option & ASE_AWK_UNIQUE)
|
||||
{
|
||||
/* check if it conflict with a function name */
|
||||
if (ase_awk_map_get(&awk->tree.afns, name, len) != ASE_NULL)
|
||||
if (ase_awk_map_get (
|
||||
&awk->tree.afns, name, len) != ASE_NULL)
|
||||
{
|
||||
PANIC (awk, ASE_AWK_EDUPNAME);
|
||||
}
|
||||
}
|
||||
|
||||
/* check if it conflicts with other global variable names */
|
||||
if (ase_awk_tab_find (&awk->parse.globals, 0, name, len) != (ase_size_t)-1)
|
||||
if (ase_awk_tab_find (
|
||||
&awk->parse.globals, 0, name, len) != (ase_size_t)-1)
|
||||
{
|
||||
PANIC (awk, ASE_AWK_EDUPVAR);
|
||||
}
|
||||
}
|
||||
|
||||
if (ase_awk_tab_getsize(&awk->parse.globals) >= ASE_AWK_MAX_GLOBALS)
|
||||
{
|
||||
@ -1062,9 +1080,11 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk)
|
||||
PANIC (awk, ASE_AWK_EIDENT);
|
||||
}
|
||||
|
||||
if (__add_global (awk,
|
||||
if (__add_global (
|
||||
awk,
|
||||
ASE_AWK_STR_BUF(&awk->token.name),
|
||||
ASE_AWK_STR_LEN(&awk->token.name)) == ASE_NULL) return ASE_NULL;
|
||||
ASE_AWK_STR_LEN(&awk->token.name),
|
||||
0) == ASE_NULL) return ASE_NULL;
|
||||
|
||||
if (__get_token(awk) == -1) return ASE_NULL;
|
||||
|
||||
@ -1261,7 +1281,7 @@ awk->parse.nl_semicolon = 1;
|
||||
if (__get_token(awk) == -1) return ASE_NULL;
|
||||
nde = __parse_nextfile (awk, 0);
|
||||
}
|
||||
else if (MATCH(awk,TOKEN_NEXTOUTFILE))
|
||||
else if (MATCH(awk,TOKEN_NEXTOFILE))
|
||||
{
|
||||
if (__get_token(awk) == -1) return ASE_NULL;
|
||||
nde = __parse_nextfile (awk, 1);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: run.c,v 1.282 2006-11-23 03:45:06 bacon Exp $
|
||||
* $Id: run.c,v 1.283 2006-11-23 14:27:51 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/awk_i.h>
|
||||
@ -2049,7 +2049,6 @@ static int __run_nextoutfile (ase_awk_run_t* run)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* TODO: update_ofnr */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: run.h,v 1.26 2006-11-19 11:55:17 bacon Exp $
|
||||
* $Id: run.h,v 1.27 2006-11-23 14:27:52 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_AWK_RUN_H_
|
||||
@ -93,10 +93,9 @@ enum ase_awk_global_id_t
|
||||
ASE_AWK_GLOBAL_OFMT,
|
||||
ASE_AWK_GLOBAL_OFS,
|
||||
ASE_AWK_GLOBAL_ORS,
|
||||
ASE_AWK_GLOBAL_RS,
|
||||
ASE_AWK_GLOBAL_RT,
|
||||
ASE_AWK_GLOBAL_RSTART,
|
||||
ASE_AWK_GLOBAL_RLENGTH,
|
||||
ASE_AWK_GLOBAL_RS,
|
||||
ASE_AWK_GLOBAL_RSTART,
|
||||
ASE_AWK_GLOBAL_SUBSEP
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: val.c,v 1.92 2006-11-22 06:05:45 bacon Exp $
|
||||
* $Id: val.c,v 1.93 2006-11-23 14:27:52 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/awk/awk_i.h>
|
||||
@ -15,10 +15,13 @@ static ase_char_t* __val_real_to_str (
|
||||
int opt, ase_awk_str_t* buf, ase_size_t* len);
|
||||
|
||||
static ase_awk_val_nil_t __awk_nil = { ASE_AWK_VAL_NIL, 0 };
|
||||
ase_awk_val_t* ase_awk_val_nil = (ase_awk_val_t*)&__awk_nil;
|
||||
|
||||
static ase_awk_val_str_t __awk_zls = { ASE_AWK_VAL_STR, 0, ASE_T(""), 0 };
|
||||
/* TODO: consider different line ending schemes */
|
||||
static ase_awk_val_str_t __awk_nl = { ASE_AWK_VAL_STR, 0, ASE_T("\n"), 1 };
|
||||
|
||||
ase_awk_val_t* ase_awk_val_nil = (ase_awk_val_t*)&__awk_nil;
|
||||
ase_awk_val_t* ase_awk_val_zls = (ase_awk_val_t*)&__awk_zls;
|
||||
ase_awk_val_t* ase_awk_val_nl = (ase_awk_val_t*)&__awk_nl;
|
||||
|
||||
static ase_awk_val_int_t __awk_int[] =
|
||||
{
|
||||
@ -249,8 +252,11 @@ ase_awk_val_t* ase_awk_makerefval (ase_awk_run_t* run, int id, ase_awk_val_t** a
|
||||
ase_bool_t ase_awk_isbuiltinval (ase_awk_val_t* val)
|
||||
{
|
||||
return val == ASE_NULL ||
|
||||
val == ase_awk_val_nil || val == ase_awk_val_zls ||
|
||||
val == ase_awk_val_zero || val == ase_awk_val_one ||
|
||||
val == ase_awk_val_nil ||
|
||||
val == ase_awk_val_zls ||
|
||||
val == ase_awk_val_nl ||
|
||||
val == ase_awk_val_zero ||
|
||||
val == ase_awk_val_one ||
|
||||
(val >= (ase_awk_val_t*)&__awk_int[0] &&
|
||||
val <= (ase_awk_val_t*)&__awk_int[ase_countof(__awk_int)-1]);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: val.h,v 1.52 2006-11-19 11:55:17 bacon Exp $
|
||||
* $Id: val.h,v 1.53 2006-11-23 14:27:52 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_AWK_VAL_H_
|
||||
@ -137,6 +137,8 @@ extern "C" {
|
||||
|
||||
extern ase_awk_val_t* ase_awk_val_nil;
|
||||
extern ase_awk_val_t* ase_awk_val_zls;
|
||||
extern ase_awk_val_t* ase_awk_val_nl;
|
||||
extern ase_awk_val_t* ase_awk_val_bnl;
|
||||
extern ase_awk_val_t* ase_awk_val_zero;
|
||||
extern ase_awk_val_t* ase_awk_val_one;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user