This commit is contained in:
parent
99685d17a1
commit
91e196af25
@ -5329,7 +5329,7 @@ static int deparse (ase_awk_t* awk)
|
|||||||
const ase_char_t* kw = ase_awk_getkw(awk,ASE_T("BEGIN"));
|
const ase_char_t* kw = ase_awk_getkw(awk,ASE_T("BEGIN"));
|
||||||
if (ase_awk_putsrcstr(awk,kw) == -1) EXIT_DEPARSE ();
|
if (ase_awk_putsrcstr(awk,kw) == -1) EXIT_DEPARSE ();
|
||||||
if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE ();
|
if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE ();
|
||||||
if (ase_awk_prnpt (awk, nde) == -1) EXIT_DEPARSE ();
|
if (ase_awk_prnnde (awk, nde) == -1) EXIT_DEPARSE ();
|
||||||
|
|
||||||
if (awk->option & ASE_AWK_CRLF)
|
if (awk->option & ASE_AWK_CRLF)
|
||||||
{
|
{
|
||||||
@ -5388,7 +5388,7 @@ static int deparse (ase_awk_t* awk)
|
|||||||
const ase_char_t* kw = ase_awk_getkw(awk,ASE_T("END"));
|
const ase_char_t* kw = ase_awk_getkw(awk,ASE_T("END"));
|
||||||
if (ase_awk_putsrcstr(awk,kw) == -1) EXIT_DEPARSE ();
|
if (ase_awk_putsrcstr(awk,kw) == -1) EXIT_DEPARSE ();
|
||||||
if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE ();
|
if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE ();
|
||||||
if (ase_awk_prnpt (awk, nde) == -1) EXIT_DEPARSE ();
|
if (ase_awk_prnnde (awk, nde) == -1) EXIT_DEPARSE ();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (awk->option & ASE_AWK_CRLF)
|
if (awk->option & ASE_AWK_CRLF)
|
||||||
|
651
ase/awk/tree.c
651
ase/awk/tree.c
@ -565,346 +565,352 @@ static int print_expression_list (ase_awk_t* awk, ase_awk_nde_t* tree)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth)
|
static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth)
|
||||||
{
|
{
|
||||||
ase_awk_nde_t* p = tree;
|
|
||||||
ase_size_t i;
|
ase_size_t i;
|
||||||
|
|
||||||
while (p != ASE_NULL)
|
switch (p->type)
|
||||||
{
|
{
|
||||||
|
case ASE_AWK_NDE_NULL:
|
||||||
switch (p->type)
|
|
||||||
{
|
{
|
||||||
case ASE_AWK_NDE_NULL:
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_BLK:
|
||||||
|
{
|
||||||
|
ase_size_t n;
|
||||||
|
ase_awk_nde_blk_t* px = (ase_awk_nde_blk_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ASE_T("{"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
|
||||||
|
if (px->nlocals > 0)
|
||||||
{
|
{
|
||||||
PRINT_TABS (awk, depth);
|
PRINT_TABS (awk, depth + 1);
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("local")));
|
||||||
PUT_NEWLINE (awk);
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_BLK:
|
for (i = 0; i < px->nlocals - 1; i++)
|
||||||
{
|
|
||||||
ase_size_t n;
|
|
||||||
ase_awk_nde_blk_t* px = (ase_awk_nde_blk_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ASE_T("{"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
|
|
||||||
if (px->nlocals > 0)
|
|
||||||
{
|
{
|
||||||
PRINT_TABS (awk, depth + 1);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("local")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
|
|
||||||
for (i = 0; i < px->nlocals - 1; i++)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ASE_T("__local"));
|
|
||||||
n = ase_awk_longtostr (
|
|
||||||
i, 10, ASE_NULL,
|
|
||||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
|
||||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(", "));
|
|
||||||
}
|
|
||||||
|
|
||||||
PUT_SRCSTR (awk, ASE_T("__local"));
|
PUT_SRCSTR (awk, ASE_T("__local"));
|
||||||
n = ase_awk_longtostr (
|
n = ase_awk_longtostr (
|
||||||
i, 10, ASE_NULL,
|
i, 10, ASE_NULL,
|
||||||
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||||
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
PUT_SRCSTR (awk, ASE_T(", "));
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
PUT_SRCSTR (awk, ASE_T("__local"));
|
||||||
PRINT_TABS (awk, depth);
|
n = ase_awk_longtostr (
|
||||||
PUT_SRCSTR (awk, ASE_T("}"));
|
i, 10, ASE_NULL,
|
||||||
PUT_NEWLINE (awk);
|
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt));
|
||||||
break;
|
PUT_SRCSTRX (awk, awk->tmp.fmt, n);
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_IF:
|
|
||||||
{
|
|
||||||
ase_awk_nde_if_t* px = (ase_awk_nde_if_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("if")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" ("));
|
|
||||||
PRINT_EXPRESSION (awk, px->test);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(")"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
|
|
||||||
ASE_ASSERT (px->then_part != ASE_NULL);
|
|
||||||
if (px->then_part->type == ASE_AWK_NDE_BLK)
|
|
||||||
PRINT_STATEMENTS (awk, px->then_part, depth);
|
|
||||||
else
|
|
||||||
PRINT_STATEMENTS (awk, px->then_part, depth + 1);
|
|
||||||
|
|
||||||
if (px->else_part != ASE_NULL)
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("else")));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
if (px->else_part->type == ASE_AWK_NDE_BLK)
|
|
||||||
PRINT_STATEMENTS (awk, px->else_part, depth);
|
|
||||||
else
|
|
||||||
PRINT_STATEMENTS (awk, px->else_part, depth + 1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_WHILE:
|
|
||||||
{
|
|
||||||
ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("while")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" ("));
|
|
||||||
PRINT_EXPRESSION (awk, px->test);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(")"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
if (px->body->type == ASE_AWK_NDE_BLK)
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_DOWHILE:
|
|
||||||
{
|
|
||||||
ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("do")));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
if (px->body->type == ASE_AWK_NDE_BLK)
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("while")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" ("));
|
|
||||||
PRINT_EXPRESSION (awk, px->test);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(");"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_FOR:
|
|
||||||
{
|
|
||||||
ase_awk_nde_for_t* px = (ase_awk_nde_for_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("for")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" ("));
|
|
||||||
if (px->init != ASE_NULL)
|
|
||||||
{
|
|
||||||
PRINT_EXPRESSION (awk, px->init);
|
|
||||||
}
|
|
||||||
PUT_SRCSTR (awk, ASE_T("; "));
|
|
||||||
if (px->test != ASE_NULL)
|
|
||||||
{
|
|
||||||
PRINT_EXPRESSION (awk, px->test);
|
|
||||||
}
|
|
||||||
PUT_SRCSTR (awk, ASE_T("; "));
|
|
||||||
if (px->incr != ASE_NULL)
|
|
||||||
{
|
|
||||||
PRINT_EXPRESSION (awk, px->incr);
|
|
||||||
}
|
|
||||||
PUT_SRCSTR (awk, ASE_T(")"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
|
|
||||||
if (px->body->type == ASE_AWK_NDE_BLK)
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_FOREACH:
|
|
||||||
{
|
|
||||||
ase_awk_nde_foreach_t* px = (ase_awk_nde_foreach_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("for")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
PRINT_EXPRESSION (awk, px->test);
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
if (px->body->type == ASE_AWK_NDE_BLK)
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_BREAK:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("break")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_CONTINUE:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("continue")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_RETURN:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
if (((ase_awk_nde_return_t*)p)->val == ASE_NULL)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("return")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("return")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
ASE_ASSERT (((ase_awk_nde_return_t*)p)->val->next == ASE_NULL);
|
|
||||||
|
|
||||||
PRINT_EXPRESSION (awk, ((ase_awk_nde_return_t*)p)->val);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_EXIT:
|
|
||||||
{
|
|
||||||
ase_awk_nde_exit_t* px = (ase_awk_nde_exit_t*)p;
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
|
|
||||||
if (px->val == ASE_NULL)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("exit")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("exit")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
ASE_ASSERT (px->val->next == ASE_NULL);
|
|
||||||
PRINT_EXPRESSION (awk, px->val);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_NEXT:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("next")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_NEXTFILE:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
if (((ase_awk_nde_nextfile_t*)p)->out)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("nextofile")));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("nextfile")));
|
|
||||||
}
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_DELETE:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("delete")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
ase_awk_prnpt (awk, ((ase_awk_nde_delete_t*)p)->var);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_RESET:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("reset")));
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
ase_awk_prnpt (awk, ((ase_awk_nde_reset_t*)p)->var);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ASE_AWK_NDE_PRINT:
|
|
||||||
case ASE_AWK_NDE_PRINTF:
|
|
||||||
{
|
|
||||||
ase_awk_nde_print_t* px = (ase_awk_nde_print_t*)p;
|
|
||||||
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
|
|
||||||
if (p->type == ASE_AWK_NDE_PRINT)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("print")));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("printf")));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (px->args != ASE_NULL)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
PRINT_EXPRESSION_LIST (awk, px->args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (px->out != ASE_NULL)
|
|
||||||
{
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
PUT_SRCSTR (awk, print_outop_str[px->out_type]);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(" "));
|
|
||||||
PRINT_EXPRESSION (awk, px->out);
|
|
||||||
}
|
|
||||||
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
|
||||||
PUT_NEWLINE (awk);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
PRINT_TABS (awk, depth);
|
|
||||||
PRINT_EXPRESSION (awk, p);
|
|
||||||
PUT_SRCSTR (awk, ASE_T(";"));
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
PUT_NEWLINE (awk);
|
PUT_NEWLINE (awk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ASE_T("}"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_IF:
|
||||||
|
{
|
||||||
|
ase_awk_nde_if_t* px = (ase_awk_nde_if_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("if")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" ("));
|
||||||
|
PRINT_EXPRESSION (awk, px->test);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(")"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
|
||||||
|
ASE_ASSERT (px->then_part != ASE_NULL);
|
||||||
|
if (px->then_part->type == ASE_AWK_NDE_BLK)
|
||||||
|
PRINT_STATEMENTS (awk, px->then_part, depth);
|
||||||
|
else
|
||||||
|
PRINT_STATEMENTS (awk, px->then_part, depth + 1);
|
||||||
|
|
||||||
|
if (px->else_part != ASE_NULL)
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("else")));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
if (px->else_part->type == ASE_AWK_NDE_BLK)
|
||||||
|
PRINT_STATEMENTS (awk, px->else_part, depth);
|
||||||
|
else
|
||||||
|
PRINT_STATEMENTS (awk, px->else_part, depth + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_WHILE:
|
||||||
|
{
|
||||||
|
ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("while")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" ("));
|
||||||
|
PRINT_EXPRESSION (awk, px->test);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(")"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
if (px->body->type == ASE_AWK_NDE_BLK)
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_DOWHILE:
|
||||||
|
{
|
||||||
|
ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("do")));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
if (px->body->type == ASE_AWK_NDE_BLK)
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("while")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" ("));
|
||||||
|
PRINT_EXPRESSION (awk, px->test);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(");"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_FOR:
|
||||||
|
{
|
||||||
|
ase_awk_nde_for_t* px = (ase_awk_nde_for_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("for")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" ("));
|
||||||
|
if (px->init != ASE_NULL)
|
||||||
|
{
|
||||||
|
PRINT_EXPRESSION (awk, px->init);
|
||||||
|
}
|
||||||
|
PUT_SRCSTR (awk, ASE_T("; "));
|
||||||
|
if (px->test != ASE_NULL)
|
||||||
|
{
|
||||||
|
PRINT_EXPRESSION (awk, px->test);
|
||||||
|
}
|
||||||
|
PUT_SRCSTR (awk, ASE_T("; "));
|
||||||
|
if (px->incr != ASE_NULL)
|
||||||
|
{
|
||||||
|
PRINT_EXPRESSION (awk, px->incr);
|
||||||
|
}
|
||||||
|
PUT_SRCSTR (awk, ASE_T(")"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
|
||||||
|
if (px->body->type == ASE_AWK_NDE_BLK)
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_FOREACH:
|
||||||
|
{
|
||||||
|
ase_awk_nde_foreach_t* px = (ase_awk_nde_foreach_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("for")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
PRINT_EXPRESSION (awk, px->test);
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
if (px->body->type == ASE_AWK_NDE_BLK)
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PRINT_STATEMENTS (awk, px->body, depth + 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_BREAK:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("break")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_CONTINUE:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("continue")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_RETURN:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
if (((ase_awk_nde_return_t*)p)->val == ASE_NULL)
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("return")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("return")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
ASE_ASSERT (((ase_awk_nde_return_t*)p)->val->next == ASE_NULL);
|
||||||
|
|
||||||
|
PRINT_EXPRESSION (awk, ((ase_awk_nde_return_t*)p)->val);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_EXIT:
|
||||||
|
{
|
||||||
|
ase_awk_nde_exit_t* px = (ase_awk_nde_exit_t*)p;
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
|
||||||
|
if (px->val == ASE_NULL)
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("exit")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("exit")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
ASE_ASSERT (px->val->next == ASE_NULL);
|
||||||
|
PRINT_EXPRESSION (awk, px->val);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_NEXT:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("next")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_NEXTFILE:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
if (((ase_awk_nde_nextfile_t*)p)->out)
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("nextofile")));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("nextfile")));
|
||||||
|
}
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_DELETE:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("delete")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
ase_awk_prnpt (awk, ((ase_awk_nde_delete_t*)p)->var);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_RESET:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("reset")));
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
ase_awk_prnpt (awk, ((ase_awk_nde_reset_t*)p)->var);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case ASE_AWK_NDE_PRINT:
|
||||||
|
case ASE_AWK_NDE_PRINTF:
|
||||||
|
{
|
||||||
|
ase_awk_nde_print_t* px = (ase_awk_nde_print_t*)p;
|
||||||
|
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
|
||||||
|
if (p->type == ASE_AWK_NDE_PRINT)
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("print")));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ase_awk_getkw(awk,ASE_T("printf")));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (px->args != ASE_NULL)
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
PRINT_EXPRESSION_LIST (awk, px->args);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (px->out != ASE_NULL)
|
||||||
|
{
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
PUT_SRCSTR (awk, print_outop_str[px->out_type]);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(" "));
|
||||||
|
PRINT_EXPRESSION (awk, px->out);
|
||||||
|
}
|
||||||
|
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
PRINT_TABS (awk, depth);
|
||||||
|
PRINT_EXPRESSION (awk, p);
|
||||||
|
PUT_SRCSTR (awk, ASE_T(";"));
|
||||||
|
PUT_NEWLINE (awk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth)
|
||||||
|
{
|
||||||
|
ase_awk_nde_t* p = tree;
|
||||||
|
|
||||||
|
while (p != ASE_NULL)
|
||||||
|
{
|
||||||
|
if (print_statement (awk, p, depth) == -1) return -1;
|
||||||
p = p->next;
|
p = p->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -916,6 +922,11 @@ int ase_awk_prnpt (ase_awk_t* awk, ase_awk_nde_t* tree)
|
|||||||
return print_statements (awk, tree, 0);
|
return print_statements (awk, tree, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ase_awk_prnnde (ase_awk_t* awk, ase_awk_nde_t* tree)
|
||||||
|
{
|
||||||
|
return print_statement (awk, tree, 0);
|
||||||
|
}
|
||||||
|
|
||||||
int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree)
|
int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree)
|
||||||
{
|
{
|
||||||
ase_awk_nde_t* nde = tree;
|
ase_awk_nde_t* nde = tree;
|
||||||
|
@ -408,7 +408,11 @@ struct ase_awk_nde_print_t
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* print the entire tree */
|
||||||
int ase_awk_prnpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
int ase_awk_prnpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
||||||
|
/* print a single top-level node */
|
||||||
|
int ase_awk_prnnde (ase_awk_t* awk, ase_awk_nde_t* node);
|
||||||
|
/* print the pattern part */
|
||||||
int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
||||||
|
|
||||||
void ase_awk_clrpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
void ase_awk_clrpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
||||||
|
7
ase/test/awk/main-001.out
Normal file
7
ase/test/awk/main-001.out
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
function main ()
|
||||||
|
{
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
return 999;
|
||||||
|
}
|
||||||
|
|
@ -1,36 +1,36 @@
|
|||||||
|
|
||||||
function error() { exit (200); }
|
function error() { exit (200); }
|
||||||
function getx()
|
function getx()
|
||||||
{
|
{
|
||||||
if (x == 2) error();
|
if (x == 2) error();
|
||||||
return x++;
|
return x++;
|
||||||
}
|
}
|
||||||
|
|
||||||
function gety() { return y++; }
|
function gety() { return y++; }
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
print getx() + gety();
|
print getx() + gety();
|
||||||
print getx() + gety();
|
print getx() + gety();
|
||||||
print getx() + gety();
|
print getx() + gety();
|
||||||
print getx() + gety();
|
print getx() + gety();
|
||||||
|
|
||||||
return 999;
|
return 999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
END {
|
END {
|
||||||
print "END OF PROGRAM";
|
print "END OF PROGRAM";
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
END {
|
END {
|
||||||
print "END OF PROGRAM 2";
|
print "END OF PROGRAM 2";
|
||||||
exit (100);
|
exit (100);
|
||||||
}
|
}
|
||||||
|
|
||||||
END {
|
END {
|
||||||
print "END OF PROGRAM 3";
|
print "END OF PROGRAM 3";
|
||||||
exit (900);
|
exit (900);
|
||||||
}
|
}
|
||||||
|
42
ase/test/awk/main-002.out
Normal file
42
ase/test/awk/main-002.out
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function main ()
|
||||||
|
{
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
return 999;
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM";
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM 2";
|
||||||
|
exit 100;
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM 3";
|
||||||
|
exit 900;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
2
|
@ -11,8 +11,34 @@ run_script_for_init()
|
|||||||
"$ASEAWK" $OPTION -d -f "$script" "$data" > "$output"
|
"$ASEAWK" $OPTION -d -f "$script" "$data" > "$output"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_script_for_init_nodata()
|
||||||
|
{
|
||||||
|
script="$1"
|
||||||
|
output=`echo $script | sed 's/\.awk$/.out/g'`
|
||||||
|
|
||||||
|
"$ASEAWK" $OPTION -d -f "$script" > "$output"
|
||||||
|
}
|
||||||
|
|
||||||
|
run_script_for_init_main()
|
||||||
|
{
|
||||||
|
script="$1"
|
||||||
|
output=`echo $script | sed 's/\.awk$/.out/g'`
|
||||||
|
|
||||||
|
"$ASEAWK" $OPTION -m main -d -f "$script" > "$output"
|
||||||
|
}
|
||||||
|
|
||||||
run_init()
|
run_init()
|
||||||
{
|
{
|
||||||
|
for script in simple-???.awk
|
||||||
|
do
|
||||||
|
run_script_for_init_nodata "$script"
|
||||||
|
done
|
||||||
|
|
||||||
|
for script in main-???.awk
|
||||||
|
do
|
||||||
|
run_script_for_init_main "$script"
|
||||||
|
done
|
||||||
|
|
||||||
for script in emp-???.awk
|
for script in emp-???.awk
|
||||||
do
|
do
|
||||||
run_script_for_init "$script" "emp-en.data"
|
run_script_for_init "$script" "emp-en.data"
|
||||||
@ -55,10 +81,86 @@ run_script_for_test()
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_script_for_test_nodata()
|
||||||
|
{
|
||||||
|
script="$1"
|
||||||
|
output=`echo $script | sed 's/\.awk$/.out/g'`
|
||||||
|
|
||||||
|
echo ">> RUNNING $script"
|
||||||
|
"$ASEAWK" $OPTION -d -f "$script" > "$output.$pid"
|
||||||
|
|
||||||
|
#diff -y "$output" "$output.$pid"
|
||||||
|
diff "$output" "$output.$pid"
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
rm -f "$output.$pid"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$output.$pid"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
run_script_for_test_main()
|
||||||
|
{
|
||||||
|
script="$1"
|
||||||
|
output=`echo $script | sed 's/\.awk$/.out/g'`
|
||||||
|
|
||||||
|
echo ">> RUNNING $script"
|
||||||
|
"$ASEAWK" $OPTION -m main -d -f "$script" > "$output.$pid"
|
||||||
|
|
||||||
|
#diff -y "$output" "$output.$pid"
|
||||||
|
diff "$output" "$output.$pid"
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
rm -f "$output.$pid"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f "$output.$pid"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
run_test()
|
run_test()
|
||||||
{
|
{
|
||||||
pid=$$
|
pid=$$
|
||||||
|
|
||||||
|
for script in simple-???.awk
|
||||||
|
do
|
||||||
|
run_script_for_test_nodata "$script"
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "###################################"
|
||||||
|
echo "PROBLEM(S) DETECTED IN $script.".
|
||||||
|
echo "###################################"
|
||||||
|
|
||||||
|
echo "Do you want to abort? [y/n]"
|
||||||
|
read ans
|
||||||
|
if [ "$ans" = "y" -o "$ans" = "Y" ]
|
||||||
|
then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
for script in main-???.awk
|
||||||
|
do
|
||||||
|
run_script_for_test_main "$script"
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "###################################"
|
||||||
|
echo "PROBLEM(S) DETECTED IN $script.".
|
||||||
|
echo "###################################"
|
||||||
|
|
||||||
|
echo "Do you want to abort? [y/n]"
|
||||||
|
read ans
|
||||||
|
if [ "$ans" = "y" -o "$ans" = "Y" ]
|
||||||
|
then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
for script in emp-???.awk
|
for script in emp-???.awk
|
||||||
do
|
do
|
||||||
run_script_for_test "$script" "emp-en.data"
|
run_script_for_test "$script" "emp-en.data"
|
||||||
|
28
ase/test/awk/simple-001.out
Normal file
28
ase/test/awk/simple-001.out
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
}
|
||||||
|
|
||||||
|
0
|
||||||
|
2
|
32
ase/test/awk/simple-002.out
Normal file
32
ase/test/awk/simple-002.out
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM";
|
||||||
|
}
|
||||||
|
0
|
||||||
|
2
|
||||||
|
END OF PROGRAM
|
33
ase/test/awk/simple-003.out
Normal file
33
ase/test/awk/simple-003.out
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM";
|
||||||
|
exit 20;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
2
|
||||||
|
END OF PROGRAM
|
36
ase/test/awk/simple-004.out
Normal file
36
ase/test/awk/simple-004.out
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM";
|
||||||
|
exit 20;
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM 2";
|
||||||
|
}
|
||||||
|
0
|
||||||
|
2
|
||||||
|
END OF PROGRAM
|
38
ase/test/awk/simple-005.out
Normal file
38
ase/test/awk/simple-005.out
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM";
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM 2";
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
2
|
||||||
|
END OF PROGRAM
|
||||||
|
END OF PROGRAM 2
|
42
ase/test/awk/simple-006.out
Normal file
42
ase/test/awk/simple-006.out
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
function error ()
|
||||||
|
{
|
||||||
|
exit 200;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getx ()
|
||||||
|
{
|
||||||
|
if ((x == 2))
|
||||||
|
error ();
|
||||||
|
return (x)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
function gety ()
|
||||||
|
{
|
||||||
|
return (y)++;
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
print (getx () + gety ());
|
||||||
|
}
|
||||||
|
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM";
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM 2";
|
||||||
|
exit 100;
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print "END OF PROGRAM 3";
|
||||||
|
exit 900;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
2
|
||||||
|
END OF PROGRAM
|
||||||
|
END OF PROGRAM 2
|
Loading…
Reference in New Issue
Block a user