*** empty log message ***
This commit is contained in:
parent
0865bdec30
commit
f0f0ca69ea
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user