touched up code
This commit is contained in:
parent
6f4fd0c385
commit
ea9e068c01
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.h 259 2009-08-20 11:28:03Z hyunghwan.chung $
|
* $Id: awk.h 264 2009-08-23 12:56:45Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -271,13 +271,17 @@ enum qse_awk_sio_cmd_t
|
|||||||
};
|
};
|
||||||
typedef enum qse_awk_sio_cmd_t qse_awk_sio_cmd_t;
|
typedef enum qse_awk_sio_cmd_t qse_awk_sio_cmd_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The qse_awk_sio_lxc_t type defines a structure to store a character
|
||||||
|
* with its location information.
|
||||||
|
*/
|
||||||
typedef struct qse_awk_sio_lxc_t qse_awk_sio_lxc_t;
|
typedef struct qse_awk_sio_lxc_t qse_awk_sio_lxc_t;
|
||||||
struct qse_awk_sio_lxc_t
|
struct qse_awk_sio_lxc_t
|
||||||
{
|
{
|
||||||
qse_cint_t c;
|
qse_cint_t c; /**< character */
|
||||||
qse_size_t lin;
|
qse_size_t lin; /**< line */
|
||||||
qse_size_t col;
|
qse_size_t col; /**< column */
|
||||||
const qse_char_t* file;
|
const qse_char_t* fil; /**< file */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct qse_awk_sio_arg_t
|
struct qse_awk_sio_arg_t
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.c 263 2009-08-23 08:48:02Z hyunghwan.chung $
|
* $Id: awk.c 264 2009-08-23 12:56:45Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -44,35 +44,35 @@ static void free_fnc (qse_map_t* map, void* vptr, qse_size_t vlen)
|
|||||||
QSE_AWK_FREE (awk, f);
|
QSE_AWK_FREE (awk, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_token (qse_mmgr_t* mmgr, qse_awk_token_t* token)
|
static int init_token (qse_mmgr_t* mmgr, qse_awk_tok_t* tok)
|
||||||
{
|
{
|
||||||
token->name = qse_str_open (mmgr, 0, 128);
|
tok->name = qse_str_open (mmgr, 0, 128);
|
||||||
if (token->name == QSE_NULL) return -1;
|
if (tok->name == QSE_NULL) return -1;
|
||||||
|
|
||||||
token->file = QSE_NULL;
|
tok->type = 0;
|
||||||
token->type = 0;
|
tok->loc.fil = QSE_NULL;
|
||||||
token->lin = 0;
|
tok->loc.lin = 0;
|
||||||
token->col = 0;
|
tok->loc.col = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fini_token (qse_awk_token_t* token)
|
static void fini_token (qse_awk_tok_t* tok)
|
||||||
{
|
{
|
||||||
if (token->name != QSE_NULL)
|
if (tok->name != QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_str_close (token->name);
|
qse_str_close (tok->name);
|
||||||
token->name = QSE_NULL;
|
tok->name = QSE_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void clear_token (qse_awk_token_t* token)
|
static void clear_token (qse_awk_tok_t* tok)
|
||||||
{
|
{
|
||||||
if (token->name != QSE_NULL) qse_str_clear (token->name);
|
if (tok->name != QSE_NULL) qse_str_clear (tok->name);
|
||||||
token->file = QSE_NULL;
|
tok->type = 0;
|
||||||
token->type = 0;
|
tok->loc.fil = QSE_NULL;
|
||||||
token->lin = 0;
|
tok->loc.lin = 0;
|
||||||
token->col = 0;
|
tok->loc.col = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtn, qse_awk_prm_t* prm)
|
qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtn, qse_awk_prm_t* prm)
|
||||||
@ -112,9 +112,9 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtn, qse_awk_prm_t* prm)
|
|||||||
}
|
}
|
||||||
awk->prm = *prm;
|
awk->prm = *prm;
|
||||||
|
|
||||||
if (init_token (mmgr, &awk->ptoken) == -1) goto oops;
|
if (init_token (mmgr, &awk->ptok) == -1) goto oops;
|
||||||
if (init_token (mmgr, &awk->token) == -1) goto oops;
|
if (init_token (mmgr, &awk->tok) == -1) goto oops;
|
||||||
if (init_token (mmgr, &awk->ntoken) == -1) goto oops;
|
if (init_token (mmgr, &awk->ntok) == -1) goto oops;
|
||||||
|
|
||||||
awk->wtab = qse_map_open (mmgr, QSE_SIZEOF(awk), 512, 70);
|
awk->wtab = qse_map_open (mmgr, QSE_SIZEOF(awk), 512, 70);
|
||||||
if (awk->wtab == QSE_NULL) goto oops;
|
if (awk->wtab == QSE_NULL) goto oops;
|
||||||
@ -222,9 +222,9 @@ oops:
|
|||||||
if (awk->sio.names) qse_map_close (awk->sio.names);
|
if (awk->sio.names) qse_map_close (awk->sio.names);
|
||||||
if (awk->rwtab) qse_map_close (awk->rwtab);
|
if (awk->rwtab) qse_map_close (awk->rwtab);
|
||||||
if (awk->wtab) qse_map_close (awk->wtab);
|
if (awk->wtab) qse_map_close (awk->wtab);
|
||||||
fini_token (&awk->ntoken);
|
fini_token (&awk->ntok);
|
||||||
fini_token (&awk->token);
|
fini_token (&awk->tok);
|
||||||
fini_token (&awk->ptoken);
|
fini_token (&awk->ptok);
|
||||||
QSE_AWK_FREE (awk, awk);
|
QSE_AWK_FREE (awk, awk);
|
||||||
|
|
||||||
return QSE_NULL;
|
return QSE_NULL;
|
||||||
@ -248,9 +248,9 @@ int qse_awk_close (qse_awk_t* awk)
|
|||||||
qse_map_close (awk->rwtab);
|
qse_map_close (awk->rwtab);
|
||||||
qse_map_close (awk->wtab);
|
qse_map_close (awk->wtab);
|
||||||
|
|
||||||
fini_token (&awk->ntoken);
|
fini_token (&awk->ntok);
|
||||||
fini_token (&awk->token);
|
fini_token (&awk->tok);
|
||||||
fini_token (&awk->ptoken);
|
fini_token (&awk->ptok);
|
||||||
|
|
||||||
/* QSE_AWK_ALLOC, QSE_AWK_FREE, etc can not be used
|
/* QSE_AWK_ALLOC, QSE_AWK_FREE, etc can not be used
|
||||||
* from the next line onwards */
|
* from the next line onwards */
|
||||||
@ -262,9 +262,9 @@ int qse_awk_clear (qse_awk_t* awk)
|
|||||||
{
|
{
|
||||||
awk->stopall = QSE_FALSE;
|
awk->stopall = QSE_FALSE;
|
||||||
|
|
||||||
clear_token (&awk->token);
|
clear_token (&awk->tok);
|
||||||
clear_token (&awk->ntoken);
|
clear_token (&awk->ntok);
|
||||||
clear_token (&awk->ptoken);
|
clear_token (&awk->ptok);
|
||||||
|
|
||||||
QSE_ASSERT (QSE_LDA_SIZE(awk->parse.gbls) == awk->tree.ngbls);
|
QSE_ASSERT (QSE_LDA_SIZE(awk->parse.gbls) == awk->tree.ngbls);
|
||||||
/* delete all non-builtin global variables */
|
/* delete all non-builtin global variables */
|
||||||
@ -329,7 +329,7 @@ int qse_awk_clear (qse_awk_t* awk)
|
|||||||
awk->sio.last.c = QSE_CHAR_EOF;
|
awk->sio.last.c = QSE_CHAR_EOF;
|
||||||
awk->sio.last.lin = 0;
|
awk->sio.last.lin = 0;
|
||||||
awk->sio.last.col = 0;
|
awk->sio.last.col = 0;
|
||||||
awk->sio.last.file = QSE_NULL;
|
awk->sio.last.fil = QSE_NULL;
|
||||||
awk->sio.nungots = 0;
|
awk->sio.nungots = 0;
|
||||||
|
|
||||||
awk->sio.arg.lin = 1;
|
awk->sio.arg.lin = 1;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.h 250 2009-08-10 03:29:59Z hyunghwan.chung $
|
* $Id: awk.h 264 2009-08-23 12:56:45Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -96,16 +96,22 @@ struct qse_awk_tree_t
|
|||||||
int ok;
|
int ok;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct qse_awk_token_t qse_awk_token_t;
|
typedef struct qse_awk_tok_loc_t qse_awk_tok_loc_t;
|
||||||
struct qse_awk_token_t
|
struct qse_awk_tok_loc_t
|
||||||
{
|
{
|
||||||
int type;
|
const qse_char_t* fil;
|
||||||
qse_str_t* name;
|
|
||||||
const qse_char_t* file;
|
|
||||||
qse_size_t lin;
|
qse_size_t lin;
|
||||||
qse_size_t col;
|
qse_size_t col;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct qse_awk_tok_t qse_awk_tok_t;
|
||||||
|
struct qse_awk_tok_t
|
||||||
|
{
|
||||||
|
int type;
|
||||||
|
qse_str_t* name;
|
||||||
|
qse_awk_tok_loc_t loc;
|
||||||
|
};
|
||||||
|
|
||||||
struct qse_awk_t
|
struct qse_awk_t
|
||||||
{
|
{
|
||||||
QSE_DEFINE_COMMON_FIELDS (sed)
|
QSE_DEFINE_COMMON_FIELDS (sed)
|
||||||
@ -188,11 +194,11 @@ struct qse_awk_t
|
|||||||
} sio;
|
} sio;
|
||||||
|
|
||||||
/* previous token */
|
/* previous token */
|
||||||
qse_awk_token_t ptoken;
|
qse_awk_tok_t ptok;
|
||||||
/* current token */
|
/* current token */
|
||||||
qse_awk_token_t token;
|
qse_awk_tok_t tok;
|
||||||
/* look-ahead token */
|
/* look-ahead token */
|
||||||
qse_awk_token_t ntoken;
|
qse_awk_tok_t ntok;
|
||||||
|
|
||||||
/* intrinsic functions */
|
/* intrinsic functions */
|
||||||
struct
|
struct
|
||||||
|
1182
qse/lib/awk/parse.c
1182
qse/lib/awk/parse.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user