rev 608 - in trunk: . include/prothon pr/test src

SVN User <[email protected]> Sat, 12 Jun 2004 15:44:20 -0400
Newsgroups gmane.comp.lang.prothon.cvs
Message-ID <[email protected]>
Author: mark
Date: 2004-06-12 15:44:17 -0400 (Sat, 12 Jun 2004)
New Revision: 608

Modified:
   trunk/STATUS.txt
   trunk/include/prothon/prothon.h
   trunk/pr/test/test.pr
   trunk/src/builtins-attrdict.c
   trunk/src/builtins-bytes.c
   trunk/src/builtins-core.c
   trunk/src/builtins-dict.c
   trunk/src/builtins-float.c
   trunk/src/builtins-int.c
   trunk/src/builtins-list.c
   trunk/src/builtins-protolist.c
   trunk/src/builtins-string.c
   trunk/src/builtins-tuple.c
   trunk/src/console.c
   trunk/src/symbol.c
   trunk/src/sys.c
Log:
changed Len, Cmp, len, cmp, chr, ord to 
len, cmp, len_, cmp_, chr_, ord_  

Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/STATUS.txt	2004-06-12 19:44:17 UTC (rev 608)
@@ -5,6 +5,7 @@
 		http://www.prothon.org/pipermail/prothon-user/2004-June/001895.html
 		
 --- add int.str_(spec), float.str_(spec), and vars_
+--- Allow {$var:spec} and {$$:spec}
 --- support list and dictionary object params in string.fmt()
 
 --- add Object.data_ (builtins-databytes.c)

Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/include/prothon/prothon.h	2004-06-12 19:44:17 UTC (rev 608)
@@ -380,7 +380,7 @@
 	NE__QUES,		
 	EQ__QUES,		
 
-	CMP,
+	CMP_,
 	OR_,		
 	XOR_,	
 	AND_,	
@@ -449,7 +449,7 @@
 	DELITEM_,
 	OBJLIST_,
 	DEL_,
-	LEN,
+	LEN_,
 	MAX,
 	MIN,
 	COPY,
@@ -1045,7 +1045,7 @@
 #define FORM_RPARAM     (list2(ist, SYM(RPARAM),NULL))
 
 // FORM_PARAM2: same for 2 right params
-// example: Cmp(a,b)
+// example: cmp(a,b)
 #define FORM_PARAM2    (list4(ist, SYM(PARAM1), NULL, SYM(PARAM2), NULL))
 
 // FORM_STARn_PARAM: convenience macros for variable number of formal right parameters

Modified: trunk/pr/test/test.pr
===================================================================
--- trunk/pr/test/test.pr	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/pr/test/test.pr	2004-06-12 19:44:17 UTC (rev 608)
@@ -1,3 +1,13 @@
 #!/usr/bin/env prothon
 
-print "*{0:{1}}*".fmt("abc",10)
\ No newline at end of file
+# -i -dpbc ..\pr\test\test.pr
+
+try:
+	print 0x123.chr_()
+except Exception, e:
+	print e
+
+try:
+	0x123456789.chr_()
+except Exception, e:
+	print e

Modified: trunk/src/builtins-attrdict.c
===================================================================
--- trunk/src/builtins-attrdict.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-attrdict.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -247,7 +247,7 @@
 	return NULL;
 }
 
-DEF(AttrDict, len, NULL) {
+DEF(AttrDict, len_, NULL) {
 	obj_p obj;
 	int res;
 	BIN_CONTENT_CHK(AttrDict);
@@ -308,7 +308,7 @@
 	MODULE_ADD_SYM(AttrDict, str_);
 	MODULE_ADD_SYM(AttrDict, hasKey_QUES);
 	MODULE_ADD_SYM(AttrDict, items);
-	MODULE_ADD_SYM(AttrDict, len);
+	MODULE_ADD_SYM(AttrDict, len_);
 	MODULE_ADD_SYM(AttrDict, keys);
 	MODULE_ADD_SYM(AttrDict, values);
 	MODULE_ADD_SYM(AttrDict, get);
Modified: trunk/src/builtins-bytes.c
===================================================================
--- trunk/src/builtins-bytes.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-bytes.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -242,7 +242,7 @@
 	return NULL;
 }
 
-DEF(Bytes, cmp, FORM_RPARAM){
+DEF(Bytes, cmp_, FORM_RPARAM){
 	obj_p other = parms[1];
 	size_t i, len, len1, len2;
 	u8_t *p1, *p2, str_flg = FALSE;
@@ -323,7 +323,7 @@
 	return obj;
 }
 
-DEF(Bytes, len, NULL) {
+DEF(Bytes, len_, NULL) {
 	BIN_CONTENT_CHK(Bytes);
 	return NEW_INT(bytes_len(self));
 }
@@ -399,8 +399,8 @@
 	MODULE_ADD_SYM(Bytes, bool__QUES);
 	MODULE_ADD_SYM(Bytes, str_);
 	MODULE_ADD_SYM(Bytes, hash_);
-	MODULE_ADD_SYM(Bytes, cmp);
-	MODULE_ADD_SYM(Bytes, len);
+	MODULE_ADD_SYM(Bytes, cmp_);
+	MODULE_ADD_SYM(Bytes, len_);
 	MODULE_ADD_SYM(Bytes, getItem_);
 	MODULE_ADD_SYM(Bytes, add_);
 	MODULE_ADD_SYM(Bytes, mul_);
Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-core.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -190,12 +190,12 @@
 	return NULL;
 }
 
-DEF(Object, Len, FORM_RPARAM) {
-	return call_func0(ist, parms[1], SYM(LEN));
+DEF(Object, len, FORM_RPARAM) {
+	return call_func0(ist, parms[1], SYM(LEN_));
 }
 
-DEF(Object, Cmp, FORM_PARAM2) {
-	return call_func1(ist, parms[1], SYM(CMP), parms[3]);
+DEF(Object, cmp, FORM_PARAM2) {
+	return call_func1(ist, parms[1], SYM(CMP_), parms[3]);
 }
 
 DEF(Object, Max, FORM_RPARAM) {
@@ -306,7 +306,7 @@
 }
 
 DEF(Object, eq__QUES, FORM_RPARAM) {
-	obj_p cmp_obj = call_func1(ist, self, SYM(CMP), parms[1]); 
+	obj_p cmp_obj = call_func1(ist, self, SYM(CMP_), parms[1]); 
 	if(catch_exception(ist, OBJ(FUNCNOTFOUND_EXC), NULL))
 		return OBJ(PR_FALSE);
 	if (cmp_obj && *((i64_t*)(obj_dataptr(cmp_obj))) == 0)
@@ -324,25 +324,25 @@
 }
 
 DEF(Object, lt__QUES, FORM_RPARAM) {
-	obj_p cmp_obj = call_func1(ist, self, SYM(CMP), parms[1]); if_exc_return NULL;
+	obj_p cmp_obj = call_func1(ist, self, SYM(CMP_), parms[1]); if_exc_return NULL;
 	if (cmp_obj && *((i64_t*)(obj_dataptr(cmp_obj))) < 0)	return OBJ(PR_TRUE);
 	else											        return OBJ(PR_FALSE);
 }
 
 DEF(Object, le__QUES, FORM_RPARAM) {
-	obj_p cmp_obj = call_func1(ist, self, SYM(CMP), parms[1]); if_exc_return NULL;
+	obj_p cmp_obj = call_func1(ist, self, SYM(CMP_), parms[1]); if_exc_return NULL;
 	if (cmp_obj && *((i64_t*)(obj_dataptr(cmp_obj))) <= 0)	return OBJ(PR_TRUE);
 	else											        return OBJ(PR_FALSE);
 }
 
 DEF(Object, gt__QUES, FORM_RPARAM) {
-	obj_p cmp_obj = call_func1(ist, self, SYM(CMP), parms[1]); if_exc_return NULL;
+	obj_p cmp_obj = call_func1(ist, self, SYM(CMP_), parms[1]); if_exc_return NULL;
 	if (cmp_obj && *((i64_t*)(obj_dataptr(cmp_obj))) > 0)	return OBJ(PR_TRUE);
 	else											        return OBJ(PR_FALSE);
 }
 
 DEF(Object, ge__QUES, FORM_RPARAM) {
-	obj_p cmp_obj = call_func1(ist, self, SYM(CMP), parms[1]); if_exc_return NULL;
+	obj_p cmp_obj = call_func1(ist, self, SYM(CMP_), parms[1]); if_exc_return NULL;
 	if (cmp_obj && *((i64_t*)(obj_dataptr(cmp_obj))) >= 0)	return OBJ(PR_TRUE);
 	else											        return OBJ(PR_FALSE);
 }
@@ -414,7 +414,7 @@
 
 DEF(False, str_,  NULL) { return NEW_STRING("False"); }
 DEF(False, bool__QUES, NULL) { return False_OBJ; }
-DEF(False, cmp, FORM_RPARAM) { 
+DEF(False, cmp_, FORM_RPARAM) { 
 	if (parms[1] == False_OBJ)
 		return NEW_INT(0);
 	else
@@ -433,7 +433,7 @@
 
 DEF(True, str_,  NULL)  { return NEW_STRING("True"); }
 DEF(True, bool__QUES, NULL)  { return True_OBJ; }
-DEF(True, cmp, FORM_RPARAM) { 
+DEF(True, cmp_, FORM_RPARAM) { 
 	if (parms[1] == OBJ(PR_FALSE))
 		return NEW_INT(1); 
 	else if (parms[1] == True_OBJ)
@@ -849,8 +849,8 @@
 	MODULE_ADD_SYM(Object, setProto);
 	MODULE_ADD_SYM(Object, addProto);
 	MODULE_ADD_SYM(Object, protoChain);
-	MODULE_ADD_SYM(Object, Cmp);
-	MODULE_ADD_SYM(Object, Len);
+	MODULE_ADD_SYM(Object, cmp);
+	MODULE_ADD_SYM(Object, len);
 	MODULE_ADD_SYM(Object, Max);
 	MODULE_ADD_SYM(Object, Min);
 	MODULE_ADD_SYM(Object, getItem_);
@@ -884,12 +884,12 @@
 	MODULE_SUB_INIT(False);
 	MODULE_ADD_SYM(False, str_);
 	MODULE_ADD_SYM(False, bool__QUES);
-	MODULE_ADD_SYM(False, cmp);
+	MODULE_ADD_SYM(False, cmp_);
 
 	MODULE_SUB_INIT(True);
 	MODULE_ADD_SYM(True, str_);
 	MODULE_ADD_SYM(True, bool__QUES);
-	MODULE_ADD_SYM(True, cmp);
+	MODULE_ADD_SYM(True, cmp_);
 	MODULE_ADD_SYM(True, getCmp_);
 
 	MODULE_SUB_INIT(None);

Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-dict.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -476,7 +476,7 @@
 	return NULL;
 }
 
-DEF(Dict, len, NULL) {
+DEF(Dict, len_, NULL) {
 	BIN_CONTENT_CHK(Dict);
 	return NEW_INT(dict_len(ist, self));
 }
@@ -604,7 +604,7 @@
 	MODULE_ADD_SYM(Dict, str_);
 	MODULE_ADD_SYM(Dict, hasKey_QUES);
 	MODULE_ADD_SYM(Dict, items);
-	MODULE_ADD_SYM(Dict, len);
+	MODULE_ADD_SYM(Dict, len_);
 	MODULE_ADD_SYM(Dict, keys);
 	MODULE_ADD_SYM(Dict, values);
 	MODULE_ADD_SYM(Dict, get);

Modified: trunk/src/builtins-float.c
===================================================================
--- trunk/src/builtins-float.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-float.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -296,7 +296,7 @@
 }
 
 
-DEF(Float, cmp, FORM_RPARAM){
+DEF(Float, cmp_, FORM_RPARAM){
 	double float_other;
 	obj_p other = parms[1];
 	BIN_CONTENT_CHK(Float);
@@ -392,7 +392,7 @@
 	MODULE_ADD_SYM(Float, str_);
 	MODULE_ADD_SYM(Float, hash_);
 	MODULE_ADD_SYM(Float, eq__QUES);
-	MODULE_ADD_SYM(Float, cmp);
+	MODULE_ADD_SYM(Float, cmp_);
 	MODULE_ADD_SYM(Float, rCmp_);
 	MODULE_ADD_SYM(Float, abs_);
 	MODULE_ADD_SYM(Float, neg_);

Modified: trunk/src/builtins-int.c
===================================================================
--- trunk/src/builtins-int.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-int.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -2359,7 +2359,7 @@
 	return new_int_long_obj(ist, long_pow(ist, a, b, NULL));
 }
 
-DEF(Int, cmp, FORM_RPARAM){
+DEF(Int, cmp_, FORM_RPARAM){
 	obj_p other = parms[1];
 	BIN_CONTENT_CHK(Int);
 	if (!is_Int(other)) {
@@ -2563,11 +2563,20 @@
 	return gen_obj;
 }
 
-DEF(Int, chr, NULL) {
-	char s[1];
+DEF(Int, chr_, NULL) {
+	ch3_t ch3;
+	i32_t val;
 	BIN_CONTENT_CHK(Int);
-	s[0] = (char) int2i32t(ist, self);
-	return NEW_STRINGN(s, 1);
+	val = int2i32t(ist, self);
+	if (val < 0 || val >= 0x10ffff) {
+		raise_exception( ist, OBJ(VALUE_EXC), 
+			             "integer value outside of unicode character range" );
+		return NULL;
+	}
+	ch3.b0 = val       & 0xff;
+	ch3.b1 = val >>  8 & 0xff;
+	ch3.b2 = val >> 16 & 0xff;
+	return NEW_STRING_CH3(&ch3, 1);
 }
 
 
@@ -2585,7 +2594,7 @@
 		 (  self->data_type == DATA_TYPE_IMMDATA && 
 		   limit->data_type == DATA_TYPE_IMMDATA ?
 			 (self->data.i64 == limit->data.i64) :
-			 !(call_func1(ist, self, SYM(CMP), limit)->data.i64) ) ) {
+			 !(call_func1(ist, self, SYM(CMP_), limit)->data.i64) ) ) {
 		if (limit) {
 			read_unlock(ist, self);
 			del_attr(ist, self, SYM_LIMIT);
@@ -2603,7 +2612,7 @@
 		int_imm_value(self)++;
 		def_write_unlock(self);
 	} else {
-		call_func1(ist, self, SYM(CMP), tmp = NEW_INT(1));
+		call_func1(ist, self, SYM(CMP_), tmp = NEW_INT(1));
 		del_unlock(tmp);
 	}
 	return res;
@@ -2623,8 +2632,8 @@
 	MODULE_ADD_SYM(Int, str_);
 	MODULE_ADD_SYM(Int, hash_);
 	MODULE_ADD_SYM(Int, eq__QUES);
-	MODULE_ADD_SYM(Int, cmp);
-	MODULE_ADD_SYM(Int, chr);
+	MODULE_ADD_SYM(Int, cmp_);
+	MODULE_ADD_SYM(Int, chr_);
 	MODULE_ADD_SYM(Int, abs_);
 	MODULE_ADD_SYM(Int, neg_);
 	MODULE_ADD_SYM(Int, pos_);

Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-list.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -249,7 +249,7 @@
 	}
 	arr[0] = NULL;
 	arr[1] = b;
-	res = call_func(ist, a, SYM(CMP), 2, arr, NULL);
+	res = call_func(ist, a, SYM(CMP_), 2, arr, NULL);
 	if_exc_return 0;
 	return (res->data.i64 < 0);
 }

Modified: trunk/src/builtins-protolist.c
===================================================================
--- trunk/src/builtins-protolist.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-protolist.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -215,7 +215,7 @@
 	return res;
 }
 
-DEF(ProtoList, len, NULL) {
+DEF(ProtoList, len_, NULL) {
 	BIN_CONTENT_CHK(ProtoList);
 	return NEW_INT(proto_len(ist, self->data.ptr));
 }
@@ -231,7 +231,7 @@
 	MODULE_ADD_SYM(ProtoList, init_);
 	MODULE_ADD_SYM(ProtoList, str_);
 	MODULE_ADD_SYM(ProtoList, eq__QUES);
-	MODULE_ADD_SYM(ProtoList, len);
+	MODULE_ADD_SYM(ProtoList, len_);
 	MODULE_ADD_SYM(ProtoList, rIn__QUES);
 	MODULE_ADD_SYM(ProtoList, rNotIn__QUES);
 	MODULE_ADD_SYM(ProtoList, getItem_);
Modified: trunk/src/builtins-string.c
===================================================================
--- trunk/src/builtins-string.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-string.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -489,7 +489,7 @@
 	return NULL;
 }
 
-DEF(String, cmp, FORM_RPARAM){
+DEF(String, cmp_, FORM_RPARAM){
 	obj_p other = parms[1];
 	data_size_t i, slen, olen, len;
 	ch3_p sptr, optr;
@@ -727,10 +727,10 @@
 	return res;
 }
 
-DEF(String, ord, NULL) {
+DEF(String, ord_, NULL) {
 	BIN_CONTENT_CHK(String);
 	if (!pr_strlen(self)) {
-		raise_exception(ist, OBJ(VALUE_EXC), "ord not valid on empty string");
+		raise_exception(ist, OBJ(VALUE_EXC), "ord_ not valid on empty string");
 		return NULL;
 	}
 	return NEW_INT(ORD(pr_ch3ptr(self)));
@@ -817,7 +817,7 @@
 	else						                              return OBJ(PR_TRUE);
 }
 
-DEF(String, len, NULL) {
+DEF(String, len_, NULL) {
 	BIN_CONTENT_CHK(String);
 	return NEW_INT(pr_strlen(self));
 }
@@ -1134,9 +1134,9 @@
 	MODULE_ADD_SYM(String, bool__QUES);
 	MODULE_ADD_SYM(String, str_);
 	MODULE_ADD_SYM(String, hash_);
-	MODULE_ADD_SYM(String, cmp);
-	MODULE_ADD_SYM(String, ord);
-	MODULE_ADD_SYM(String, len);
+	MODULE_ADD_SYM(String, cmp_);
+	MODULE_ADD_SYM(String, ord_);
+	MODULE_ADD_SYM(String, len_);
 	MODULE_ADD_SYM(String, getItem_);
 	MODULE_ADD_SYM(String, add_);
 	MODULE_ADD_SYM(String, mul_);

Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/builtins-tuple.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -129,7 +129,7 @@
 	return self;
 }
 
-DEF(Tuple, cmp, FORM_RPARAM) { 
+DEF(Tuple, cmp_, FORM_RPARAM) { 
 	int i, llen, tlen, mlen;
 	obj_p res;
 	obj_p self_item, tgt_item, tgt_list;
@@ -145,7 +145,7 @@
 	for(i=0; i < mlen; i++) {
 		self_item = list_item(ist, self, i);
 		tgt_item  = list_item(ist, tgt_list, i);
-		res = call_func1(ist, self_item, SYM(CMP), tgt_item); if_exc_return NULL;
+		res = call_func1(ist, self_item, SYM(CMP_), tgt_item); if_exc_return NULL;
 		if (res->data.i64)
 			return NEW_INT(res->data.i64);
 	}
@@ -243,7 +243,7 @@
 	return res;
 }
 
-DEF(Tuple, len, NULL) { 
+DEF(Tuple, len_, NULL) { 
 	BIN_CONTENT_CHK(Tuple);
 	return NEW_INT(list_len(ist, self));
 }
@@ -254,11 +254,11 @@
 	BIN_CONTENT_CHK(Tuple);
 	if (llen == 0) return OBJ(NONE);
 	if (llen == 1) return list_item(ist, self, 0);
-	cmp_obj = call_func1(ist, list_item(ist, self, 0), SYM(CMP), list_item(ist, self, 1));  if_exc_return NULL;
+	cmp_obj = call_func1(ist, list_item(ist, self, 0), SYM(CMP_), list_item(ist, self, 1));  if_exc_return NULL;
 	if (cmp_obj->data.i64 < 0) min_item = list_item(ist, self, 0);
 	else					   min_item = list_item(ist, self, 1);
 	for(i=2; i < llen; i++) {
-		cmp_obj = call_func1(ist, list_item(ist, self, i), SYM(CMP), min_item);  if_exc_return NULL;
+		cmp_obj = call_func1(ist, list_item(ist, self, i), SYM(CMP_), min_item);  if_exc_return NULL;
 		if (cmp_obj->data.i64 < 0) min_item = list_item(ist, self, i);
 	}
 	return min_item;
@@ -270,11 +270,11 @@
 	BIN_CONTENT_CHK(Tuple);
 	if (llen == 0) return OBJ(NONE);
 	if (llen == 1) return list_item(ist, self, 0);
-	cmp_obj = call_func1(ist, list_item(ist, self, 0), SYM(CMP), list_item(ist, self, 1));  if_exc_return NULL;
+	cmp_obj = call_func1(ist, list_item(ist, self, 0), SYM(CMP_), list_item(ist, self, 1));  if_exc_return NULL;
 	if (cmp_obj->data.i64 > 0) max_item = list_item(ist, self, 0);
 	else					   max_item = list_item(ist, self, 1);
 	for(i=2; i < llen; i++) {
-		cmp_obj = call_func1(ist, list_item(ist, self, i), SYM(CMP), max_item);  if_exc_return NULL;
+		cmp_obj = call_func1(ist, list_item(ist, self, i), SYM(CMP_), max_item);  if_exc_return NULL;
 		if (cmp_obj->data.i64 > 0) max_item = list_item(ist, self, i);
 	}
 	return max_item;
@@ -356,10 +356,10 @@
 	MODULE_ADD_SYM(Tuple, init_);	
 	MODULE_ADD_SYM(Tuple, str_);	
 	MODULE_ADD_SYM(Tuple, hash_);
-	MODULE_ADD_SYM(Tuple, len);
+	MODULE_ADD_SYM(Tuple, len_);
 	MODULE_ADD_SYM(Tuple, min);
 	MODULE_ADD_SYM(Tuple, max);
-	MODULE_ADD_SYM(Tuple, cmp);
+	MODULE_ADD_SYM(Tuple, cmp_);
 	MODULE_ADD_SYM(Tuple, eq__QUES);
 	MODULE_ADD_SYM(Tuple, count);
 	MODULE_ADD_SYM(Tuple, index);

Modified: trunk/src/console.c
===================================================================
--- trunk/src/console.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/console.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -88,14 +88,16 @@
 char* ps1(isp ist){
 	obj_p prompt;
 	if (!sys) sys = get_attr(ist, OBJ(OBJECT), sym(ist, "Sys"));
-	prompt = get_attr(ist, sys, sym(ist, "ps1"));
+	prompt = get_attr(ist, sys, sym(ist, "cons"));
+	prompt = get_attr(ist, prompt, sym(ist, "ps1"));
 	return pr2c_strptr(ist, prompt);
 }
 
 char* ps2(isp ist){
 	obj_p prompt;
 	if (!sys) sys = get_attr(ist, OBJ(OBJECT), sym(ist, "Sys"));
-	prompt = get_attr(ist, sys, sym(ist, "ps2"));
+	prompt = get_attr(ist, sys, sym(ist, "cons"));
+	prompt = get_attr(ist, prompt, sym(ist, "ps2"));
 	return pr2c_strptr(ist, prompt);
 }
 

Modified: trunk/src/symbol.c
===================================================================
--- trunk/src/symbol.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/symbol.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -76,7 +76,7 @@
 	{ "ge__QUES",		0 },
 	{ "ne__QUES",		0 },
 	{ "eq__QUES",		0 },
-	{ "cmp",			0 },
+	{ "cmp_",			0 },
 	{ "or_",			0 },
 	{ "xor_",			0 },
 	{ "and_",			0 },
@@ -142,7 +142,7 @@
 	{ "delItem_",		0 },
 	{ "objList_",		0 }, // f3
 	{ "del_",			0 },
-	{ "len",			0 },
+	{ "len_",			0 },
 	{ "max",			0 },
 	{ "min",			0 },
 	{ "copy",			0 },

Modified: trunk/src/sys.c
===================================================================
--- trunk/src/sys.c	2004-06-12 07:47:57 UTC (rev 607)
+++ trunk/src/sys.c	2004-06-12 19:44:17 UTC (rev 608)
@@ -137,7 +137,7 @@
 	int have_home = FALSE;
 	char *s, *d, path[1024], home[1024], *pp;
 	obj_p sys_path, vers_tuple;
-	obj_p sys_module;
+	obj_p sys_module, cons_obj;
 	apr_dir_t *search_dir = NULL;
 	apr_finfo_t file_info;
 	apr_file_t *file_pth;
@@ -215,8 +215,11 @@
 #else
 	set_attr(ist, sys_module, sym(ist, "platform"), NEW_STRING("unknown"));
 #endif
-	set_attr(ist, sys_module, sym(ist, "ps1"), NEW_STRING(">>> "));
-	set_attr(ist, sys_module, sym(ist, "ps2"), NEW_STRING("... "));
+	cons_obj = new_object(ist, NULL);
+	set_obj_wracc(cons_obj, ACC_USER1);
+	set_attr(ist, sys_module, sym(ist, "cons"), cons_obj);
+	set_attr(ist, cons_obj, sym(ist, "ps1"), NEW_STRING(">>> "));
+	set_attr(ist, cons_obj, sym(ist, "ps2"), NEW_STRING("... "));
 	set_attr(ist, sys_module, sym(ist, "execpath"), NEW_STRING(prog_path));
 	set_attr(ist, sys_module, sym(ist, "argv"),     argv_obj);