rev 524 - in trunk: . src
SVN User <[email protected]> Thu, 20 May 2004 22:44:35 -0400
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-05-20 22:44:32 -0400 (Thu, 20 May 2004)
New Revision: 524
Modified:
trunk/STATUS.txt
trunk/src/builtins-core.c
trunk/src/parser.h
trunk/src/parser_routines.c
trunk/src/prothon.y
trunk/src/symbol.c
Log:
you can now input and display symbols as `label
Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt 2004-05-21 02:11:19 UTC (rev 523)
+++ trunk/STATUS.txt 2004-05-21 02:44:32 UTC (rev 524)
@@ -1,14 +1,14 @@
----------------------- TO-DO (highest priority first) ------------------------
+--- Add properties methods support (__get__, __set__, __delete__) rename protoList
+
+--- Add __attrs__ & __protos__ functionality.
+
--- check dict keys for mutability bit
--- nesting /* .. */ comments
---- Add properties methods support (__get__, __set__, __delete__) rename protoList
-
---- Add __attrs__ & __protos__ functionality.
-
--- Auto-documenter app
--- networking code -- web access demonstration of security
Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c 2004-05-21 02:11:19 UTC (rev 523)
+++ trunk/src/builtins-core.c 2004-05-21 02:44:32 UTC (rev 524)
@@ -65,6 +65,7 @@
#include <prothon/prothon_dll.h>
MODULE_DECLARE(Object);
+MODULE_DECLARE(Symbol);
MODULE_DECLARE(False);
MODULE_DECLARE(True);
MODULE_DECLARE(None);
@@ -389,8 +390,25 @@
}
-// ***************************** PR_FALSE *****************************************
+// ***************************** SYMBOL *****************************************
+MODULE_START(Symbol)
+{
+ Symbol_OBJ = OBJ(SYMBOL_PROTO);
+ MODULE_SET_DOC(Symbol, "Symbol prototype");
+ set_attr(ist, OBJ(OBJECT), sym(ist, "Symbol"), Symbol_OBJ);
+ set_obj_id(Symbol_OBJ, *, Symbol);
+}
+
+DEF(Symbol, str_, NULL) {
+ obj_p str_obj = get_attr(ist, self, SYM(STRING_));
+ char buf[512];
+ apr_snprintf(buf, sizeof(buf), "`%s", pr_strptr(str_obj));
+ return NEW_STRING(buf);
+}
+
+// ***************************** FALSE *****************************************
+
MODULE_START(False)
{
False_OBJ = OBJ(PR_FALSE);
@@ -819,6 +837,9 @@
MODULE_ADD_SYM(Object, toStorProxy_);
MODULE_ADD_SYM(Object, fromStorProxy_);
+ MODULE_SUB_INIT(Symbol);
+ MODULE_ADD_SYM(Symbol, str_);
+
MODULE_SUB_INIT(Seq);
MODULE_SUB_INIT(False);
Modified: trunk/src/parser.h
===================================================================
--- trunk/src/parser.h 2004-05-21 02:11:19 UTC (rev 523)
+++ trunk/src/parser.h 2004-05-21 02:44:32 UTC (rev 524)
@@ -190,6 +190,7 @@
code_p ref_expr_to_ass_op(void* param, code_p ref, code_p rparm, int iop, int op);
code_p ref_parm_body_to_def(void* param, code_p name, clist_p params, code_p self, code_p body, int flg) ;
code_p return_expr(void* param, code_p expr);
+code_p rquote_lbl_to_obj(void* param, obj_p label);
code_p bound_bind_params(void* param, code_p attr_ref, code_p obj);
code_p unbound_bind_params(void* param, code_p attr_ref, code_p obj);
code_p bound_func_params(void* param, code_p attr_ref, clist_p parms);
Modified: trunk/src/parser_routines.c
===================================================================
--- trunk/src/parser_routines.c 2004-05-21 02:11:19 UTC (rev 523)
+++ trunk/src/parser_routines.c 2004-05-21 02:44:32 UTC (rev 524)
@@ -1499,6 +1499,14 @@
add_to_const_list(param, obj);
return debug_retrn(__LINE__, p);
}
+code_p rquote_lbl_to_obj(void* param, obj_p label) {
+ code_p p = new_code(param, 2, 1, 1, OP_PUSH);
+ obj_p symbol = sym(IST, pr_strptr(label));
+ p->code_data[0].bytecode.param = 2;
+ p->code_data[1].data = symbol;
+ add_to_const_list(param, symbol);
+ return debug_retrn(__LINE__, p);
+}
code_p self_to_obj(void* param){
code_p p = new_code(param, 1, 1, 1, OP_PUSH_SELF);
return debug_retrn(__LINE__, p);
Modified: trunk/src/prothon.y
===================================================================
--- trunk/src/prothon.y 2004-05-21 02:11:19 UTC (rev 523)
+++ trunk/src/prothon.y 2004-05-21 02:44:32 UTC (rev 524)
@@ -181,6 +181,7 @@
%left UPL
%left UMI
%nonassoc '~'
+%nonassoc '`'
%right EXP
%left '.'
%left ':'
@@ -550,6 +551,7 @@
| INT_IMAG { $$ = float_to_obj(yylex_param, (double) $1, NEW_IMAG); }
| FLOAT_IMAG { $$ = float_to_obj(yylex_param, $1, NEW_IMAG); }
| STRING { $$ = string_to_obj(yylex_param, $1, NEW_STRN); }
+ | '`' LABEL %prec '`' { $$ = rquote_lbl_to_obj(yylex_param, $2); }
| target_param { $$ = tgtparm_to_obj(yylex_param, $1); }
| '{' brace_params '}' { $$ = new_dict(yylex_param, $2); }
| '[' list_params ']' { $$ = new_tuple_list(yylex_param, $2, NEW_LIST_); }
Modified: trunk/src/symbol.c
===================================================================
--- trunk/src/symbol.c 2004-05-21 02:11:19 UTC (rev 523)
+++ trunk/src/symbol.c 2004-05-21 02:44:32 UTC (rev 524)
@@ -268,16 +268,9 @@
return NULL;
}
-//********************************* str_sym ***********************************
-obj_p str_sym( isp ist, obj_p self,
- int pcnt, obj_p* lbl_parm_arr, obj_p dyn_locals ){
- return get_attr(ist, self, SYM(STRING_));
-}
-
//********************************* init_symbol *******************************
void init_symbol(isp ist){
int i;
for(i = 0; i < SYM_ENUM_COUNT; i++)
sym_id_table[i].id = sym(ist, sym_id_table[i].str);
- set_attr(ist, OBJ(SYMBOL_PROTO), SYM(STR_), new_C_func_obj(ist, str_sym, NULL));
}