deleted the isnil operator and added the backquote operator to mean notnil

This commit is contained in:
2012-12-19 14:11:07 +00:00
parent 092a8106b2
commit 0dc6c0863e
10 changed files with 113 additions and 92 deletions

View File

@ -69,8 +69,8 @@ enum tok_t
TOK_GT,
TOK_MA, /* match */
TOK_NM, /* not match */
TOK_ND, /* not defined, is-nil */
TOK_LNOT, /* logical negation ! */
TOK_BQUOTE, /* ` */
TOK_PLUS,
TOK_PLUSPLUS,
TOK_MINUS,
@ -3730,7 +3730,7 @@ static qse_awk_nde_t* parse_concat (qse_awk_t* awk, const qse_awk_loc_t* xloc)
/* unary operators */
MATCH(awk,TOK_PLUS) || MATCH(awk,TOK_MINUS) ||
MATCH(awk,TOK_LNOT) || MATCH(awk,TOK_BNOT) ||
MATCH(awk,TOK_ND) ||
MATCH(awk,TOK_COLON) ||
/* increment operators */
MATCH(awk,TOK_PLUSPLUS) || MATCH(awk,TOK_MINUSMINUS) ||
((awk->opt.trait & QSE_AWK_TOLERANT) &&
@ -3801,7 +3801,7 @@ static qse_awk_nde_t* parse_unary (qse_awk_t* awk, const qse_awk_loc_t* xloc)
(MATCH(awk,TOK_MINUS))? QSE_AWK_UNROP_MINUS:
(MATCH(awk,TOK_LNOT))? QSE_AWK_UNROP_LNOT:
(MATCH(awk,TOK_BNOT))? QSE_AWK_UNROP_BNOT:
(MATCH(awk,TOK_ND))? QSE_AWK_UNROP_ND: -1;
(MATCH(awk,TOK_BQUOTE))? QSE_AWK_UNROP_DEF: -1;
/*if (opcode <= -1) return parse_increment (awk);*/
if (opcode <= -1) return parse_exponent (awk, xloc);
@ -3949,7 +3949,7 @@ static qse_awk_nde_t* parse_unary_exp (qse_awk_t* awk, const qse_awk_loc_t* xloc
(MATCH(awk,TOK_MINUS))? QSE_AWK_UNROP_MINUS:
(MATCH(awk,TOK_LNOT))? QSE_AWK_UNROP_LNOT:
(MATCH(awk,TOK_BNOT))? QSE_AWK_UNROP_BNOT:
(MATCH(awk,TOK_ND))? QSE_AWK_UNROP_ND: -1;
(MATCH(awk,TOK_BQUOTE))? QSE_AWK_UNROP_DEF: -1;
if (opcode <= -1) return parse_increment (awk, xloc);
@ -5760,7 +5760,6 @@ static int get_symbols (qse_awk_t* awk, qse_cint_t c, qse_awk_tok_t* tok)
{ QSE_T("!=="), 3, TOK_TNE, 0 },
{ QSE_T("!="), 2, TOK_NE, 0 },
{ QSE_T("!~"), 2, TOK_NM, 0 },
{ QSE_T("!:"), 2, TOK_ND, 0 },
{ QSE_T("!"), 1, TOK_LNOT, 0 },
{ QSE_T(">>="), 3, TOK_RS_ASSN, 0 },
{ QSE_T(">>"), 2, TOK_RS, 0 },
@ -5813,6 +5812,7 @@ static int get_symbols (qse_awk_t* awk, qse_cint_t c, qse_awk_tok_t* tok)
{ QSE_T(":"), 1, TOK_COLON, 0 },
{ QSE_T("?"), 1, TOK_QUEST, 0 },
{ QSE_T("@"), 1, TOK_ATSIGN, 0 },
{ QSE_T("`"), 1, TOK_BQUOTE, 0 },
{ QSE_NULL, 0, 0, 0 }
};