rev 293 - in trunk: pr src
SVN User <[email protected]>
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-04-06 12:39:57 -0400 (Tue, 06 Apr 2004)
New Revision: 293
Removed:
trunk/pr/bugreport.pr
Modified:
trunk/src/bytecodes.h
trunk/src/interp.c
trunk/src/parser.h
trunk/src/parser_routines.c
trunk/src/prothon.y
Log:
removed lambda
Deleted: trunk/pr/bugreport.pr
===================================================================
--- trunk/pr/bugreport.pr 2004-04-06 12:51:02 UTC (rev 292)
+++ trunk/pr/bugreport.pr 2004-04-06 16:39:57 UTC (rev 293)
@@ -1,13 +0,0 @@
-#!/usr/bin/env prothon
-
-def findall(r,s):
- result=[]
- def foundone(mo):
- &result.append!(mo.group())
- return ''
- r.sub(foundone, s)
- return result
-
-# Expect a failure here. It should read that it failed on line 12, column 9
-re = XXX.compile("m..k")
-
Modified: trunk/src/bytecodes.h
===================================================================
--- trunk/src/bytecodes.h 2004-04-06 12:51:02 UTC (rev 292)
+++ trunk/src/bytecodes.h 2004-04-06 16:39:57 UTC (rev 293)
@@ -141,14 +141,6 @@
// |opcode|# of fparam pairs|func-obj|
OP_GEN,
-// LAMBDA(formal params, code)
-// define a function and return it on the stack
-// fparam-label is symbol or PARAM_STAR, or PARAM_STAR_STAR
-// fparam-value can be an object or zero for empty
-// stack: fparam-label, fparam-value, fparam-label, fparam-value, ... -> function-object
-// param: total word count (==3)
-// |opcode|# of fparam pairs|func-obj|
-OP_LAMBDA,
/********/ OP_PARAM_WORDS_BOUNDARY, /********/
Modified: trunk/src/interp.c
===================================================================
--- trunk/src/interp.c 2004-04-06 12:51:02 UTC (rev 292)
+++ trunk/src/interp.c 2004-04-06 16:39:57 UTC (rev 293)
@@ -763,18 +763,6 @@
}
set_item(ist, func, fr_stack[fr_sp], fr_stack[fr_sp+1]);
} break;
- case OP_LAMBDA: {
- int fparams_len = fr_data_int(1)*2;
- obj_p func = fr_data(2);
- obj_p fparams_obj = new_list_obj(ist, fparams_len);
- fr_sp -= fparams_len;
- memcpy( ((list_p)(obj_data_p(fparams_obj)))->item,
- fr_stack+fr_sp, fparams_len*sizeof(list_item_t) );
- set_attr(ist, func, SYM(__FPARAMS__), fparams_obj);
- set_attr(ist, func, SYM(__GLOBALS__), frame->globals);
- set_attr(ist, func, SYM(__SYN_LOCALS__), frame->locals);
- fr_push(func);
- } break;
case OP_DEL:
fr_sp -= 2;
del_item(ist, fr_stack[fr_sp], fr_stack[fr_sp+1]);
@@ -1514,8 +1502,6 @@
break;
case OP_DEF: fprintf(fout,"%4d %20s(%4d) %s", pc, "OP_DEF", param, codedata(str, code, op, param, pc));
break;
- case OP_LAMBDA: fprintf(fout,"%4d %20s(%4d) %s", pc, "OP_LAMBDA", param, codedata(str, code, op, param, pc));
- break;
case OP_PUSH_LOCAL_REF: fprintf(fout,"%4d %20s(%4d) %s", pc, "OP_PUSH_LOCAL_REF", param, codedata(str, code, op, param, pc));
break;
case OP_PUSH_GLOBAL_REF: fprintf(fout,"%4d %20s(%4d) %s", pc, "OP_PUSH_GLOBAL_REF", param, codedata(str, code, op, param, pc));
Modified: trunk/src/parser.h
===================================================================
--- trunk/src/parser.h 2004-04-06 12:51:02 UTC (rev 292)
+++ trunk/src/parser.h 2004-04-06 16:39:57 UTC (rev 293)
@@ -120,7 +120,6 @@
#define NEW_STRN 0
#define NEW_LONG 1
#define DEF_FLG 0
-#define LAM_FLG 1
#define GEN_FLG 2
#define WTH_FLG 3
@@ -180,7 +179,7 @@
code* print_arglist(void* param, clist_p list);
code* raise_expr(void* param, code* expr);
code* ref_expr_to_ass_op(void* param, code* ref, code* rparm, int iop, int op);
-code* ref_parm_body_to_def_lambda(void* param, code* name, clist_p params, code* self, code* body, int flg) ;
+code* ref_parm_body_to_def(void* param, code* name, clist_p params, code* self, code* body, int flg) ;
code* return_expr(void* param, code* expr);
code* self_func_params(void* param, code* attr_ref, clist_p parms);
code* sparms_to_slice(void* param, code* p1, code* p2, code* p3, int parm_cnt);
Modified: trunk/src/parser_routines.c
===================================================================
--- trunk/src/parser_routines.c 2004-04-06 12:51:02 UTC (rev 292)
+++ trunk/src/parser_routines.c 2004-04-06 16:39:57 UTC (rev 293)
@@ -881,7 +881,7 @@
assert(res->len == k);
return debug_retrn(__LINE__, res);
}
-code* ref_parm_body_to_def_lambda(void* param, code* name, clist_p params, code* self, code* body, int flg) {
+code* ref_parm_body_to_def(void* param, code* name, clist_p params, code* self, code* body, int flg) {
code *res;
obj_p func;
int i, code_len, k=0, len=2, stack_depth=0, max_stack_depth=0;
@@ -926,7 +926,6 @@
switch (flg) {
case DEF_FLG: opcode = OP_DEF; pcnt = 3; depth_dec = 2; break;
case GEN_FLG: opcode = OP_GEN; pcnt = 3; depth_dec = 2; break;
- case LAM_FLG: opcode = OP_LAMBDA; pcnt = 3; depth_dec = -1; break;
case WTH_FLG: opcode = OP_WITH; pcnt = 2; depth_dec = 1; break;
}
res->code_data[k ].bytecode.opcode = opcode;
Modified: trunk/src/prothon.y
===================================================================
--- trunk/src/prothon.y 2004-04-06 12:51:02 UTC (rev 292)
+++ trunk/src/prothon.y 2004-04-06 16:39:57 UTC (rev 293)
@@ -142,7 +142,6 @@
%left ','
-%nonassoc LAMBDA
%left OR
%left AND
%nonassoc IN_
@@ -343,11 +342,11 @@
TRY compound_body FINALLY compound_body { $$ = tryfinally_body(yylex_param, $2, $4); }
;
with_statement:
- WITH obj compound_body { $$ = ref_parm_body_to_def_lambda(yylex_param, NULL, NULL, $2, $3, WTH_FLG); }
+ WITH obj compound_body { $$ = ref_parm_body_to_def(yylex_param, NULL, NULL, $2, $3, WTH_FLG); }
;
def_statement:
- def_ref '(' formal_params ')' compound_body { $$ = ref_parm_body_to_def_lambda(yylex_param, $1, $3, NULL, $5, DEF_FLG); }
- | gen_ref '(' formal_params ')' compound_body { $$ = ref_parm_body_to_def_lambda(yylex_param, $1, $3, NULL, $5, GEN_FLG); }
+ def_ref '(' formal_params ')' compound_body { $$ = ref_parm_body_to_def(yylex_param, $1, $3, NULL, $5, DEF_FLG); }
+ | gen_ref '(' formal_params ')' compound_body { $$ = ref_parm_body_to_def(yylex_param, $1, $3, NULL, $5, GEN_FLG); }
;
def_ref:
DEF_ LABEL { $$ = label_to_attrref(yylex_param, $2); state->defdoc_flag=1; }
@@ -441,11 +440,8 @@
| NOT
{ $$ = (void *)(unsigned long)__ISNOT__QUES; }
-expr:
- LAMBDA formal_params ':' expr
- { $$ = ref_parm_body_to_def_lambda(yylex_param, NULL, $2, NULL, $4, LAM_FLG); }
-
- | expr OR expr
+expr:
+ expr OR expr
{ $$ = expr_andor_expr(yylex_param, $1, $3, OR_FLAG); }
| expr AND expr
@@ -1064,7 +1060,6 @@
if (c != '!' && c != '?')
ungetch(c, state);
str_ptr[str_index++]=0;
- if (!strcmp(str_ptr,"lambda")) return LAMBDA;
if (!strcmp(str_ptr,"or")) return OR;
if (!strcmp(str_ptr,"and")) return AND;
if (!strcmp(str_ptr,"not")) return NOT;