Branch: Tag:

1997-01-16

1997-01-16 05:00:48 by Fredrik Hübinette (Hubbe) <hubbe@hubbe.net>

overloading for -> and [] implemented

Rev: src/docode.c:1.7
Rev: src/interpret.c:1.19
Rev: src/language.yacc:1.17
Rev: src/las.c:1.11
Rev: src/lex.c:1.10
Rev: src/object.c:1.8
Rev: src/peep.c:1.4
Rev: src/peep.in:1.2
Rev: src/program.c:1.12
Rev: src/program.h:1.6

22:   %token F_INC_LOOP F_DEC_LOOP   %token F_INC_NEQ_LOOP F_DEC_NEQ_LOOP    - %token F_INDEX F_INDIRECT F_STRING_INDEX F_LOCAL_INDEX + %token F_INDEX F_ARROW F_INDIRECT F_STRING_INDEX F_LOCAL_INDEX   %token F_POS_INT_INDEX F_NEG_INT_INDEX   %token F_LTOSVAL F_LTOSVAL2   %token F_PUSH_ARRAY
33:    */   %token F_LFUN F_GLOBAL F_LOCAL   %token F_GLOBAL_LVALUE F_LOCAL_LVALUE - %token F_CLEAR_LOCAL - %token F_CONSTANT F_FLOAT F_STRING + %token F_CLEAR_LOCAL F_CLEAR_STRING_SUBTYPE + %token F_CONSTANT F_FLOAT F_STRING F_ARROW_STRING   %token F_NUMBER F_NEG_NUMBER F_CONST_1 F_CONST0 F_CONST1 F_BIGNUM   /*    * These are the predefined functions that can be accessed from Pike.
74:   %token F_APPLY   %token F_ARG_LIST   %token F_ARRAY_ID - %token F_ARROW +    %token F_BREAK   %token F_CASE   %token F_CLASS
156:   /* This is the grammar definition of Pike. */      #include "global.h" - RCSID("$Id: language.yacc,v 1.16 1996/12/11 00:48:38 neotron Exp $"); + RCSID("$Id: language.yacc,v 1.17 1997/01/16 05:00:44 hubbe Exp $");   #ifdef HAVE_MEMORY_H   #include <memory.h>   #endif
1143:    { $$=mkefuncallnode("aggregate_multiset",$2); }    | expr4 F_ARROW F_IDENTIFIER    { -  $$=mknode(F_INDEX,$1,mkstrnode($3)); +  $$=mknode(F_ARROW,$1,mkstrnode($3));    free_string($3);    }    ;
1160:    }else if((f=lookup_efun($1))){    $$=mkconstantsvaluenode(&f->function);    }else{ -  my_yyerror("'%s' undefined.",$1->str); +     $$=0; -  +  if( get_master() ) +  { +  reference_shared_string($1); +  push_string($1); +  reference_shared_string(current_file); +  push_string(current_file); +  SAFE_APPLY_MASTER("resolv", 2); +  +  if(throw_value.type == T_STRING) +  { +  my_yyerror("%s",throw_value.u.string->str); +  }else{ +  $$=mkconstantsvaluenode(sp-1); +  pop_stack();    } -  +  }else{ +  my_yyerror("'%s' undefined.", $1->str); +  } +  }    free_string($1);    }    | F_PREDEF F_COLON_COLON F_IDENTIFIER