提交 717200eb 编写于 作者: D Denys Vlasenko

awk: rename GRPSTART/END to L/RBRACE, no code changes

Signed-off-by: NDenys Vlasenko <vda.linux@googlemail.com>
上级 b705bf55
......@@ -211,8 +211,8 @@ typedef struct tsplitter_s {
#define TC_PIPE (1 << 9) /* input redirection pipe | */
#define TC_UOPPRE2 (1 << 10) /* unary prefix operator + - ! */
#define TC_ARRTERM (1 << 11) /* ] */
#define TC_GRPSTART (1 << 12) /* { */
#define TC_GRPTERM (1 << 13) /* } */
#define TC_LBRACE (1 << 12) /* { */
#define TC_RBRACE (1 << 13) /* } */
#define TC_SEMICOL (1 << 14) /* ; */
#define TC_NEWLINE (1 << 15)
#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_UOPPRE2 ) debug_printf_parse(" UOPPRE2" ); \
if ((n) & TC_ARRTERM ) debug_printf_parse(" ARRTERM" ); \
if ((n) & TC_GRPSTART) debug_printf_parse(" GRPSTART"); \
if ((n) & TC_GRPTERM ) debug_printf_parse(" GRPTERM" ); \
if ((n) & TC_LBRACE ) debug_printf_parse(" LBRACE" ); \
if ((n) & TC_RBRACE ) debug_printf_parse(" RBRACE" ); \
if ((n) & TC_SEMICOL ) debug_printf_parse(" SEMICOL" ); \
if ((n) & TC_NEWLINE ) debug_printf_parse(" NEWLINE" ); \
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)
/* 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)
/* what can expression begin with */
#define TS_OPSEQ (TS_OPERAND | TS_UOPPRE | TC_REGEXP)
/* 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 */
/* operator is inserted between them */
......@@ -402,8 +402,8 @@ static const char tokenlist[] ALIGN1 =
"\1|" NTC /* TC_PIPE */
"\1+" "\1-" "\1!" NTC /* TC_UOPPRE2 */
"\1]" NTC /* TC_ARRTERM */
"\1{" NTC /* TC_GRPSTART */
"\1}" NTC /* TC_GRPTERM */
"\1{" NTC /* TC_LBRACE */
"\1}" NTC /* TC_RBRACE */
"\1;" NTC /* TC_SEMICOL */
"\1\n" NTC /* TC_NEWLINE */
"\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__);
tc = next_token(TC_LPAREN /* length(...) */
| TS_OPTERM /* length; (or newline)*/
| TC_GRPTERM /* length } */
| TC_RBRACE /* length } */
| TC_BINOPX /* length <op> NUM */
| TC_COMMA /* print length, 1 */
);
......@@ -1516,11 +1516,11 @@ static void chain_expr(uint32_t 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)
syntax_error(EMSG_TOO_FEW_ARGS);
if (t_tclass & TC_GRPTERM)
if (t_tclass & TC_RBRACE)
rollback_token();
}
......@@ -1559,16 +1559,16 @@ static void chain_group(void)
c = next_token(TS_GRPSEQ);
} while (c & TC_NEWLINE);
if (c & TC_GRPSTART) {
debug_printf_parse("%s: TC_GRPSTART\n", __func__);
while ((c = next_token(TS_GRPSEQ | TC_GRPTERM)) != TC_GRPTERM) {
debug_printf_parse("%s: !TC_GRPTERM\n", __func__);
if (c & TC_LBRACE) {
debug_printf_parse("%s: TC_LBRACE\n", __func__);
while ((c = next_token(TS_GRPSEQ | TC_RBRACE)) != TC_RBRACE) {
debug_printf_parse("%s: !TC_RBRACE\n", __func__);
if (c & TC_NEWLINE)
continue;
rollback_token();
chain_group();
}
debug_printf_parse("%s: TC_GRPTERM\n", __func__);
debug_printf_parse("%s: TC_RBRACE\n", __func__);
return;
}
if (c & (TS_OPSEQ | TS_OPTERM)) {
......@@ -1588,7 +1588,7 @@ static void chain_group(void)
chain_group();
n2 = chain_node(OC_EXEC);
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();
n2->a.n = seq->last;
} else {
......@@ -1641,12 +1641,12 @@ static void chain_group(void)
case OC_PRINTF:
debug_printf_parse("%s: OC_PRINT[F]\n", __func__);
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) {
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();
break;
......@@ -1684,7 +1684,7 @@ static void parse_program(char *p)
g_pos = p;
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) {
if (tclass & TS_OPTERM) {
......@@ -1696,10 +1696,14 @@ static void parse_program(char *p)
if (tclass & TC_BEGIN) {
debug_printf_parse("%s: TC_BEGIN\n", __func__);
seq = &beginseq;
//TODO: ensure there is no newline between BEGIN and {
//next_token(TC_LBRACE); rollback_token();
chain_group();
} else if (tclass & TC_END) {
debug_printf_parse("%s: TC_END\n", __func__);
seq = &endseq;
//TODO: ensure there is no newline between END and {
//next_token(TC_LBRACE); rollback_token();
chain_group();
} else if (tclass & TC_FUNCDECL) {
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 */
}
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();
hash_clear(ahash);
} else if (tclass & TS_OPSEQ) {
debug_printf_parse("%s: TS_OPSEQ\n", __func__);
rollback_token();
cn = chain_node(OC_TEST);
cn->l.n = parse_expr(TS_OPTERM | TC_EOF | TC_GRPSTART);
if (t_tclass & TC_GRPSTART) {
debug_printf_parse("%s: TC_GRPSTART\n", __func__);
cn->l.n = parse_expr(TS_OPTERM | TC_EOF | TC_LBRACE);
if (t_tclass & TC_LBRACE) {
debug_printf_parse("%s: TC_LBRACE\n", __func__);
rollback_token();
chain_group();
} else {
debug_printf_parse("%s: !TC_GRPSTART\n", __func__);
debug_printf_parse("%s: !TC_LBRACE\n", __func__);
chain_node(OC_PRINT);
}
cn->r.n = mainseq.last;
} else /* if (tclass & TC_GRPSTART) */ {
debug_printf_parse("%s: TC_GRPSTART(?)\n", __func__);
} else /* if (tclass & TC_LBRACE) */ {
debug_printf_parse("%s: TC_LBRACE(?)\n", __func__);
rollback_token();
chain_group();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册