changed the unary bitwise negation operator to a single tilde which overlaps with the regex match operator
This commit is contained in:
parent
04eb425326
commit
5438c8129c
@ -183,8 +183,7 @@ static void unset_intr_run (void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static qse_htb_walk_t print_awk_value (
|
static qse_htb_walk_t print_awk_value (qse_htb_t* map, qse_htb_pair_t* pair, void* arg)
|
||||||
qse_htb_t* map, qse_htb_pair_t* pair, void* arg)
|
|
||||||
{
|
{
|
||||||
qse_awk_rtx_t* rtx = (qse_awk_rtx_t*)arg;
|
qse_awk_rtx_t* rtx = (qse_awk_rtx_t*)arg;
|
||||||
qse_char_t* str;
|
qse_char_t* str;
|
||||||
@ -848,20 +847,29 @@ static void print_rtxerr (qse_awk_rtx_t* rtx)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct add_global_ctx_t
|
||||||
|
{
|
||||||
|
qse_awk_t* awk;
|
||||||
|
int fail;
|
||||||
|
};
|
||||||
|
|
||||||
qse_htb_walk_t add_global (qse_htb_t* map, qse_htb_pair_t* pair, void* arg)
|
qse_htb_walk_t add_global (qse_htb_t* map, qse_htb_pair_t* pair, void* arg)
|
||||||
{
|
{
|
||||||
qse_awk_t* awk = (qse_awk_t*)arg;
|
struct add_global_ctx_t* ctx = (struct add_global_ctx_t*)arg;
|
||||||
struct gvmv_t* gvmv = (struct gvmv_t*)QSE_HTB_VPTR(pair);
|
struct gvmv_t* gvmv = (struct gvmv_t*)QSE_HTB_VPTR(pair);
|
||||||
|
|
||||||
/* the key was inserted to the table with a null at the end
|
/* the key was inserted to the table with a null at the end
|
||||||
* and the key length was even incremetned for that.
|
* and the key length was even incremetned for that.
|
||||||
* so i can pass the pointer without other adjustments. */
|
* so i can pass the pointer without other adjustments. */
|
||||||
gvmv->idx = qse_awk_addgbl (awk, QSE_HTB_KPTR(pair));
|
gvmv->idx = qse_awk_addgbl(ctx->awk, QSE_HTB_KPTR(pair));
|
||||||
if (gvmv->idx <= -1) return QSE_HTB_WALK_STOP;
|
if (gvmv->idx <= -1)
|
||||||
|
{
|
||||||
|
ctx->fail = 1;
|
||||||
|
return QSE_HTB_WALK_STOP;
|
||||||
|
}
|
||||||
return QSE_HTB_WALK_FORWARD;
|
return QSE_HTB_WALK_FORWARD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void* xma_alloc (qse_mmgr_t* mmgr, qse_size_t size)
|
static void* xma_alloc (qse_mmgr_t* mmgr, qse_size_t size)
|
||||||
{
|
{
|
||||||
return qse_xma_alloc (mmgr->ctx, size);
|
return qse_xma_alloc (mmgr->ctx, size);
|
||||||
@ -940,6 +948,7 @@ static int awk_main (int argc, qse_char_t* argv[])
|
|||||||
qse_awk_val_t* retv;
|
qse_awk_val_t* retv;
|
||||||
int i;
|
int i;
|
||||||
struct arg_t arg;
|
struct arg_t arg;
|
||||||
|
struct add_global_ctx_t agctx;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
#if defined(ENABLE_CALLBACK)
|
#if defined(ENABLE_CALLBACK)
|
||||||
@ -1021,16 +1030,16 @@ static int awk_main (int argc, qse_char_t* argv[])
|
|||||||
qse_awk_setopt (awk, QSE_AWK_DEPTH_INCLUDE, &tmp);
|
qse_awk_setopt (awk, QSE_AWK_DEPTH_INCLUDE, &tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_awk_seterrnum (awk, QSE_AWK_ENOERR, QSE_NULL);
|
agctx.awk = awk;
|
||||||
qse_htb_walk (arg.gvm, add_global, awk);
|
agctx.fail = 0;
|
||||||
if (qse_awk_geterrnum(awk) != QSE_AWK_ENOERR)
|
qse_htb_walk (arg.gvm, add_global, &agctx);
|
||||||
|
if (agctx.fail)
|
||||||
{
|
{
|
||||||
print_awkerr (awk);
|
print_awkerr (awk);
|
||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qse_awk_parsestd (awk, arg.psin,
|
if (qse_awk_parsestd(awk, arg.psin, ((arg.osf == QSE_NULL)? QSE_NULL: &psout)) <= -1)
|
||||||
((arg.osf == QSE_NULL)? QSE_NULL: &psout)) <= -1)
|
|
||||||
{
|
{
|
||||||
print_awkerr (awk);
|
print_awkerr (awk);
|
||||||
goto oops;
|
goto oops;
|
||||||
|
@ -75,7 +75,7 @@ enum tok_t
|
|||||||
TOK_LT,
|
TOK_LT,
|
||||||
TOK_GE,
|
TOK_GE,
|
||||||
TOK_GT,
|
TOK_GT,
|
||||||
TOK_MA, /* ~ - match */
|
TOK_TILDE, /* ~ - match or unary bitwise negation*/
|
||||||
TOK_NM, /* !~ - not match */
|
TOK_NM, /* !~ - not match */
|
||||||
TOK_LNOT, /* ! - logical negation */
|
TOK_LNOT, /* ! - logical negation */
|
||||||
TOK_PLUS,
|
TOK_PLUS,
|
||||||
@ -91,7 +91,6 @@ enum tok_t
|
|||||||
TOK_BOR,
|
TOK_BOR,
|
||||||
TOK_BXOR, /* ^^ - bitwise-xor */
|
TOK_BXOR, /* ^^ - bitwise-xor */
|
||||||
TOK_BAND,
|
TOK_BAND,
|
||||||
TOK_BNOT, /* ~~ - used for unary bitwise-not */
|
|
||||||
TOK_RS,
|
TOK_RS,
|
||||||
TOK_LS,
|
TOK_LS,
|
||||||
TOK_IN,
|
TOK_IN,
|
||||||
@ -3993,7 +3992,7 @@ static qse_awk_nde_t* parse_regex_match (qse_awk_t* awk, const qse_awk_loc_t* xl
|
|||||||
{
|
{
|
||||||
static binmap_t map[] =
|
static binmap_t map[] =
|
||||||
{
|
{
|
||||||
{ TOK_MA, QSE_AWK_BINOP_MA },
|
{ TOK_TILDE, QSE_AWK_BINOP_MA },
|
||||||
{ TOK_NM, QSE_AWK_BINOP_NM },
|
{ TOK_NM, QSE_AWK_BINOP_NM },
|
||||||
{ TOK_EOF, 0 },
|
{ TOK_EOF, 0 },
|
||||||
};
|
};
|
||||||
@ -4096,7 +4095,7 @@ static qse_awk_nde_t* parse_concat (qse_awk_t* awk, const qse_awk_loc_t* xloc)
|
|||||||
if (MATCH(awk,TOK_LPAREN) || MATCH(awk,TOK_DOLLAR) ||
|
if (MATCH(awk,TOK_LPAREN) || MATCH(awk,TOK_DOLLAR) ||
|
||||||
/* unary operators */
|
/* unary operators */
|
||||||
MATCH(awk,TOK_PLUS) || MATCH(awk,TOK_MINUS) ||
|
MATCH(awk,TOK_PLUS) || MATCH(awk,TOK_MINUS) ||
|
||||||
MATCH(awk,TOK_LNOT) || MATCH(awk,TOK_BNOT) ||
|
MATCH(awk,TOK_LNOT) || /*MATCH(awk,TOK_TILDE) ||*/
|
||||||
/* increment operators */
|
/* increment operators */
|
||||||
MATCH(awk,TOK_PLUSPLUS) || MATCH(awk,TOK_MINUSMINUS) ||
|
MATCH(awk,TOK_PLUSPLUS) || MATCH(awk,TOK_MINUSMINUS) ||
|
||||||
((awk->opt.trait & QSE_AWK_TOLERANT) &&
|
((awk->opt.trait & QSE_AWK_TOLERANT) &&
|
||||||
@ -4166,7 +4165,7 @@ static qse_awk_nde_t* parse_unary (qse_awk_t* awk, const qse_awk_loc_t* xloc)
|
|||||||
opcode = (MATCH(awk,TOK_PLUS))? QSE_AWK_UNROP_PLUS:
|
opcode = (MATCH(awk,TOK_PLUS))? QSE_AWK_UNROP_PLUS:
|
||||||
(MATCH(awk,TOK_MINUS))? QSE_AWK_UNROP_MINUS:
|
(MATCH(awk,TOK_MINUS))? QSE_AWK_UNROP_MINUS:
|
||||||
(MATCH(awk,TOK_LNOT))? QSE_AWK_UNROP_LNOT:
|
(MATCH(awk,TOK_LNOT))? QSE_AWK_UNROP_LNOT:
|
||||||
(MATCH(awk,TOK_BNOT))? QSE_AWK_UNROP_BNOT: -1;
|
(MATCH(awk,TOK_TILDE))? QSE_AWK_UNROP_BNOT: -1;
|
||||||
|
|
||||||
/*if (opcode <= -1) return parse_increment (awk);*/
|
/*if (opcode <= -1) return parse_increment (awk);*/
|
||||||
if (opcode <= -1) return parse_exponent (awk, xloc);
|
if (opcode <= -1) return parse_exponent (awk, xloc);
|
||||||
@ -4313,7 +4312,7 @@ static qse_awk_nde_t* parse_unary_exp (qse_awk_t* awk, const qse_awk_loc_t* xloc
|
|||||||
opcode = (MATCH(awk,TOK_PLUS))? QSE_AWK_UNROP_PLUS:
|
opcode = (MATCH(awk,TOK_PLUS))? QSE_AWK_UNROP_PLUS:
|
||||||
(MATCH(awk,TOK_MINUS))? QSE_AWK_UNROP_MINUS:
|
(MATCH(awk,TOK_MINUS))? QSE_AWK_UNROP_MINUS:
|
||||||
(MATCH(awk,TOK_LNOT))? QSE_AWK_UNROP_LNOT:
|
(MATCH(awk,TOK_LNOT))? QSE_AWK_UNROP_LNOT:
|
||||||
(MATCH(awk,TOK_BNOT))? QSE_AWK_UNROP_BNOT: -1;
|
(MATCH(awk,TOK_TILDE))? QSE_AWK_UNROP_BNOT: -1;
|
||||||
|
|
||||||
if (opcode <= -1) return parse_increment (awk, xloc);
|
if (opcode <= -1) return parse_increment (awk, xloc);
|
||||||
|
|
||||||
@ -6333,8 +6332,7 @@ static int get_symbols (qse_awk_t* awk, qse_cint_t c, qse_awk_tok_t* tok)
|
|||||||
{ QSE_T("%%"), 2, TOK_CONCAT, 0 },
|
{ QSE_T("%%"), 2, TOK_CONCAT, 0 },
|
||||||
{ QSE_T("%="), 2, TOK_MOD_ASSN, 0 },
|
{ QSE_T("%="), 2, TOK_MOD_ASSN, 0 },
|
||||||
{ QSE_T("%"), 1, TOK_MOD, 0 },
|
{ QSE_T("%"), 1, TOK_MOD, 0 },
|
||||||
{ QSE_T("~~"), 2, TOK_BNOT, 0 },
|
{ QSE_T("~"), 1, TOK_TILDE, 0 },
|
||||||
{ QSE_T("~"), 1, TOK_MA, 0 },
|
|
||||||
{ QSE_T("("), 1, TOK_LPAREN, 0 },
|
{ QSE_T("("), 1, TOK_LPAREN, 0 },
|
||||||
{ QSE_T(")"), 1, TOK_RPAREN, 0 },
|
{ QSE_T(")"), 1, TOK_RPAREN, 0 },
|
||||||
{ QSE_T("{"), 1, TOK_LBRACE, 0 },
|
{ QSE_T("{"), 1, TOK_LBRACE, 0 },
|
||||||
|
@ -86,8 +86,7 @@ static const qse_char_t* unrop_str[] =
|
|||||||
QSE_T("+"),
|
QSE_T("+"),
|
||||||
QSE_T("-"),
|
QSE_T("-"),
|
||||||
QSE_T("!"),
|
QSE_T("!"),
|
||||||
QSE_T("~~"),
|
QSE_T("~")
|
||||||
QSE_T("`")
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const qse_char_t* incop_str[] =
|
static const qse_char_t* incop_str[] =
|
||||||
|
Loading…
Reference in New Issue
Block a user