*** empty log message ***

This commit is contained in:
hyung-hwan 2005-06-17 04:39:17 +00:00
parent 6121fee9f7
commit 6f247d8bc0
2 changed files with 44 additions and 3 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: parser.c,v 1.34 2005-06-16 16:42:02 bacon Exp $ * $Id: parser.c,v 1.35 2005-06-17 04:39:17 bacon Exp $
*/ */
#include <xp/stx/parser.h> #include <xp/stx/parser.h>
@ -385,7 +385,7 @@ static int __parse_expression (xp_stx_parser_t* parser)
*/ */
if (parser->token.type == XP_STX_TOKEN_IDENT) { if (parser->token.type == XP_STX_TOKEN_IDENT) {
if (__identify_ident (parser) == -1) return -1; if (__identify_ident(parser) == -1) return -1;
GET_TOKEN (parser); GET_TOKEN (parser);
if (parser->token.type == XP_STX_TOKEN_ASSIGN) { if (parser->token.type == XP_STX_TOKEN_ASSIGN) {
@ -414,6 +414,46 @@ static int __parse_expression (xp_stx_parser_t* parser)
return 0; return 0;
} }
/*
&unsupportedByte, //--- 00
&bytePushInstance, //--- 01
&bytePushArgument, //--- 02
&bytePushTemporary, //--- 03
&bytePushLiteral, //--- 04
&bytePushConstant, //--- 05
&byteAssignInstance, //--- 06
&byteAssignTemporary, //--- 07
&byteMarkArguments, //--- 08
&byteSendMessage, //--- 09
&byteSendUnary, //--- 10
&byteSendBinary, //--- 11
&unsupportedByte, //--- 12
&byteDoPrimitive, //--- 13
&unsupportedByte, //--- 14
&byteDoSpecial //--- 15
* Directly access by byte codes
> the receiver and arguments of the invoking message
> the values of the receiver's instance variables
> the values of any temporary variables required by the method
> seven special constants (true, false, nil, -1, 0, 1, and 2)
> 32 special message selectors
* contained in literal frame.
> shared variables (global, class, and pool)
> most literal constants (numbers, characters, strings, arrays, and symbols)
> most message selectors (those that are not special)
PushInstance
PushArgument -> normal arguments plus self/super(0)
PushTemporary
PushConstant -> nil, true, false, etc....
PushLiteral -> global variables, literal constants... -> access literal frame
AssignInstance
AssignTemporary
*/
staitc int __identify_ident (xp_stx_parser_t* parser, const xp_char_t* ident) staitc int __identify_ident (xp_stx_parser_t* parser, const xp_char_t* ident)
{ {

View File

@ -1,5 +1,5 @@
/* /*
* $Id: parser.h,v 1.20 2005-06-12 16:46:45 bacon Exp $ * $Id: parser.h,v 1.21 2005-06-17 04:39:17 bacon Exp $
*/ */
#ifndef _XP_STX_PARSER_H_ #ifndef _XP_STX_PARSER_H_
@ -51,6 +51,7 @@ struct xp_stx_parser_t
xp_word_t method_class; xp_word_t method_class;
xp_stx_name_t method_name; xp_stx_name_t method_name;
xp_char_t* argument[32]; xp_char_t* argument[32];
xp_size_t argument_count; xp_size_t argument_count;
xp_char_t* temporary[32]; xp_char_t* temporary[32];