awk: make ltclass ("last token class") local to next_token()
function old new delta next_token 784 790 +6 next_input_file 219 216 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 6/-3) Total: 3 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
af0172369e
commit
832cb4fcb9
@ -556,7 +556,6 @@ struct globals2 {
|
|||||||
|
|
||||||
uint32_t next_token__save_tclass;
|
uint32_t next_token__save_tclass;
|
||||||
uint32_t next_token__save_info;
|
uint32_t next_token__save_info;
|
||||||
uint32_t next_token__ltclass;
|
|
||||||
smallint next_token__concat_inserted;
|
smallint next_token__concat_inserted;
|
||||||
|
|
||||||
smallint next_input_file__files_happen;
|
smallint next_input_file__files_happen;
|
||||||
@ -615,7 +614,7 @@ struct globals2 {
|
|||||||
#define rsplitter (G.rsplitter )
|
#define rsplitter (G.rsplitter )
|
||||||
#define INIT_G() do { \
|
#define INIT_G() do { \
|
||||||
SET_PTR_TO_GLOBALS((char*)xzalloc(sizeof(G1)+sizeof(G)) + sizeof(G1)); \
|
SET_PTR_TO_GLOBALS((char*)xzalloc(sizeof(G1)+sizeof(G)) + sizeof(G1)); \
|
||||||
G.next_token__ltclass = TC_OPTERM; \
|
t_tclass = TC_OPTERM; \
|
||||||
G.evaluate__seed = 1; \
|
G.evaluate__seed = 1; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@ -1102,13 +1101,13 @@ static uint32_t next_token(uint32_t expected)
|
|||||||
#define concat_inserted (G.next_token__concat_inserted)
|
#define concat_inserted (G.next_token__concat_inserted)
|
||||||
#define save_tclass (G.next_token__save_tclass)
|
#define save_tclass (G.next_token__save_tclass)
|
||||||
#define save_info (G.next_token__save_info)
|
#define save_info (G.next_token__save_info)
|
||||||
/* Initialized to TC_OPTERM: */
|
|
||||||
#define ltclass (G.next_token__ltclass)
|
|
||||||
|
|
||||||
char *p, *s;
|
char *p, *s;
|
||||||
const char *tl;
|
const char *tl;
|
||||||
uint32_t tc;
|
|
||||||
const uint32_t *ti;
|
const uint32_t *ti;
|
||||||
|
uint32_t tc, last_token_class;
|
||||||
|
|
||||||
|
last_token_class = t_tclass; /* t_tclass is initialized to TC_OPTERM */
|
||||||
|
|
||||||
debug_printf_parse("%s() expected(%x):", __func__, expected);
|
debug_printf_parse("%s() expected(%x):", __func__, expected);
|
||||||
debug_parse_print_tc(expected);
|
debug_parse_print_tc(expected);
|
||||||
@ -1245,15 +1244,15 @@ static uint32_t next_token(uint32_t expected)
|
|||||||
g_pos = p;
|
g_pos = p;
|
||||||
|
|
||||||
/* skipping newlines in some cases */
|
/* skipping newlines in some cases */
|
||||||
if ((ltclass & TC_NOTERM) && (tc & TC_NEWLINE))
|
if ((last_token_class & TC_NOTERM) && (tc & TC_NEWLINE))
|
||||||
goto readnext;
|
goto readnext;
|
||||||
|
|
||||||
/* insert concatenation operator when needed */
|
/* insert concatenation operator when needed */
|
||||||
debug_printf_parse("%s: concat_inserted if all nonzero: %x %x %x %x\n", __func__,
|
debug_printf_parse("%s: concat_inserted if all nonzero: %x %x %x %x\n", __func__,
|
||||||
(ltclass & TC_CONCAT1), (tc & TC_CONCAT2), (expected & TC_BINOP),
|
(last_token_class & TC_CONCAT1), (tc & TC_CONCAT2), (expected & TC_BINOP),
|
||||||
!(ltclass == TC_LENGTH && tc == TC_SEQSTART));
|
!(last_token_class == TC_LENGTH && tc == TC_SEQSTART));
|
||||||
if ((ltclass & TC_CONCAT1) && (tc & TC_CONCAT2) && (expected & TC_BINOP)
|
if ((last_token_class & TC_CONCAT1) && (tc & TC_CONCAT2) && (expected & TC_BINOP)
|
||||||
&& !(ltclass == TC_LENGTH && tc == TC_SEQSTART) /* but not for "length(..." */
|
&& !(last_token_class == TC_LENGTH && tc == TC_SEQSTART) /* but not for "length(..." */
|
||||||
) {
|
) {
|
||||||
concat_inserted = TRUE;
|
concat_inserted = TRUE;
|
||||||
save_tclass = tc;
|
save_tclass = tc;
|
||||||
@ -1267,7 +1266,7 @@ static uint32_t next_token(uint32_t expected)
|
|||||||
}
|
}
|
||||||
/* Are we ready for this? */
|
/* Are we ready for this? */
|
||||||
if (!(t_tclass & expected)) {
|
if (!(t_tclass & expected)) {
|
||||||
syntax_error((ltclass & (TC_NEWLINE | TC_EOF)) ?
|
syntax_error((last_token_class & (TC_NEWLINE | TC_EOF)) ?
|
||||||
EMSG_UNEXP_EOS : EMSG_UNEXP_TOKEN);
|
EMSG_UNEXP_EOS : EMSG_UNEXP_TOKEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1275,13 +1274,10 @@ static uint32_t next_token(uint32_t expected)
|
|||||||
debug_parse_print_tc(t_tclass);
|
debug_parse_print_tc(t_tclass);
|
||||||
debug_printf_parse("\n");
|
debug_printf_parse("\n");
|
||||||
|
|
||||||
ltclass = t_tclass;
|
|
||||||
|
|
||||||
return t_tclass;
|
return t_tclass;
|
||||||
#undef concat_inserted
|
#undef concat_inserted
|
||||||
#undef save_tclass
|
#undef save_tclass
|
||||||
#undef save_info
|
#undef save_info
|
||||||
#undef ltclass
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rollback_token(void)
|
static void rollback_token(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user