awk: rename GRPSTART/END to L/RBRACE, no code changes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b705bf5539
commit
717200eb43
@ -211,8 +211,8 @@ typedef struct tsplitter_s {
|
|||||||
#define TC_PIPE (1 << 9) /* input redirection pipe | */
|
#define TC_PIPE (1 << 9) /* input redirection pipe | */
|
||||||
#define TC_UOPPRE2 (1 << 10) /* unary prefix operator + - ! */
|
#define TC_UOPPRE2 (1 << 10) /* unary prefix operator + - ! */
|
||||||
#define TC_ARRTERM (1 << 11) /* ] */
|
#define TC_ARRTERM (1 << 11) /* ] */
|
||||||
#define TC_GRPSTART (1 << 12) /* { */
|
#define TC_LBRACE (1 << 12) /* { */
|
||||||
#define TC_GRPTERM (1 << 13) /* } */
|
#define TC_RBRACE (1 << 13) /* } */
|
||||||
#define TC_SEMICOL (1 << 14) /* ; */
|
#define TC_SEMICOL (1 << 14) /* ; */
|
||||||
#define TC_NEWLINE (1 << 15)
|
#define TC_NEWLINE (1 << 15)
|
||||||
#define TC_STATX (1 << 16) /* ctl statement (for, next...) */
|
#define TC_STATX (1 << 16) /* ctl statement (for, next...) */
|
||||||
@ -250,8 +250,8 @@ if ((n) & TC_COMMA ) debug_printf_parse(" COMMA" ); \
|
|||||||
if ((n) & TC_PIPE ) debug_printf_parse(" PIPE" ); \
|
if ((n) & TC_PIPE ) debug_printf_parse(" PIPE" ); \
|
||||||
if ((n) & TC_UOPPRE2 ) debug_printf_parse(" UOPPRE2" ); \
|
if ((n) & TC_UOPPRE2 ) debug_printf_parse(" UOPPRE2" ); \
|
||||||
if ((n) & TC_ARRTERM ) debug_printf_parse(" ARRTERM" ); \
|
if ((n) & TC_ARRTERM ) debug_printf_parse(" ARRTERM" ); \
|
||||||
if ((n) & TC_GRPSTART) debug_printf_parse(" GRPSTART"); \
|
if ((n) & TC_LBRACE ) debug_printf_parse(" LBRACE" ); \
|
||||||
if ((n) & TC_GRPTERM ) debug_printf_parse(" GRPTERM" ); \
|
if ((n) & TC_RBRACE ) debug_printf_parse(" RBRACE" ); \
|
||||||
if ((n) & TC_SEMICOL ) debug_printf_parse(" SEMICOL" ); \
|
if ((n) & TC_SEMICOL ) debug_printf_parse(" SEMICOL" ); \
|
||||||
if ((n) & TC_NEWLINE ) debug_printf_parse(" NEWLINE" ); \
|
if ((n) & TC_NEWLINE ) debug_printf_parse(" NEWLINE" ); \
|
||||||
if ((n) & TC_STATX ) debug_printf_parse(" STATX" ); \
|
if ((n) & TC_STATX ) debug_printf_parse(" STATX" ); \
|
||||||
@ -291,13 +291,13 @@ if ((n) & TC_NUMBER ) debug_printf_parse(" NUMBER" ); \
|
|||||||
| TC_FUNCDECL | TC_BEGIN | TC_END)
|
| TC_FUNCDECL | TC_BEGIN | TC_END)
|
||||||
|
|
||||||
/* discard newlines after these */
|
/* discard newlines after these */
|
||||||
#define TS_NOTERM (TC_COMMA | TC_GRPSTART | TC_GRPTERM \
|
#define TS_NOTERM (TC_COMMA | TC_LBRACE | TC_RBRACE \
|
||||||
| TS_BINOP | TS_OPTERM)
|
| TS_BINOP | TS_OPTERM)
|
||||||
|
|
||||||
/* what can expression begin with */
|
/* what can expression begin with */
|
||||||
#define TS_OPSEQ (TS_OPERAND | TS_UOPPRE | TC_REGEXP)
|
#define TS_OPSEQ (TS_OPERAND | TS_UOPPRE | TC_REGEXP)
|
||||||
/* what can group begin with */
|
/* what can group begin with */
|
||||||
#define TS_GRPSEQ (TS_OPSEQ | TS_OPTERM | TS_STATEMNT | TC_GRPSTART)
|
#define TS_GRPSEQ (TS_OPSEQ | TS_OPTERM | TS_STATEMNT | TC_LBRACE)
|
||||||
|
|
||||||
/* if previous token class is CONCAT_L and next is CONCAT_R, concatenation */
|
/* if previous token class is CONCAT_L and next is CONCAT_R, concatenation */
|
||||||
/* operator is inserted between them */
|
/* operator is inserted between them */
|
||||||
@ -402,8 +402,8 @@ static const char tokenlist[] ALIGN1 =
|
|||||||
"\1|" NTC /* TC_PIPE */
|
"\1|" NTC /* TC_PIPE */
|
||||||
"\1+" "\1-" "\1!" NTC /* TC_UOPPRE2 */
|
"\1+" "\1-" "\1!" NTC /* TC_UOPPRE2 */
|
||||||
"\1]" NTC /* TC_ARRTERM */
|
"\1]" NTC /* TC_ARRTERM */
|
||||||
"\1{" NTC /* TC_GRPSTART */
|
"\1{" NTC /* TC_LBRACE */
|
||||||
"\1}" NTC /* TC_GRPTERM */
|
"\1}" NTC /* TC_RBRACE */
|
||||||
"\1;" NTC /* TC_SEMICOL */
|
"\1;" NTC /* TC_SEMICOL */
|
||||||
"\1\n" NTC /* TC_NEWLINE */
|
"\1\n" NTC /* TC_NEWLINE */
|
||||||
"\2if" "\2do" "\3for" "\5break" /* TC_STATX */
|
"\2if" "\2do" "\3for" "\5break" /* TC_STATX */
|
||||||
@ -1471,7 +1471,7 @@ static node *parse_expr(uint32_t term_tc)
|
|||||||
debug_printf_parse("%s: TC_LENGTH\n", __func__);
|
debug_printf_parse("%s: TC_LENGTH\n", __func__);
|
||||||
tc = next_token(TC_LPAREN /* length(...) */
|
tc = next_token(TC_LPAREN /* length(...) */
|
||||||
| TS_OPTERM /* length; (or newline)*/
|
| TS_OPTERM /* length; (or newline)*/
|
||||||
| TC_GRPTERM /* length } */
|
| TC_RBRACE /* length } */
|
||||||
| TC_BINOPX /* length <op> NUM */
|
| TC_BINOPX /* length <op> NUM */
|
||||||
| TC_COMMA /* print length, 1 */
|
| TC_COMMA /* print length, 1 */
|
||||||
);
|
);
|
||||||
@ -1516,11 +1516,11 @@ static void chain_expr(uint32_t info)
|
|||||||
|
|
||||||
n = chain_node(info);
|
n = chain_node(info);
|
||||||
|
|
||||||
n->l.n = parse_expr(TS_OPTERM | TC_GRPTERM);
|
n->l.n = parse_expr(TS_OPTERM | TC_RBRACE);
|
||||||
if ((info & OF_REQUIRED) && !n->l.n)
|
if ((info & OF_REQUIRED) && !n->l.n)
|
||||||
syntax_error(EMSG_TOO_FEW_ARGS);
|
syntax_error(EMSG_TOO_FEW_ARGS);
|
||||||
|
|
||||||
if (t_tclass & TC_GRPTERM)
|
if (t_tclass & TC_RBRACE)
|
||||||
rollback_token();
|
rollback_token();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1559,16 +1559,16 @@ static void chain_group(void)
|
|||||||
c = next_token(TS_GRPSEQ);
|
c = next_token(TS_GRPSEQ);
|
||||||
} while (c & TC_NEWLINE);
|
} while (c & TC_NEWLINE);
|
||||||
|
|
||||||
if (c & TC_GRPSTART) {
|
if (c & TC_LBRACE) {
|
||||||
debug_printf_parse("%s: TC_GRPSTART\n", __func__);
|
debug_printf_parse("%s: TC_LBRACE\n", __func__);
|
||||||
while ((c = next_token(TS_GRPSEQ | TC_GRPTERM)) != TC_GRPTERM) {
|
while ((c = next_token(TS_GRPSEQ | TC_RBRACE)) != TC_RBRACE) {
|
||||||
debug_printf_parse("%s: !TC_GRPTERM\n", __func__);
|
debug_printf_parse("%s: !TC_RBRACE\n", __func__);
|
||||||
if (c & TC_NEWLINE)
|
if (c & TC_NEWLINE)
|
||||||
continue;
|
continue;
|
||||||
rollback_token();
|
rollback_token();
|
||||||
chain_group();
|
chain_group();
|
||||||
}
|
}
|
||||||
debug_printf_parse("%s: TC_GRPTERM\n", __func__);
|
debug_printf_parse("%s: TC_RBRACE\n", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (c & (TS_OPSEQ | TS_OPTERM)) {
|
if (c & (TS_OPSEQ | TS_OPTERM)) {
|
||||||
@ -1588,7 +1588,7 @@ static void chain_group(void)
|
|||||||
chain_group();
|
chain_group();
|
||||||
n2 = chain_node(OC_EXEC);
|
n2 = chain_node(OC_EXEC);
|
||||||
n->r.n = seq->last;
|
n->r.n = seq->last;
|
||||||
if (next_token(TS_GRPSEQ | TC_GRPTERM | TC_ELSE) == TC_ELSE) {
|
if (next_token(TS_GRPSEQ | TC_RBRACE | TC_ELSE) == TC_ELSE) {
|
||||||
chain_group();
|
chain_group();
|
||||||
n2->a.n = seq->last;
|
n2->a.n = seq->last;
|
||||||
} else {
|
} else {
|
||||||
@ -1641,12 +1641,12 @@ static void chain_group(void)
|
|||||||
case OC_PRINTF:
|
case OC_PRINTF:
|
||||||
debug_printf_parse("%s: OC_PRINT[F]\n", __func__);
|
debug_printf_parse("%s: OC_PRINT[F]\n", __func__);
|
||||||
n = chain_node(t_info);
|
n = chain_node(t_info);
|
||||||
n->l.n = parse_expr(TS_OPTERM | TC_OUTRDR | TC_GRPTERM);
|
n->l.n = parse_expr(TS_OPTERM | TC_OUTRDR | TC_RBRACE);
|
||||||
if (t_tclass & TC_OUTRDR) {
|
if (t_tclass & TC_OUTRDR) {
|
||||||
n->info |= t_info;
|
n->info |= t_info;
|
||||||
n->r.n = parse_expr(TS_OPTERM | TC_GRPTERM);
|
n->r.n = parse_expr(TS_OPTERM | TC_RBRACE);
|
||||||
}
|
}
|
||||||
if (t_tclass & TC_GRPTERM)
|
if (t_tclass & TC_RBRACE)
|
||||||
rollback_token();
|
rollback_token();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1684,7 +1684,7 @@ static void parse_program(char *p)
|
|||||||
|
|
||||||
g_pos = p;
|
g_pos = p;
|
||||||
t_lineno = 1;
|
t_lineno = 1;
|
||||||
while ((tclass = next_token(TC_EOF | TS_OPSEQ | TC_GRPSTART |
|
while ((tclass = next_token(TC_EOF | TS_OPSEQ | TC_LBRACE |
|
||||||
TS_OPTERM | TC_BEGIN | TC_END | TC_FUNCDECL)) != TC_EOF) {
|
TS_OPTERM | TC_BEGIN | TC_END | TC_FUNCDECL)) != TC_EOF) {
|
||||||
|
|
||||||
if (tclass & TS_OPTERM) {
|
if (tclass & TS_OPTERM) {
|
||||||
@ -1696,10 +1696,14 @@ static void parse_program(char *p)
|
|||||||
if (tclass & TC_BEGIN) {
|
if (tclass & TC_BEGIN) {
|
||||||
debug_printf_parse("%s: TC_BEGIN\n", __func__);
|
debug_printf_parse("%s: TC_BEGIN\n", __func__);
|
||||||
seq = &beginseq;
|
seq = &beginseq;
|
||||||
|
//TODO: ensure there is no newline between BEGIN and {
|
||||||
|
//next_token(TC_LBRACE); rollback_token();
|
||||||
chain_group();
|
chain_group();
|
||||||
} else if (tclass & TC_END) {
|
} else if (tclass & TC_END) {
|
||||||
debug_printf_parse("%s: TC_END\n", __func__);
|
debug_printf_parse("%s: TC_END\n", __func__);
|
||||||
seq = &endseq;
|
seq = &endseq;
|
||||||
|
//TODO: ensure there is no newline between END and {
|
||||||
|
//next_token(TC_LBRACE); rollback_token();
|
||||||
chain_group();
|
chain_group();
|
||||||
} else if (tclass & TC_FUNCDECL) {
|
} else if (tclass & TC_FUNCDECL) {
|
||||||
debug_printf_parse("%s: TC_FUNCDECL\n", __func__);
|
debug_printf_parse("%s: TC_FUNCDECL\n", __func__);
|
||||||
@ -1726,24 +1730,26 @@ static void parse_program(char *p)
|
|||||||
/* it was a comma, we ate it */
|
/* it was a comma, we ate it */
|
||||||
}
|
}
|
||||||
seq = &f->body;
|
seq = &f->body;
|
||||||
|
//TODO: ensure there is { after "func F(...)" - but newlines are allowed
|
||||||
|
//while (next_token(TC_LBRACE | TC_NEWLINE) == TC_NEWLINE) continue; rollback_token();
|
||||||
chain_group();
|
chain_group();
|
||||||
hash_clear(ahash);
|
hash_clear(ahash);
|
||||||
} else if (tclass & TS_OPSEQ) {
|
} else if (tclass & TS_OPSEQ) {
|
||||||
debug_printf_parse("%s: TS_OPSEQ\n", __func__);
|
debug_printf_parse("%s: TS_OPSEQ\n", __func__);
|
||||||
rollback_token();
|
rollback_token();
|
||||||
cn = chain_node(OC_TEST);
|
cn = chain_node(OC_TEST);
|
||||||
cn->l.n = parse_expr(TS_OPTERM | TC_EOF | TC_GRPSTART);
|
cn->l.n = parse_expr(TS_OPTERM | TC_EOF | TC_LBRACE);
|
||||||
if (t_tclass & TC_GRPSTART) {
|
if (t_tclass & TC_LBRACE) {
|
||||||
debug_printf_parse("%s: TC_GRPSTART\n", __func__);
|
debug_printf_parse("%s: TC_LBRACE\n", __func__);
|
||||||
rollback_token();
|
rollback_token();
|
||||||
chain_group();
|
chain_group();
|
||||||
} else {
|
} else {
|
||||||
debug_printf_parse("%s: !TC_GRPSTART\n", __func__);
|
debug_printf_parse("%s: !TC_LBRACE\n", __func__);
|
||||||
chain_node(OC_PRINT);
|
chain_node(OC_PRINT);
|
||||||
}
|
}
|
||||||
cn->r.n = mainseq.last;
|
cn->r.n = mainseq.last;
|
||||||
} else /* if (tclass & TC_GRPSTART) */ {
|
} else /* if (tclass & TC_LBRACE) */ {
|
||||||
debug_printf_parse("%s: TC_GRPSTART(?)\n", __func__);
|
debug_printf_parse("%s: TC_LBRACE(?)\n", __func__);
|
||||||
rollback_token();
|
rollback_token();
|
||||||
chain_group();
|
chain_group();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user