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;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.