awk: code shrink
function old new delta parse_expr 948 945 -3 chain_expr 65 62 -3 chain_group 655 649 -6 parse_program 310 303 -7 rollback_token 10 - -10 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 0/4 up/down: 0/-29) Total: -29 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
4f27503a1e
commit
216d3d8ad9
@ -1300,7 +1300,7 @@ static uint32_t next_token(uint32_t expected)
|
||||
#undef save_info
|
||||
}
|
||||
|
||||
static void rollback_token(void)
|
||||
static ALWAYS_INLINE void rollback_token(void)
|
||||
{
|
||||
t_rollback = TRUE;
|
||||
}
|
||||
@ -1474,14 +1474,14 @@ static node *parse_expr(uint32_t term_tc)
|
||||
|
||||
case TC_LENGTH:
|
||||
debug_printf_parse("%s: TC_LENGTH\n", __func__);
|
||||
next_token(TC_LPAREN /* length(...) */
|
||||
tc = next_token(TC_LPAREN /* length(...) */
|
||||
| TS_OPTERM /* length; (or newline)*/
|
||||
| TC_GRPTERM /* length } */
|
||||
| TC_BINOPX /* length <op> NUM */
|
||||
| TC_COMMA /* print length, 1 */
|
||||
);
|
||||
rollback_token();
|
||||
if (t_tclass & TC_LPAREN) {
|
||||
if (tc & TC_LPAREN) {
|
||||
/* It was a "(" token. Handle just like TC_BUILTIN */
|
||||
cn->l.n = parse_lrparen_list();
|
||||
}
|
||||
@ -1563,19 +1563,23 @@ static void chain_group(void)
|
||||
|
||||
if (c & TC_GRPSTART) {
|
||||
debug_printf_parse("%s: TC_GRPSTART\n", __func__);
|
||||
while (next_token(TS_GRPSEQ | TC_GRPTERM) != TC_GRPTERM) {
|
||||
while ((c = next_token(TS_GRPSEQ | TC_GRPTERM)) != TC_GRPTERM) {
|
||||
debug_printf_parse("%s: !TC_GRPTERM\n", __func__);
|
||||
if (t_tclass & TC_NEWLINE)
|
||||
if (c & TC_NEWLINE)
|
||||
continue;
|
||||
rollback_token();
|
||||
chain_group();
|
||||
}
|
||||
debug_printf_parse("%s: TC_GRPTERM\n", __func__);
|
||||
} else if (c & (TS_OPSEQ | TS_OPTERM)) {
|
||||
return;
|
||||
}
|
||||
if (c & (TS_OPSEQ | TS_OPTERM)) {
|
||||
debug_printf_parse("%s: TS_OPSEQ | TS_OPTERM\n", __func__);
|
||||
rollback_token();
|
||||
chain_expr(OC_EXEC | Vx);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
{
|
||||
/* TS_STATEMNT */
|
||||
debug_printf_parse("%s: TS_STATEMNT(?)\n", __func__);
|
||||
switch (t_info & OPCLSMASK) {
|
||||
|
Loading…
Reference in New Issue
Block a user