*** empty log message ***
This commit is contained in:
parent
6121fee9f7
commit
6f247d8bc0
@ -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>
|
||||
@ -385,7 +385,7 @@ static int __parse_expression (xp_stx_parser_t* parser)
|
||||
*/
|
||||
|
||||
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);
|
||||
if (parser->token.type == XP_STX_TOKEN_ASSIGN) {
|
||||
@ -414,6 +414,46 @@ static int __parse_expression (xp_stx_parser_t* parser)
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -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_
|
||||
@ -51,6 +51,7 @@ struct xp_stx_parser_t
|
||||
|
||||
xp_word_t method_class;
|
||||
xp_stx_name_t method_name;
|
||||
|
||||
xp_char_t* argument[32];
|
||||
xp_size_t argument_count;
|
||||
xp_char_t* temporary[32];
|
||||
|
Loading…
Reference in New Issue
Block a user