*** empty log message ***

This commit is contained in:
hyung-hwan 2006-01-15 06:11:22 +00:00
parent 0865bdec30
commit f0f0ca69ea

View File

@ -1,5 +1,5 @@
/* /*
* $Id: parse.c,v 1.20 2006-01-14 16:09:57 bacon Exp $ * $Id: parse.c,v 1.21 2006-01-15 06:11:22 bacon Exp $
*/ */
#include <xp/awk/awk.h> #include <xp/awk/awk.h>
@ -56,7 +56,9 @@ enum
TOKEN_EXIT, TOKEN_EXIT,
TOKEN_DELETE, TOKEN_DELETE,
TOKEN_NEXT, TOKEN_NEXT,
TOKEN_NEXTFILE TOKEN_NEXTFILE,
__TOKEN_COUNT__
}; };
enum { enum {
@ -310,23 +312,30 @@ static xp_awk_node_t* __parse_statement_nb (xp_awk_t* awk)
{ {
xp_awk_node_t* node; xp_awk_node_t* node;
/*
* keywords that don't require any terminating semicolon
*/
if (MATCH(awk,TOKEN_IF)) { if (MATCH(awk,TOKEN_IF)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = __parse_if(awk); return __parse_if(awk);
} }
else if (MATCH(awk,TOKEN_WHILE)) { else if (MATCH(awk,TOKEN_WHILE)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = __parse_while(awk); return __parse_while(awk);
} }
else if (MATCH(awk,TOKEN_FOR)) { else if (MATCH(awk,TOKEN_FOR)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = __parse_for(awk); return __parse_for(awk);
} }
else if (MATCH(awk,TOKEN_DO)) { else if (MATCH(awk,TOKEN_DO)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = __parse_do(awk); return __parse_do(awk);
} }
else if (MATCH(awk,TOKEN_BREAK)) {
/*
* keywords that require a terminating semicolon
*/
if (MATCH(awk,TOKEN_BREAK)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = __parse_break(awk); node = __parse_break(awk);
} }
@ -346,21 +355,19 @@ static xp_awk_node_t* __parse_statement_nb (xp_awk_t* awk)
TODO: TODO:
else if (MATCH(awk,TOKEN_DELETE)) { else if (MATCH(awk,TOKEN_DELETE)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = XP_NULL; node = __parse_delete(awk);
} }
else if (MATCH(awk,TOKEN_NEXT)) { else if (MATCH(awk,TOKEN_NEXT)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = XP_NULL; node = __parse_next(awk);
} }
else if (MATCH(awk,TOKEN_NEXTFILE)) { else if (MATCH(awk,TOKEN_NEXTFILE)) {
if (__get_token(awk) == -1) return XP_NULL; if (__get_token(awk) == -1) return XP_NULL;
node = XP_NULL; node = __parse_nextfile(awk);
} }
*/ */
else { else {
xp_printf (XP_TEXT("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"));
node = __parse_expression(awk); node = __parse_expression(awk);
xp_printf (XP_TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$\n"));
} }
if (node == XP_NULL) return XP_NULL; if (node == XP_NULL) return XP_NULL;
@ -371,13 +378,11 @@ xp_printf (XP_TEXT("$$$$$$$$$$$$$$$$$$$$$$$$$\n"));
PANIC (awk, XP_AWK_ESEMICOLON); PANIC (awk, XP_AWK_ESEMICOLON);
} }
xp_printf (XP_TEXT("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"));
/* eat up the semicolon and read in the next token */ /* eat up the semicolon and read in the next token */
if (__get_token(awk) == -1) { if (__get_token(awk) == -1) {
if (node != XP_NULL) xp_awk_clrpt (node); if (node != XP_NULL) xp_awk_clrpt (node);
return XP_NULL; return XP_NULL;
} }
xp_printf (XP_TEXT("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n"));
return node; return node;
} }
@ -750,7 +755,6 @@ static xp_awk_node_t* __parse_if (xp_awk_t* awk)
test = __parse_expression (awk); test = __parse_expression (awk);
if (test == XP_NULL) return XP_NULL; if (test == XP_NULL) return XP_NULL;
xp_printf (XP_TEXT("11111111111111111111111111111111\n"));
if (!MATCH(awk,TOKEN_RPAREN)) { if (!MATCH(awk,TOKEN_RPAREN)) {
xp_awk_clrpt (test); xp_awk_clrpt (test);
PANIC (awk, XP_AWK_ERPAREN); PANIC (awk, XP_AWK_ERPAREN);
@ -761,15 +765,12 @@ xp_printf (XP_TEXT("11111111111111111111111111111111\n"));
return XP_NULL; return XP_NULL;
} }
xp_printf (XP_TEXT("jjjjjjjjjjjjjjjjjjjjjjjj\n"));
then_part = __parse_statement (awk); then_part = __parse_statement (awk);
if (then_part == XP_NULL) { if (then_part == XP_NULL) {
xp_awk_clrpt (test); xp_awk_clrpt (test);
return XP_NULL; return XP_NULL;
} }
xp_printf (XP_TEXT("aaaaaaaaaaaaaaaaaaaaaaaaa\n"));
if (MATCH(awk,TOKEN_ELSE)) { if (MATCH(awk,TOKEN_ELSE)) {
if (__get_token(awk) == -1) { if (__get_token(awk) == -1) {
xp_awk_clrpt (then_part); xp_awk_clrpt (then_part);
@ -800,7 +801,6 @@ xp_printf (XP_TEXT("aaaaaaaaaaaaaaaaaaaaaaaaa\n"));
node->then_part = then_part; node->then_part = then_part;
node->else_part = else_part; node->else_part = else_part;
xp_printf (XP_TEXT("####################################################\n"));
return (xp_awk_node_t*)node; return (xp_awk_node_t*)node;
} }