simplified error formatting in qse_awk_t
- added qse_awk_errstr_t and related functions - changed the Awk class also fixed a minor bug in qse_awk_rtx_call()
This commit is contained in:
parent
3148407114
commit
cd52c663cf
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.hpp 156 2009-05-25 13:39:18Z hyunghwan.chung $
|
* $Id: Awk.hpp 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -36,15 +36,17 @@ class Awk: public Mmgr
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef qse_map_t map_t;
|
typedef qse_map_t map_t;
|
||||||
/** Represents a key/value pair */
|
|
||||||
typedef qse_map_pair_t pair_t;
|
typedef qse_map_pair_t pair_t;
|
||||||
|
|
||||||
/** Represents an internal awk value */
|
|
||||||
typedef qse_awk_val_t val_t;
|
|
||||||
|
|
||||||
/** Represents a underlying interpreter */
|
/** Represents a underlying interpreter */
|
||||||
typedef qse_awk_t awk_t;
|
typedef qse_awk_t awk_t;
|
||||||
|
|
||||||
|
typedef qse_awk_errnum_t errnum_t;
|
||||||
|
typedef qse_awk_errstr_t errstr_t;
|
||||||
|
|
||||||
|
/** Represents an internal awk value */
|
||||||
|
typedef qse_awk_val_t val_t;
|
||||||
|
|
||||||
/** Represents a runtime context */
|
/** Represents a runtime context */
|
||||||
typedef qse_awk_rtx_t rtx_t;
|
typedef qse_awk_rtx_t rtx_t;
|
||||||
|
|
||||||
@ -792,8 +794,9 @@ public:
|
|||||||
/** Gets the maximum depth */
|
/** Gets the maximum depth */
|
||||||
virtual size_t getMaxDepth (int id) const;
|
virtual size_t getMaxDepth (int id) const;
|
||||||
|
|
||||||
virtual const char_t* getErrorString (ErrorCode num) const;
|
virtual const char_t* getErrorString (
|
||||||
virtual int setErrorString (ErrorCode num, const char_t* str);
|
ErrorCode num
|
||||||
|
) const;
|
||||||
|
|
||||||
virtual int getWord (
|
virtual int getWord (
|
||||||
const char_t* ow, qse_size_t owl,
|
const char_t* ow, qse_size_t owl,
|
||||||
@ -1038,6 +1041,7 @@ protected:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
awk_t* awk;
|
awk_t* awk;
|
||||||
|
errstr_t dflerrstr;
|
||||||
map_t* functionMap;
|
map_t* functionMap;
|
||||||
|
|
||||||
Source sourceIn;
|
Source sourceIn;
|
||||||
@ -1049,6 +1053,9 @@ protected:
|
|||||||
|
|
||||||
bool runCallback;
|
bool runCallback;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const char_t* xerrstr (awk_t* a, errnum_t num) throw ();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Awk (const Awk&);
|
Awk (const Awk&);
|
||||||
Awk& operator= (const Awk&);
|
Awk& operator= (const Awk&);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.h 168 2009-05-30 01:19:46Z hyunghwan.chung $
|
* $Id: awk.h 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -27,9 +27,6 @@
|
|||||||
/** @file
|
/** @file
|
||||||
* An embeddable AWK interpreter is defined in this header files.
|
* An embeddable AWK interpreter is defined in this header files.
|
||||||
*
|
*
|
||||||
* @todo
|
|
||||||
* - change the way to set a custom error string: follow qse_sed_errstr_t
|
|
||||||
*
|
|
||||||
* @example awk01.c
|
* @example awk01.c
|
||||||
* This program demonstrates how to use qse_awk_rtx_loop().
|
* This program demonstrates how to use qse_awk_rtx_loop().
|
||||||
* @example awk02.c
|
* @example awk02.c
|
||||||
@ -419,10 +416,8 @@ enum qse_awk_option_t
|
|||||||
QSE_AWK_NEWLINE | QSE_AWK_PABLOCK
|
QSE_AWK_NEWLINE | QSE_AWK_PABLOCK
|
||||||
};
|
};
|
||||||
|
|
||||||
/****e* AWK/qse_awk_errnum_t
|
/**
|
||||||
* NAME
|
* The qse_awk_errnum_t type defines error codes.
|
||||||
* qse_awk_errnum_t - define an error code
|
|
||||||
* SYNOPSIS
|
|
||||||
*/
|
*/
|
||||||
enum qse_awk_errnum_t
|
enum qse_awk_errnum_t
|
||||||
{
|
{
|
||||||
@ -575,10 +570,21 @@ enum qse_awk_errnum_t
|
|||||||
/* the number of error numbers, internal use only */
|
/* the number of error numbers, internal use only */
|
||||||
QSE_AWK_NUMERRNUM
|
QSE_AWK_NUMERRNUM
|
||||||
};
|
};
|
||||||
/******/
|
|
||||||
|
|
||||||
typedef enum qse_awk_errnum_t qse_awk_errnum_t;
|
typedef enum qse_awk_errnum_t qse_awk_errnum_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The qse_awk_errstr_t type defines a error string getter. It should return
|
||||||
|
* an error formatting string for an error number requested. A new string
|
||||||
|
* should contain the same number of positional parameters (${X}) as in the
|
||||||
|
* default error formatting string. You can set a new getter into an awk
|
||||||
|
* object with the qse_awk_seterrstr() function to customize an error string.
|
||||||
|
*/
|
||||||
|
typedef const qse_char_t* (*qse_awk_errstr_t) (
|
||||||
|
qse_awk_t* awk, /**< an awk object */
|
||||||
|
qse_awk_errnum_t num /**< an error number */
|
||||||
|
);
|
||||||
|
|
||||||
/* depth types */
|
/* depth types */
|
||||||
enum qse_awk_depth_t
|
enum qse_awk_depth_t
|
||||||
{
|
{
|
||||||
@ -845,35 +851,41 @@ int qse_awk_clear (
|
|||||||
);
|
);
|
||||||
/******/
|
/******/
|
||||||
|
|
||||||
/****f* AWK/qse_awk_geterrstr
|
/**
|
||||||
* NAME
|
* The qse_awk_geterrstr() gets an error string getter.
|
||||||
* qse_awk_geterrstr - get a format string for an error code
|
|
||||||
* DESCRIPTION
|
|
||||||
* The qse_awk_geterrstr() function returns a pointer to a format string for
|
|
||||||
* the error number num.
|
|
||||||
* SYNOPSIS
|
|
||||||
*/
|
*/
|
||||||
const qse_char_t* qse_awk_geterrstr (
|
qse_awk_errstr_t qse_awk_geterrstr (
|
||||||
qse_awk_t* awk,
|
qse_awk_t* awk /**< an awk object */
|
||||||
qse_awk_errnum_t num
|
|
||||||
);
|
);
|
||||||
/******/
|
|
||||||
|
|
||||||
/****f* AWK/qse_awk_seterrstr
|
/**
|
||||||
* NAME
|
* The qse_awk_seterrstr() sets an error string getter that is called to
|
||||||
* qse_awk_geterrstr - set a format string for an error
|
* compose an error message when its retrieval is requested.
|
||||||
* DESCRIPTION
|
*
|
||||||
* The qse_awk_seterrstr() function sets a format string for an error. The
|
* Here is an example of changing the formatting string for the #QSE_SED_ECMDNR
|
||||||
* format string is used to compose an actual error message to be returned
|
* error.
|
||||||
* by qse_awk_geterrmsg() and qse_awk_geterror().
|
* @code
|
||||||
* SYNOPSIS
|
* qse_awk_errstr_t orgerrstr;
|
||||||
|
*
|
||||||
|
* const qse_char_t* myerrstr (qse_awk_t* awk, qse_awk_errnum_t num)
|
||||||
|
* {
|
||||||
|
* if (num == QSE_SED_ECMDNR) return QSE_T("unrecognized command ${0}");
|
||||||
|
* return orgerrstr (awk, num);
|
||||||
|
* }
|
||||||
|
* int main ()
|
||||||
|
* {
|
||||||
|
* qse_awk_t* awk;
|
||||||
|
* ...
|
||||||
|
* orgerrstr = qse_awk_geterrstr (awk);
|
||||||
|
* qse_awk_seterrstr (awk, myerrstr);
|
||||||
|
* ...
|
||||||
|
* }
|
||||||
|
* @endcode
|
||||||
*/
|
*/
|
||||||
int qse_awk_seterrstr (
|
void qse_awk_seterrstr (
|
||||||
qse_awk_t* awk,
|
qse_awk_t* awk, /**< an awk object */
|
||||||
qse_awk_errnum_t num,
|
qse_awk_errstr_t errstr /**< an error string getter */
|
||||||
const qse_char_t* str
|
|
||||||
);
|
);
|
||||||
/******/
|
|
||||||
|
|
||||||
int qse_awk_geterrnum (
|
int qse_awk_geterrnum (
|
||||||
qse_awk_t* awk
|
qse_awk_t* awk
|
||||||
@ -889,26 +901,26 @@ const qse_char_t* qse_awk_geterrmsg (
|
|||||||
|
|
||||||
void qse_awk_seterrnum (
|
void qse_awk_seterrnum (
|
||||||
qse_awk_t* awk,
|
qse_awk_t* awk,
|
||||||
int errnum
|
qse_awk_errnum_t errnum
|
||||||
);
|
);
|
||||||
|
|
||||||
void qse_awk_seterrmsg (
|
void qse_awk_seterrmsg (
|
||||||
qse_awk_t* awk,
|
qse_awk_t* awk,
|
||||||
int errnum,
|
qse_awk_errnum_t errnum,
|
||||||
qse_size_t errlin,
|
qse_size_t errlin,
|
||||||
const qse_char_t* errmsg
|
const qse_char_t* errmsg
|
||||||
);
|
);
|
||||||
|
|
||||||
void qse_awk_geterror (
|
void qse_awk_geterror (
|
||||||
qse_awk_t* awk,
|
qse_awk_t* awk,
|
||||||
int* errnum,
|
qse_awk_errnum_t* errnum,
|
||||||
qse_size_t* errlin,
|
qse_size_t* errlin,
|
||||||
const qse_char_t** errmsg
|
const qse_char_t** errmsg
|
||||||
);
|
);
|
||||||
|
|
||||||
void qse_awk_seterror (
|
void qse_awk_seterror (
|
||||||
qse_awk_t* awk,
|
qse_awk_t* awk,
|
||||||
int errnum,
|
qse_awk_errnum_t errnum,
|
||||||
qse_size_t errlin,
|
qse_size_t errlin,
|
||||||
const qse_cstr_t* errarg
|
const qse_cstr_t* errarg
|
||||||
);
|
);
|
||||||
@ -1428,26 +1440,26 @@ const qse_char_t* qse_awk_rtx_geterrmsg (
|
|||||||
|
|
||||||
void qse_awk_rtx_seterrnum (
|
void qse_awk_rtx_seterrnum (
|
||||||
qse_awk_rtx_t* rtx,
|
qse_awk_rtx_t* rtx,
|
||||||
int errnum
|
qse_awk_errnum_t errnum
|
||||||
);
|
);
|
||||||
|
|
||||||
void qse_awk_rtx_seterrmsg (
|
void qse_awk_rtx_seterrmsg (
|
||||||
qse_awk_rtx_t* rtx,
|
qse_awk_rtx_t* rtx,
|
||||||
int errnum,
|
qse_awk_errnum_t errnum,
|
||||||
qse_size_t errlin,
|
qse_size_t errlin,
|
||||||
const qse_char_t* errmsg
|
const qse_char_t* errmsg
|
||||||
);
|
);
|
||||||
|
|
||||||
void qse_awk_rtx_geterror (
|
void qse_awk_rtx_geterror (
|
||||||
qse_awk_rtx_t* rtx,
|
qse_awk_rtx_t* rtx,
|
||||||
int* errnum,
|
qse_awk_errnum_t* errnum,
|
||||||
qse_size_t* errlin,
|
qse_size_t* errlin,
|
||||||
const qse_char_t** errmsg
|
const qse_char_t** errmsg
|
||||||
);
|
);
|
||||||
|
|
||||||
void qse_awk_rtx_seterror (
|
void qse_awk_rtx_seterror (
|
||||||
qse_awk_rtx_t* rtx,
|
qse_awk_rtx_t* rtx,
|
||||||
int errnum,
|
qse_awk_errnum_t errnum,
|
||||||
qse_size_t errlin,
|
qse_size_t errlin,
|
||||||
const qse_cstr_t* errarg
|
const qse_cstr_t* errarg
|
||||||
);
|
);
|
||||||
|
@ -386,7 +386,7 @@ protected:
|
|||||||
*/
|
*/
|
||||||
virtual const char_t* getErrorString (
|
virtual const char_t* getErrorString (
|
||||||
errnum_t num ///< an error number
|
errnum_t num ///< an error number
|
||||||
);
|
) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/// handle to a primitive sed object
|
/// handle to a primitive sed object
|
||||||
@ -398,6 +398,10 @@ private:
|
|||||||
static ssize_t xin (sed_t* s, io_cmd_t cmd, io_arg_t* arg) throw ();
|
static ssize_t xin (sed_t* s, io_cmd_t cmd, io_arg_t* arg) throw ();
|
||||||
static ssize_t xout (sed_t* s, io_cmd_t cmd, io_arg_t* arg) throw ();
|
static ssize_t xout (sed_t* s, io_cmd_t cmd, io_arg_t* arg) throw ();
|
||||||
static const char_t* xerrstr (sed_t* s, errnum_t num) throw ();
|
static const char_t* xerrstr (sed_t* s, errnum_t num) throw ();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Sed (const Sed&);
|
||||||
|
Sed& operator= (const Sed&);
|
||||||
};
|
};
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: Awk.cpp 148 2009-05-20 10:44:47Z hyunghwan.chung $
|
* $Id: Awk.cpp 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -966,20 +966,20 @@ const Awk::char_t* Awk::Run::getErrorMessage () const
|
|||||||
void Awk::Run::setError (ErrorCode code)
|
void Awk::Run::setError (ErrorCode code)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (this->run != QSE_NULL);
|
QSE_ASSERT (this->run != QSE_NULL);
|
||||||
qse_awk_rtx_seterror (this->run, code, 0, QSE_NULL);
|
qse_awk_rtx_seterror (this->run, (errnum_t)code, 0, QSE_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Awk::Run::setError (ErrorCode code, size_t line)
|
void Awk::Run::setError (ErrorCode code, size_t line)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (this->run != QSE_NULL);
|
QSE_ASSERT (this->run != QSE_NULL);
|
||||||
qse_awk_rtx_seterror (this->run, code, line, QSE_NULL);
|
qse_awk_rtx_seterror (this->run, (errnum_t)code, line, QSE_NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Awk::Run::setError (ErrorCode code, size_t line, const char_t* arg)
|
void Awk::Run::setError (ErrorCode code, size_t line, const char_t* arg)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (this->run != QSE_NULL);
|
QSE_ASSERT (this->run != QSE_NULL);
|
||||||
qse_cstr_t x = { arg, qse_strlen(arg) };
|
qse_cstr_t x = { arg, qse_strlen(arg) };
|
||||||
qse_awk_rtx_seterror (this->run, code, line, &x);
|
qse_awk_rtx_seterror (this->run, (errnum_t)code, line, &x);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Awk::Run::setError (
|
void Awk::Run::setError (
|
||||||
@ -987,14 +987,14 @@ void Awk::Run::setError (
|
|||||||
{
|
{
|
||||||
QSE_ASSERT (this->run != QSE_NULL);
|
QSE_ASSERT (this->run != QSE_NULL);
|
||||||
qse_cstr_t x = { arg, len };
|
qse_cstr_t x = { arg, len };
|
||||||
qse_awk_rtx_seterror (this->run, code, line, &x);
|
qse_awk_rtx_seterror (this->run, (errnum_t)code, line, &x);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Awk::Run::setErrorWithMessage (
|
void Awk::Run::setErrorWithMessage (
|
||||||
ErrorCode code, size_t line, const char_t* msg)
|
ErrorCode code, size_t line, const char_t* msg)
|
||||||
{
|
{
|
||||||
QSE_ASSERT (this->run != QSE_NULL);
|
QSE_ASSERT (this->run != QSE_NULL);
|
||||||
qse_awk_rtx_seterrmsg (this->run, code, line, msg);
|
qse_awk_rtx_seterrmsg (this->run, (errnum_t)code, line, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Awk::Run::setGlobal (int id, long_t v)
|
int Awk::Run::setGlobal (int id, long_t v)
|
||||||
@ -1113,17 +1113,15 @@ void Awk::setError (ErrorCode code, size_t line, const char_t* arg, size_t len)
|
|||||||
if (awk != QSE_NULL)
|
if (awk != QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_cstr_t x = { arg, len };
|
qse_cstr_t x = { arg, len };
|
||||||
qse_awk_seterror (awk, code, line, &x);
|
qse_awk_seterror (awk, (errnum_t)code, line, &x);
|
||||||
retrieveError ();
|
retrieveError ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->errnum = code;
|
this->errnum = code;
|
||||||
this->errlin = line;
|
this->errlin = line;
|
||||||
|
qse_strxcpy (this->errmsg, QSE_COUNTOF(this->errmsg),
|
||||||
const char_t* es = qse_awk_geterrstr (
|
QSE_T("not ready to set an error message"));
|
||||||
QSE_NULL, (qse_awk_errnum_t)code);
|
|
||||||
qse_strxcpy (this->errmsg, QSE_COUNTOF(this->errmsg), es);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1131,7 +1129,7 @@ void Awk::setErrorWithMessage (ErrorCode code, size_t line, const char_t* msg)
|
|||||||
{
|
{
|
||||||
if (awk != QSE_NULL)
|
if (awk != QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_awk_seterrmsg (awk, code, line, msg);
|
qse_awk_seterrmsg (awk, (errnum_t)code, line, msg);
|
||||||
retrieveError ();
|
retrieveError ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1157,7 +1155,7 @@ void Awk::retrieveError ()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int num;
|
errnum_t num;
|
||||||
const char_t* msg;
|
const char_t* msg;
|
||||||
|
|
||||||
qse_awk_geterror (this->awk, &num, &this->errlin, &msg);
|
qse_awk_geterror (this->awk, &num, &this->errlin, &msg);
|
||||||
@ -1168,7 +1166,7 @@ void Awk::retrieveError ()
|
|||||||
|
|
||||||
void Awk::retrieveError (rtx_t* rtx)
|
void Awk::retrieveError (rtx_t* rtx)
|
||||||
{
|
{
|
||||||
int num;
|
errnum_t num;
|
||||||
const char_t* msg;
|
const char_t* msg;
|
||||||
|
|
||||||
qse_awk_rtx_geterror (rtx, &num, &this->errlin, &msg);
|
qse_awk_rtx_geterror (rtx, &num, &this->errlin, &msg);
|
||||||
@ -1195,6 +1193,9 @@ int Awk::open ()
|
|||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (awk);
|
xtn_t* xtn = (xtn_t*) QSE_XTN (awk);
|
||||||
xtn->awk = this;
|
xtn->awk = this;
|
||||||
|
|
||||||
|
dflerrstr = qse_awk_geterrstr (awk);
|
||||||
|
qse_awk_seterrstr (awk, xerrstr);
|
||||||
|
|
||||||
//functionMap = qse_map_open (
|
//functionMap = qse_map_open (
|
||||||
// this, 512, 70, freeFunctionMapValue, QSE_NULL,
|
// this, 512, 70, freeFunctionMapValue, QSE_NULL,
|
||||||
// qse_awk_getmmgr(awk));
|
// qse_awk_getmmgr(awk));
|
||||||
@ -1262,14 +1263,21 @@ Awk::size_t Awk::getMaxDepth (int id) const
|
|||||||
|
|
||||||
const Awk::char_t* Awk::getErrorString (ErrorCode num) const
|
const Awk::char_t* Awk::getErrorString (ErrorCode num) const
|
||||||
{
|
{
|
||||||
QSE_ASSERT (awk != QSE_NULL);
|
QSE_ASSERT (dflerrstr != QSE_NULL);
|
||||||
return qse_awk_geterrstr (awk, (qse_awk_errnum_t)num);
|
return dflerrstr (awk, (errnum_t)num);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Awk::setErrorString (ErrorCode num, const char_t* str)
|
const Awk::char_t* Awk::xerrstr (awk_t* a, errnum_t num) throw ()
|
||||||
{
|
{
|
||||||
QSE_ASSERT (awk != QSE_NULL);
|
Awk* awk = *(Awk**)QSE_XTN(a);
|
||||||
return qse_awk_seterrstr (awk, (qse_awk_errnum_t)num, str);
|
try
|
||||||
|
{
|
||||||
|
return awk->getErrorString ((ErrorCode)num);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
return awk->dflerrstr (a, num);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Awk::getWord (
|
int Awk::getWord (
|
||||||
@ -1735,7 +1743,7 @@ void Awk::onRunExit (rtx_t* run, val_t* ret, void* data)
|
|||||||
|
|
||||||
Argument x (r);
|
Argument x (r);
|
||||||
if (x.init (ret) == -1)
|
if (x.init (ret) == -1)
|
||||||
qse_awk_rtx_seterrnum (r->run, ERR_NOMEM);
|
qse_awk_rtx_seterrnum (r->run, (errnum_t)ERR_NOMEM);
|
||||||
else r->awk->onRunExit (*r, x);
|
else r->awk->onRunExit (*r, x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.c 151 2009-05-21 06:50:02Z hyunghwan.chung $
|
* $Id: awk.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -155,6 +155,7 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtn, qse_awk_prm_t* prm)
|
|||||||
awk->option = QSE_AWK_CLASSIC;
|
awk->option = QSE_AWK_CLASSIC;
|
||||||
awk->errnum = QSE_AWK_ENOERR;
|
awk->errnum = QSE_AWK_ENOERR;
|
||||||
awk->errlin = 0;
|
awk->errlin = 0;
|
||||||
|
awk->errstr = qse_awk_dflerrstr;
|
||||||
awk->stopall = QSE_FALSE;
|
awk->stopall = QSE_FALSE;
|
||||||
|
|
||||||
awk->parse.nlcls_max = 0;
|
awk->parse.nlcls_max = 0;
|
||||||
@ -243,15 +244,6 @@ int qse_awk_close (qse_awk_t* awk)
|
|||||||
|
|
||||||
qse_str_close (awk->token.name);
|
qse_str_close (awk->token.name);
|
||||||
|
|
||||||
for (i = 0; i < QSE_COUNTOF(awk->errstr); i++)
|
|
||||||
{
|
|
||||||
if (awk->errstr[i] != QSE_NULL)
|
|
||||||
{
|
|
||||||
QSE_AWK_FREE (awk, awk->errstr[i]);
|
|
||||||
awk->errstr[i] = QSE_NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 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 */
|
||||||
QSE_AWK_FREE (awk, awk);
|
QSE_AWK_FREE (awk, awk);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.h 151 2009-05-21 06:50:02Z hyunghwan.chung $
|
* $Id: awk.h 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -37,6 +37,7 @@ typedef struct qse_awk_tree_t qse_awk_tree_t;
|
|||||||
#include "run.h"
|
#include "run.h"
|
||||||
#include "rio.h"
|
#include "rio.h"
|
||||||
#include "val.h"
|
#include "val.h"
|
||||||
|
#include "err.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
#define QSE_AWK_MAX_GBLS 9999
|
#define QSE_AWK_MAX_GBLS 9999
|
||||||
@ -229,10 +230,11 @@ struct qse_awk_t
|
|||||||
} tmp;
|
} tmp;
|
||||||
|
|
||||||
/* housekeeping */
|
/* housekeeping */
|
||||||
int errnum;
|
qse_awk_errstr_t errstr;
|
||||||
|
|
||||||
|
qse_awk_errnum_t errnum;
|
||||||
qse_size_t errlin;
|
qse_size_t errlin;
|
||||||
qse_char_t errmsg[256];
|
qse_char_t errmsg[256];
|
||||||
qse_char_t* errstr[QSE_AWK_NUMERRNUM];
|
|
||||||
|
|
||||||
qse_bool_t stopall;
|
qse_bool_t stopall;
|
||||||
};
|
};
|
||||||
@ -365,7 +367,7 @@ struct qse_awk_rtx_t
|
|||||||
} max;
|
} max;
|
||||||
} depth;
|
} depth;
|
||||||
|
|
||||||
int errnum;
|
qse_awk_errnum_t errnum;
|
||||||
qse_size_t errlin;
|
qse_size_t errlin;
|
||||||
qse_char_t errmsg[256];
|
qse_char_t errmsg[256];
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: err.c 113 2009-03-25 14:53:10Z hyunghwan.chung $
|
* $Id: err.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licenawk under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#include "awk.h"
|
#include "awk.h"
|
||||||
|
|
||||||
static const qse_char_t* __geterrstr (int errnum)
|
const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum)
|
||||||
{
|
{
|
||||||
static const qse_char_t* errstr[] =
|
static const qse_char_t* errstr[] =
|
||||||
{
|
{
|
||||||
@ -26,7 +26,7 @@ static const qse_char_t* __geterrstr (int errnum)
|
|||||||
QSE_T("unknown error"),
|
QSE_T("unknown error"),
|
||||||
|
|
||||||
QSE_T("invalid parameter or data"),
|
QSE_T("invalid parameter or data"),
|
||||||
QSE_T("out of memory"),
|
QSE_T("insufficient memory"),
|
||||||
QSE_T("not supported"),
|
QSE_T("not supported"),
|
||||||
QSE_T("operation not allowed"),
|
QSE_T("operation not allowed"),
|
||||||
QSE_T("no such device"),
|
QSE_T("no such device"),
|
||||||
@ -64,8 +64,8 @@ static const qse_char_t* __geterrstr (int errnum)
|
|||||||
QSE_T("cannot unget character"),
|
QSE_T("cannot unget character"),
|
||||||
|
|
||||||
QSE_T("unexpected end of source"),
|
QSE_T("unexpected end of source"),
|
||||||
QSE_T("a comment not closed properly"),
|
QSE_T("a comment not cloawk properly"),
|
||||||
QSE_T("a string or a regular expression not closed"),
|
QSE_T("a string or a regular expression not cloawk"),
|
||||||
QSE_T("unexpected end of a regular expression"),
|
QSE_T("unexpected end of a regular expression"),
|
||||||
QSE_T("a left brace expected in place of '${0}'"),
|
QSE_T("a left brace expected in place of '${0}'"),
|
||||||
QSE_T("a left parenthesis expected in place of '${0}'"),
|
QSE_T("a left parenthesis expected in place of '${0}'"),
|
||||||
@ -164,37 +164,18 @@ static const qse_char_t* __geterrstr (int errnum)
|
|||||||
QSE_T("garbage after the regular expression")
|
QSE_T("garbage after the regular expression")
|
||||||
};
|
};
|
||||||
|
|
||||||
if (errnum >= 0 && errnum < QSE_COUNTOF(errstr))
|
return (errnum >= 0 && errnum < QSE_COUNTOF(errstr))?
|
||||||
{
|
errstr[errnum]: QSE_T("unknown error");
|
||||||
return errstr[errnum];
|
|
||||||
}
|
|
||||||
|
|
||||||
return QSE_T("unknown error");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_char_t* qse_awk_geterrstr (qse_awk_t* awk, qse_awk_errnum_t num)
|
qse_awk_errstr_t qse_awk_geterrstr (qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
if (awk != QSE_NULL &&
|
return awk->errstr;
|
||||||
awk->errstr[num] != QSE_NULL) return awk->errstr[num];
|
|
||||||
return __geterrstr (num);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_awk_seterrstr (
|
void qse_awk_seterrstr (qse_awk_t* awk, qse_awk_errstr_t errstr)
|
||||||
qse_awk_t* awk, qse_awk_errnum_t num, const qse_char_t* str)
|
|
||||||
{
|
{
|
||||||
qse_char_t* dup;
|
awk->errstr = errstr;
|
||||||
|
|
||||||
if (str == QSE_NULL) dup = QSE_NULL;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dup = QSE_AWK_STRDUP (awk, str);
|
|
||||||
if (dup == QSE_NULL) return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (awk->errstr[num] != QSE_NULL)
|
|
||||||
QSE_AWK_FREE (awk, awk->errstr[num]);
|
|
||||||
else awk->errstr[num] = dup;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_awk_geterrnum (qse_awk_t* awk)
|
int qse_awk_geterrnum (qse_awk_t* awk)
|
||||||
@ -209,13 +190,12 @@ qse_size_t qse_awk_geterrlin (qse_awk_t* awk)
|
|||||||
|
|
||||||
const qse_char_t* qse_awk_geterrmsg (qse_awk_t* awk)
|
const qse_char_t* qse_awk_geterrmsg (qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
if (awk->errmsg[0] == QSE_T('\0'))
|
return (awk->errmsg[0] == QSE_T('\0'))?
|
||||||
return qse_awk_geterrstr (awk, awk->errnum);
|
qse_awk_geterrstr(awk)(awk,awk->errnum): awk->errmsg;
|
||||||
return awk->errmsg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_geterror (
|
void qse_awk_geterror (
|
||||||
qse_awk_t* awk, int* errnum,
|
qse_awk_t* awk, qse_awk_errnum_t* errnum,
|
||||||
qse_size_t* errlin, const qse_char_t** errmsg)
|
qse_size_t* errlin, const qse_char_t** errmsg)
|
||||||
{
|
{
|
||||||
if (errnum != QSE_NULL) *errnum = awk->errnum;
|
if (errnum != QSE_NULL) *errnum = awk->errnum;
|
||||||
@ -223,12 +203,12 @@ void qse_awk_geterror (
|
|||||||
if (errmsg != QSE_NULL)
|
if (errmsg != QSE_NULL)
|
||||||
{
|
{
|
||||||
*errmsg = (awk->errmsg[0] == QSE_T('\0'))?
|
*errmsg = (awk->errmsg[0] == QSE_T('\0'))?
|
||||||
qse_awk_geterrstr (awk, awk->errnum):
|
qse_awk_geterrstr(awk)(awk,awk->errnum):
|
||||||
awk->errmsg;
|
awk->errmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_seterrnum (qse_awk_t* awk, int errnum)
|
void qse_awk_seterrnum (qse_awk_t* awk, qse_awk_errnum_t errnum)
|
||||||
{
|
{
|
||||||
awk->errnum = errnum;
|
awk->errnum = errnum;
|
||||||
awk->errlin = 0;
|
awk->errlin = 0;
|
||||||
@ -236,7 +216,7 @@ void qse_awk_seterrnum (qse_awk_t* awk, int errnum)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_seterrmsg (qse_awk_t* awk,
|
void qse_awk_seterrmsg (qse_awk_t* awk,
|
||||||
int errnum, qse_size_t errlin, const qse_char_t* errmsg)
|
qse_awk_errnum_t errnum, qse_size_t errlin, const qse_char_t* errmsg)
|
||||||
{
|
{
|
||||||
awk->errnum = errnum;
|
awk->errnum = errnum;
|
||||||
awk->errlin = errlin;
|
awk->errlin = errlin;
|
||||||
@ -244,7 +224,7 @@ void qse_awk_seterrmsg (qse_awk_t* awk,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_seterror (
|
void qse_awk_seterror (
|
||||||
qse_awk_t* awk, int errnum,
|
qse_awk_t* awk, qse_awk_errnum_t errnum,
|
||||||
qse_size_t errlin, const qse_cstr_t* errarg)
|
qse_size_t errlin, const qse_cstr_t* errarg)
|
||||||
{
|
{
|
||||||
const qse_char_t* errfmt;
|
const qse_char_t* errfmt;
|
||||||
@ -252,30 +232,28 @@ void qse_awk_seterror (
|
|||||||
awk->errnum = errnum;
|
awk->errnum = errnum;
|
||||||
awk->errlin = errlin;
|
awk->errlin = errlin;
|
||||||
|
|
||||||
errfmt = qse_awk_geterrstr (awk, errnum);
|
errfmt = qse_awk_geterrstr(awk)(awk,errnum);
|
||||||
QSE_ASSERT (errfmt != QSE_NULL);
|
QSE_ASSERT (errfmt != QSE_NULL);
|
||||||
qse_strxfncpy (awk->errmsg, QSE_COUNTOF(awk->errmsg), errfmt, errarg);
|
qse_strxfncpy (awk->errmsg, QSE_COUNTOF(awk->errmsg), errfmt, errarg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_awk_rtx_geterrnum (qse_awk_rtx_t* run)
|
int qse_awk_rtx_geterrnum (qse_awk_rtx_t* rtx)
|
||||||
{
|
{
|
||||||
return run->errnum;
|
return rtx->errnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_size_t qse_awk_rtx_geterrlin (qse_awk_rtx_t* run)
|
qse_size_t qse_awk_rtx_geterrlin (qse_awk_rtx_t* rtx)
|
||||||
{
|
{
|
||||||
return run->errlin;
|
return rtx->errlin;
|
||||||
}
|
}
|
||||||
|
|
||||||
const qse_char_t* qse_awk_rtx_geterrmsg (qse_awk_rtx_t* run)
|
const qse_char_t* qse_awk_rtx_geterrmsg (qse_awk_rtx_t* rtx)
|
||||||
{
|
{
|
||||||
if (run->errmsg[0] == QSE_T('\0'))
|
return (rtx->errmsg[0] == QSE_T('\0')) ?
|
||||||
return qse_awk_geterrstr (run->awk, run->errnum);
|
qse_awk_geterrstr(rtx->awk)(rtx->awk,rtx->errnum): rtx->errmsg;
|
||||||
|
|
||||||
return run->errmsg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_rtx_seterrnum (qse_awk_rtx_t* rtx, int errnum)
|
void qse_awk_rtx_seterrnum (qse_awk_rtx_t* rtx, qse_awk_errnum_t errnum)
|
||||||
{
|
{
|
||||||
rtx->errnum = errnum;
|
rtx->errnum = errnum;
|
||||||
rtx->errlin = 0;
|
rtx->errlin = 0;
|
||||||
@ -283,7 +261,7 @@ void qse_awk_rtx_seterrnum (qse_awk_rtx_t* rtx, int errnum)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_rtx_seterrmsg (qse_awk_rtx_t* rtx,
|
void qse_awk_rtx_seterrmsg (qse_awk_rtx_t* rtx,
|
||||||
int errnum, qse_size_t errlin, const qse_char_t* errmsg)
|
qse_awk_errnum_t errnum, qse_size_t errlin, const qse_char_t* errmsg)
|
||||||
{
|
{
|
||||||
rtx->errnum = errnum;
|
rtx->errnum = errnum;
|
||||||
rtx->errlin = errlin;
|
rtx->errlin = errlin;
|
||||||
@ -291,7 +269,7 @@ void qse_awk_rtx_seterrmsg (qse_awk_rtx_t* rtx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_rtx_geterror (
|
void qse_awk_rtx_geterror (
|
||||||
qse_awk_rtx_t* rtx, int* errnum,
|
qse_awk_rtx_t* rtx, qse_awk_errnum_t* errnum,
|
||||||
qse_size_t* errlin, const qse_char_t** errmsg)
|
qse_size_t* errlin, const qse_char_t** errmsg)
|
||||||
{
|
{
|
||||||
if (errnum != QSE_NULL) *errnum = rtx->errnum;
|
if (errnum != QSE_NULL) *errnum = rtx->errnum;
|
||||||
@ -299,12 +277,12 @@ void qse_awk_rtx_geterror (
|
|||||||
if (errmsg != QSE_NULL)
|
if (errmsg != QSE_NULL)
|
||||||
{
|
{
|
||||||
*errmsg = (rtx->errmsg[0] == QSE_T('\0'))?
|
*errmsg = (rtx->errmsg[0] == QSE_T('\0'))?
|
||||||
qse_awk_geterrstr (rtx->awk, rtx->errnum): rtx->errmsg;
|
qse_awk_geterrstr(rtx->awk)(rtx->awk,rtx->errnum): rtx->errmsg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_awk_rtx_seterror (
|
void qse_awk_rtx_seterror (
|
||||||
qse_awk_rtx_t* rtx, int errnum,
|
qse_awk_rtx_t* rtx, qse_awk_errnum_t errnum,
|
||||||
qse_size_t errlin, const qse_cstr_t* errarg)
|
qse_size_t errlin, const qse_cstr_t* errarg)
|
||||||
{
|
{
|
||||||
const qse_char_t* errfmt;
|
const qse_char_t* errfmt;
|
||||||
@ -312,7 +290,7 @@ void qse_awk_rtx_seterror (
|
|||||||
rtx->errnum = errnum;
|
rtx->errnum = errnum;
|
||||||
rtx->errlin = errlin;
|
rtx->errlin = errlin;
|
||||||
|
|
||||||
errfmt = qse_awk_geterrstr (rtx->awk, errnum);
|
errfmt = qse_awk_geterrstr(rtx->awk)(rtx->awk,errnum);
|
||||||
QSE_ASSERT (errfmt != QSE_NULL);
|
QSE_ASSERT (errfmt != QSE_NULL);
|
||||||
qse_strxfncpy (rtx->errmsg, QSE_COUNTOF(rtx->errmsg), errfmt, errarg);
|
qse_strxfncpy (rtx->errmsg, QSE_COUNTOF(rtx->errmsg), errfmt, errarg);
|
||||||
}
|
}
|
||||||
|
33
qse/lib/awk/err.h
Normal file
33
qse/lib/awk/err.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* $Id: misc.h 135 2009-05-15 13:31:43Z baconevi $
|
||||||
|
*
|
||||||
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _QSE_LIB_AWK_ERR_H_
|
||||||
|
#define _QSE_LIB_AWK_ERR_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: fnc.c 135 2009-05-15 13:31:43Z hyunghwan.chung $
|
* $Id: fnc.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -591,7 +591,7 @@ static int fnc_split (
|
|||||||
qse_size_t fs_len;
|
qse_size_t fs_len;
|
||||||
void* fs_rex = QSE_NULL;
|
void* fs_rex = QSE_NULL;
|
||||||
void* fs_rex_free = QSE_NULL;
|
void* fs_rex_free = QSE_NULL;
|
||||||
int errnum;
|
qse_awk_errnum_t errnum;
|
||||||
|
|
||||||
nargs = qse_awk_rtx_getnargs (run);
|
nargs = qse_awk_rtx_getnargs (run);
|
||||||
QSE_ASSERT (nargs >= 2 && nargs <= 3);
|
QSE_ASSERT (nargs >= 2 && nargs <= 3);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: misc.c 135 2009-05-15 13:31:43Z hyunghwan.chung $
|
* $Id: misc.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -834,7 +834,8 @@ qse_char_t* qse_awk_rtx_strxntokbyrex (
|
|||||||
qse_awk_rtx_t* rtx,
|
qse_awk_rtx_t* rtx,
|
||||||
const qse_char_t* str, qse_size_t len,
|
const qse_char_t* str, qse_size_t len,
|
||||||
const qse_char_t* substr, qse_size_t sublen,
|
const qse_char_t* substr, qse_size_t sublen,
|
||||||
void* rex, qse_char_t** tok, qse_size_t* tok_len, int* errnum)
|
void* rex, qse_char_t** tok, qse_size_t* tok_len,
|
||||||
|
qse_awk_errnum_t* errnum)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
qse_size_t i, left = sublen;
|
qse_size_t i, left = sublen;
|
||||||
@ -942,7 +943,8 @@ exit_loop:
|
|||||||
QSE_AWK_EINTERN)
|
QSE_AWK_EINTERN)
|
||||||
|
|
||||||
void* qse_awk_buildrex (
|
void* qse_awk_buildrex (
|
||||||
qse_awk_t* awk, const qse_char_t* ptn, qse_size_t len, int* errnum)
|
qse_awk_t* awk, const qse_char_t* ptn,
|
||||||
|
qse_size_t len, qse_awk_errnum_t* errnum)
|
||||||
{
|
{
|
||||||
qse_rex_errnum_t err;
|
qse_rex_errnum_t err;
|
||||||
void* p;
|
void* p;
|
||||||
@ -957,7 +959,7 @@ int qse_awk_matchrex (
|
|||||||
qse_awk_t* awk, void* code, int option,
|
qse_awk_t* awk, void* code, int option,
|
||||||
const qse_char_t* str, qse_size_t len,
|
const qse_char_t* str, qse_size_t len,
|
||||||
const qse_char_t* substr, qse_size_t sublen,
|
const qse_char_t* substr, qse_size_t sublen,
|
||||||
qse_cstr_t* match, int* errnum)
|
qse_cstr_t* match, qse_awk_errnum_t* errnum)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
qse_rex_errnum_t err;
|
qse_rex_errnum_t err;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: misc.h 135 2009-05-15 13:31:43Z hyunghwan.chung $
|
* $Id: misc.h 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -50,18 +50,22 @@ qse_char_t* qse_awk_rtx_strxntokbyrex (
|
|||||||
void* rex,
|
void* rex,
|
||||||
qse_char_t** tok,
|
qse_char_t** tok,
|
||||||
qse_size_t* tok_len,
|
qse_size_t* tok_len,
|
||||||
int* errnum
|
qse_awk_errnum_t* errnum
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
void* qse_awk_buildrex (
|
void* qse_awk_buildrex (
|
||||||
qse_awk_t* awk, const qse_char_t* ptn, qse_size_t len, int* errnum);
|
qse_awk_t* awk,
|
||||||
|
const qse_char_t* ptn,
|
||||||
|
qse_size_t len,
|
||||||
|
qse_awk_errnum_t* errnum
|
||||||
|
);
|
||||||
|
|
||||||
int qse_awk_matchrex (
|
int qse_awk_matchrex (
|
||||||
qse_awk_t* awk, void* code, int option,
|
qse_awk_t* awk, void* code, int option,
|
||||||
const qse_char_t* str, qse_size_t len,
|
const qse_char_t* str, qse_size_t len,
|
||||||
const qse_char_t* substr, qse_size_t sublen,
|
const qse_char_t* substr, qse_size_t sublen,
|
||||||
qse_cstr_t* match, int* errnum);
|
qse_cstr_t* match, qse_awk_errnum_t* errnum
|
||||||
|
);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: parse.c 113 2009-03-25 14:53:10Z hyunghwan.chung $
|
* $Id: parse.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -2927,7 +2927,7 @@ static qse_awk_nde_t* parse_primary (qse_awk_t* awk, qse_size_t line)
|
|||||||
else if (MATCH(awk,TOKEN_DIV))
|
else if (MATCH(awk,TOKEN_DIV))
|
||||||
{
|
{
|
||||||
qse_awk_nde_rex_t* nde;
|
qse_awk_nde_rex_t* nde;
|
||||||
int errnum;
|
qse_awk_errnum_t errnum;
|
||||||
|
|
||||||
/* the regular expression is tokenized here because
|
/* the regular expression is tokenized here because
|
||||||
* of the context-sensitivity of the slash symbol.
|
* of the context-sensitivity of the slash symbol.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: rec.c 135 2009-05-15 13:31:43Z hyunghwan.chung $
|
* $Id: rec.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ static int split_record (qse_awk_rtx_t* run)
|
|||||||
qse_awk_val_t* v, * fs;
|
qse_awk_val_t* v, * fs;
|
||||||
qse_char_t* fs_ptr, * fs_free;
|
qse_char_t* fs_ptr, * fs_free;
|
||||||
qse_size_t fs_len;
|
qse_size_t fs_len;
|
||||||
int errnum;
|
qse_awk_errnum_t errnum;
|
||||||
|
|
||||||
/* inrec should be cleared before split_record is called */
|
/* inrec should be cleared before split_record is called */
|
||||||
QSE_ASSERT (run->inrec.nflds == 0);
|
QSE_ASSERT (run->inrec.nflds == 0);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.c 135 2009-05-15 13:31:43Z hyunghwan.chung $
|
* $Id: run.c 171 2009-06-01 09:34:34Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -1486,6 +1486,7 @@ qse_awk_val_t* qse_awk_rtx_call (
|
|||||||
call.type = QSE_AWK_NDE_FUN;
|
call.type = QSE_AWK_NDE_FUN;
|
||||||
call.what.fun.name.ptr = (qse_char_t*)name;
|
call.what.fun.name.ptr = (qse_char_t*)name;
|
||||||
call.what.fun.name.len = qse_strlen(name);
|
call.what.fun.name.len = qse_strlen(name);
|
||||||
|
call.nargs = nargs;
|
||||||
|
|
||||||
/* find the function */
|
/* find the function */
|
||||||
pair = qse_map_search (
|
pair = qse_map_search (
|
||||||
@ -3059,7 +3060,8 @@ static int output_formatted (
|
|||||||
static qse_awk_val_t* eval_expression (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
static qse_awk_val_t* eval_expression (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||||
{
|
{
|
||||||
qse_awk_val_t* v;
|
qse_awk_val_t* v;
|
||||||
int n, errnum;
|
int n;
|
||||||
|
qse_awk_errnum_t errnum;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (run->exit_level >= EXIT_GLOBAL)
|
if (run->exit_level >= EXIT_GLOBAL)
|
||||||
@ -3267,7 +3269,7 @@ static qse_awk_val_t* do_assignment (
|
|||||||
qse_awk_rtx_t* run, qse_awk_nde_t* var, qse_awk_val_t* val)
|
qse_awk_rtx_t* run, qse_awk_nde_t* var, qse_awk_val_t* val)
|
||||||
{
|
{
|
||||||
qse_awk_val_t* ret;
|
qse_awk_val_t* ret;
|
||||||
int errnum;
|
qse_awk_errnum_t errnum;
|
||||||
|
|
||||||
if (var->type == QSE_AWK_NDE_NAMED ||
|
if (var->type == QSE_AWK_NDE_NAMED ||
|
||||||
var->type == QSE_AWK_NDE_GBL ||
|
var->type == QSE_AWK_NDE_GBL ||
|
||||||
@ -4729,7 +4731,8 @@ static qse_awk_val_t* eval_binop_match0 (
|
|||||||
qse_size_t lline, qse_size_t rline, int ret)
|
qse_size_t lline, qse_size_t rline, int ret)
|
||||||
{
|
{
|
||||||
qse_awk_val_t* res;
|
qse_awk_val_t* res;
|
||||||
int n, errnum;
|
int n;
|
||||||
|
qse_awk_errnum_t errnum;
|
||||||
void* rex_code;
|
void* rex_code;
|
||||||
|
|
||||||
if (right->type == QSE_AWK_VAL_REX)
|
if (right->type == QSE_AWK_VAL_REX)
|
||||||
|
@ -227,7 +227,7 @@ Sed::ssize_t Sed::xout (sed_t* s, io_cmd_t cmd, io_arg_t* arg) throw ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Sed::char_t* Sed::getErrorString (errnum_t num)
|
const Sed::char_t* Sed::getErrorString (errnum_t num) const
|
||||||
{
|
{
|
||||||
QSE_ASSERT (dflerrstr != QSE_NULL);
|
QSE_ASSERT (dflerrstr != QSE_NULL);
|
||||||
return dflerrstr (sed, num);
|
return dflerrstr (sed, num);
|
||||||
|
Loading…
Reference in New Issue
Block a user