From 33639ee40f728393ed2f8cd59d114636f1849f27 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sat, 4 Jun 2005 16:27:30 +0000 Subject: [PATCH] *** empty log message *** --- ase/stx/parser.c | 47 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/ase/stx/parser.c b/ase/stx/parser.c index 2ab90915..b2cfe20a 100644 --- a/ase/stx/parser.c +++ b/ase/stx/parser.c @@ -1,5 +1,5 @@ /* - * $Id: parser.c,v 1.10 2005-06-04 07:01:57 bacon Exp $ + * $Id: parser.c,v 1.11 2005-06-04 16:27:30 bacon Exp $ */ #include @@ -25,6 +25,7 @@ xp_stx_parser_t* xp_stx_parser_open (xp_stx_parser_t* parser) parser->text = XP_NULL; parser->curc = XP_CHAR_EOF; parser->curp = XP_NULL; + return parser; } @@ -37,22 +38,46 @@ void xp_stx_parser_close (xp_stx_parser_t* parser) int xp_stx_parser_parse_method (xp_stx_parser_t* parser, xp_stx_word_t method_class, xp_stx_char_t* method_text) { - /*xp_stx_lexer_reset (&parser->lexer, text);*/ + xp_stx_assert (method_text != XP_NULL); -#if 0 - parser->token = xp_stx_lexer_consume (&parser->lexer); - if (parser->token == XP_NULL) { - //parser->token = xp_stx_lexer_consume (&parser->lexer); - //if (parser->token == XP_NULL) { - /*parser->error_code = xxx;*/ - return -1; - } -#endif + parser->error_code = 0; + parser->text = method_text; + parser->curp = method_text; + NEXT_CHAR (parser); return 0; } static int __get_token (xp_stx_parser_t* parser) { + xp_cint_t c = parser->curc; + + __skip_spaces (parser); + __skip_comment (parser); + + switch (c) { + case + } + return -1; } + +static int __get_char (xp_stx_parser_t* parser) +{ + xp_cint_t c = parser->curp; + + if (c == XP_STX_CHAR('\0')) { + parser->curc = XP_EOF_CHAR; + } + else { + parser->curc = c; + parser->curp++; + } + + return 0; +} + +static int __skip_spaces (xp_stx_parser_t* parser) +{ + while (xp_stx_isspace(parser->curc)) __get_char +}