bc: simplify bc_parse_expr_empty_ok()
function old new delta bc_parse_expr_empty_ok 1819 1810 -9 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
bb116031a0
commit
d0238d83f0
@ -591,7 +591,7 @@ enum {
|
|||||||
+ (EXBITS(0,1,1,0,0,0,0,0) << (7*8)) // 56: return scale sqrt while
|
+ (EXBITS(0,1,1,0,0,0,0,0) << (7*8)) // 56: return scale sqrt while
|
||||||
#undef EXBITS
|
#undef EXBITS
|
||||||
};
|
};
|
||||||
static ALWAYS_INLINE long bc_parse_exprs(unsigned i)
|
static ALWAYS_INLINE long lex_allowed_in_bc_expr(unsigned i)
|
||||||
{
|
{
|
||||||
#if ULONG_MAX > 0xffffffff
|
#if ULONG_MAX > 0xffffffff
|
||||||
// 64-bit version (will not work correctly for 32-bit longs!)
|
// 64-bit version (will not work correctly for 32-bit longs!)
|
||||||
@ -4662,7 +4662,6 @@ static BC_STATUS zbc_parse_stmt_or_funcdef(BcParse *p)
|
|||||||
static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags)
|
static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags)
|
||||||
{
|
{
|
||||||
BcInst prev = XC_INST_PRINT;
|
BcInst prev = XC_INST_PRINT;
|
||||||
BcLexType top, t = p->l.lex;
|
|
||||||
size_t nexprs = 0, ops_bgn = p->ops.len;
|
size_t nexprs = 0, ops_bgn = p->ops.len;
|
||||||
unsigned nparens, nrelops;
|
unsigned nparens, nrelops;
|
||||||
bool paren_first, paren_expr, rprn, get_token, assign, bin_last;
|
bool paren_first, paren_expr, rprn, get_token, assign, bin_last;
|
||||||
@ -4673,10 +4672,15 @@ static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags)
|
|||||||
paren_expr = rprn = get_token = assign = false;
|
paren_expr = rprn = get_token = assign = false;
|
||||||
bin_last = true;
|
bin_last = true;
|
||||||
|
|
||||||
for (; bc_parse_exprs(t); t = p->l.lex) {
|
for (;;) {
|
||||||
BcStatus s = BC_STATUS_SUCCESS;
|
BcStatus s;
|
||||||
|
BcLexType t = p->l.lex;
|
||||||
|
|
||||||
|
if (!lex_allowed_in_bc_expr(t))
|
||||||
|
break;
|
||||||
|
|
||||||
dbg_lex("%s:%d t:%d", __func__, __LINE__, t);
|
dbg_lex("%s:%d t:%d", __func__, __LINE__, t);
|
||||||
|
s = BC_STATUS_SUCCESS;
|
||||||
switch (t) {
|
switch (t) {
|
||||||
case BC_LEX_OP_INC:
|
case BC_LEX_OP_INC:
|
||||||
case BC_LEX_OP_DEC:
|
case BC_LEX_OP_DEC:
|
||||||
@ -4825,7 +4829,7 @@ static BcStatus bc_parse_expr_empty_ok(BcParse *p, uint8_t flags)
|
|||||||
exit_loop:
|
exit_loop:
|
||||||
|
|
||||||
while (p->ops.len > ops_bgn) {
|
while (p->ops.len > ops_bgn) {
|
||||||
top = BC_PARSE_TOP_OP(p);
|
BcLexType top = BC_PARSE_TOP_OP(p);
|
||||||
assign = (top >= BC_LEX_OP_ASSIGN_POWER && top <= BC_LEX_OP_ASSIGN);
|
assign = (top >= BC_LEX_OP_ASSIGN_POWER && top <= BC_LEX_OP_ASSIGN);
|
||||||
|
|
||||||
if (top == BC_LEX_LPAREN || top == BC_LEX_RPAREN)
|
if (top == BC_LEX_LPAREN || top == BC_LEX_RPAREN)
|
||||||
|
Loading…
Reference in New Issue
Block a user