From ea7ea39fa7e1a75ad26bedec056883463eb649fe Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 13 Sep 2005 07:07:24 +0000 Subject: [PATCH] *** empty log message *** --- ase/stx/parser.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/ase/stx/parser.c b/ase/stx/parser.c index 05889e71..569493f3 100644 --- a/ase/stx/parser.c +++ b/ase/stx/parser.c @@ -1,5 +1,5 @@ /* - * $Id: parser.c,v 1.70 2005-09-11 17:01:56 bacon Exp $ + * $Id: parser.c,v 1.71 2005-09-13 07:07:24 bacon Exp $ */ #include @@ -1127,6 +1127,7 @@ static int __parse_keyword_message (xp_stx_parser_t* parser) */ xp_stx_name_t name; + xp_word_t pos; int nargs = 0; if (__parse_binary_message (parser) == -1) return -1; @@ -1156,11 +1157,20 @@ static int __parse_keyword_message (xp_stx_parser_t* parser) } nargs++; + /* TODO: check if it has too many arguments.. */ } while (parser->token.type == XP_STX_TOKEN_KEYWORD); /* TODO: SEND_TO_SUPER */ - /*EMIT_SEND_TO_SELF (parser, nargs, index of name.buffer);*/ - EMIT_SEND_TO_SELF (parser, nargs, 0); + pos = __add_symbol_literal (parser, name.buffer, name.size); + if (pos == -1) { + xp_stx_name_close (&name); + return -1; + } + /*EMIT_SEND_TO_SELF (parser, 0, pos);*/ + if (__emit_send_to_self(parser,0,pos) == -1) { + xp_stx_name_close (&name); + return -1; + } xp_stx_name_close (&name); @@ -1173,6 +1183,7 @@ static int __parse_binary_message (xp_stx_parser_t* parser) * ::= binarySelector * ::= * */ + xp_word_t pos; if (__parse_unary_message (parser) == -1) return -1; @@ -1195,8 +1206,16 @@ static int __parse_binary_message (xp_stx_parser_t* parser) } /* TODO: SEND_TO_SUPER */ - /*EMIT_SEND_TO_SELF (parser, 2, index of op);*/ - EMIT_SEND_TO_SELF (parser, 2, 0); + pos = __add_symbol_literal (parser, op, xp_strlen(op)); + if (pos == -1) { + xp_free (op); + return -1; + } + /*EMIT_SEND_TO_SELF (parser, 2, pos);*/ + if (__emit_send_to_self(parser,2,pos) == -1) { + xp_free (op); + return -1; + } xp_free (op); }