implemented @include partially

This commit is contained in:
2009-07-27 20:31:58 +00:00
parent 90955d1b0a
commit 0da1c65cf5
10 changed files with 420 additions and 230 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: Awk.hpp 245 2009-07-25 05:18:42Z hyunghwan.chung $
* $Id: Awk.hpp 246 2009-07-27 02:31:58Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -56,6 +56,10 @@ public:
typedef qse_awk_rio_cmd_t rio_cmd_t;
typedef qse_awk_sio_arg_t sio_arg_t;
typedef qse_awk_sio_cmd_t sio_cmd_t;
class Run;
friend class Run;
@ -111,8 +115,6 @@ public:
ERR_FUNNAME = QSE_AWK_EFUNNAME,
ERR_BLKBEG = QSE_AWK_EBLKBEG,
ERR_BLKEND = QSE_AWK_EBLKEND,
ERR_DUPBEG = QSE_AWK_EDUPBEG,
ERR_DUPEND = QSE_AWK_EDUPEND,
ERR_KWRED = QSE_AWK_EKWRED,
ERR_FNCRED = QSE_AWK_EFNCRED,
ERR_FUNRED = QSE_AWK_EFUNRED,
@ -140,6 +142,8 @@ public:
ERR_PREPST = QSE_AWK_EPREPST,
ERR_INCDECOPR = QSE_AWK_EINCDECOPR,
ERR_INCLSTR = QSE_AWK_EINCLSTR,
ERR_INCLTD = QSE_AWK_EINCLTD,
ERR_DIRECNR = QSE_AWK_EDIRECNR,
ERR_DIVBY0 = QSE_AWK_EDIVBY0,
ERR_OPERAND = QSE_AWK_EOPERAND,
ERR_POSIDX = QSE_AWK_EPOSIDX,
@ -1049,9 +1053,11 @@ protected:
// static glue members for various handlers
static ssize_t readSource (
awk_t* awk, qse_awk_sio_cmd_t cmd, char_t* data, size_t count);
awk_t* awk, sio_cmd_t cmd, sio_arg_t* arg,
char_t* data, size_t count);
static ssize_t writeSource (
awk_t* awk, qse_awk_sio_cmd_t cmd, char_t* data, size_t count);
awk_t* awk, sio_cmd_t cmd, sio_arg_t* arg,
char_t* data, size_t count);
static ssize_t pipeHandler (
rtx_t* rtx, rio_cmd_t cmd, rio_arg_t* riod,

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.h 245 2009-07-25 05:18:42Z hyunghwan.chung $
* $Id: awk.h 246 2009-07-27 02:31:58Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -276,6 +276,14 @@ struct qse_awk_sio_arg_t
qse_char_t* name; /**< [IN] name of I/O object */
void* handle; /**< [OUT] I/O handle set by a handler */
/*-- from here down, internal use only --*/
struct
{
qse_char_t buf[1024];
qse_size_t pos;
qse_size_t len;
} b;
struct qse_awk_sio_arg_t* next;
};
typedef struct qse_awk_sio_arg_t qse_awk_sio_arg_t;
@ -653,8 +661,6 @@ enum qse_awk_errnum_t
QSE_AWK_EFUNNAME, /**< '${0}' not a valid function name */
QSE_AWK_EBLKBEG, /**< BEGIN not followed by left bracket on the same line */
QSE_AWK_EBLKEND, /**< END not followed by left bracket on the same line */
QSE_AWK_EDUPBEG, /**< duplicate BEGIN */
QSE_AWK_EDUPEND, /**< duplicate END */
QSE_AWK_EKWRED, /**< keyword '${0}' redefined */
QSE_AWK_EFNCRED, /**< intrinsic function '${0}' redefined */
QSE_AWK_EFUNRED, /**< function '${0}' redefined */
@ -684,6 +690,8 @@ enum qse_awk_errnum_t
QSE_AWK_EPREPST, /**< both prefix and postfix incr/decr operator present */
QSE_AWK_EINCDECOPR,/**< illegal operand for incr/decr operator */
QSE_AWK_EINCLSTR, /**< 'include' not followed by a string */
QSE_AWK_EINCLTD, /**< include level too deep */
QSE_AWK_EDIRECNR, /**< directive '${0}' not recognized */
/* run time error */
QSE_AWK_EDIVBY0, /**< divide by zero */
@ -773,7 +781,8 @@ enum qse_awk_depth_t
QSE_AWK_DEPTH_EXPR_PARSE = (1 << 2),
QSE_AWK_DEPTH_EXPR_RUN = (1 << 3),
QSE_AWK_DEPTH_REX_BUILD = (1 << 4),
QSE_AWK_DEPTH_REX_MATCH = (1 << 5)
QSE_AWK_DEPTH_REX_MATCH = (1 << 5),
QSE_AWK_DEPTH_INCLUDE = (1 << 6)
};
/**