From a5696df6a0e95507cd7f25c300a5b1f13aee5298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Mon, 10 Mar 1997 19:34:04 -0800 Subject: [PATCH] now handles class Rev: bin/hilfe:1.7 --- bin/hilfe | 49 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/bin/hilfe b/bin/hilfe index 3afde322a3..65c20f3f29 100755 --- a/bin/hilfe +++ b/bin/hilfe @@ -21,12 +21,19 @@ /* #define DEBUG */ + mapping variables=([]); string *functions=({}); string *function_names=({}); mapping query_variables() { return variables; } /* do nothing */ +void my_write(mixed x) +{ + write(sprintf("%O",x)); +} + + object eval(string f) { string prog,file; @@ -176,14 +183,14 @@ void cut_buffer(int where) pos-=old-new; if(pos<0) pos=0; eq_pos-=old-new; if(eq_pos<0) eq_pos=-1; #ifdef DEBUG - write("CUT input = "+code_value(input,1)+" pos="+pos+"\n"); + write("CUT input = "+my_write(input)+" pos="+pos+"\n"); #endif } void print_version() { write(version()+ - " Running Hilfe v1.4 (Incremental Pike Frontend)\n"); + " Running Hilfe v1.5 (Incremental Pike Frontend)\n"); } @@ -214,8 +221,8 @@ int do_parse() { first_word=input[0..pos-1]; #ifdef DEBUG - write("First = "+code_value(first_word)+" pos="+pos+"\n"); - write("input = "+code_value(input)+"\n"); + write("First = "+my_write(first_word)+" pos="+pos+"\n"); + write("input = "+my_write(input)+"\n"); #endif switch(first_word) { @@ -370,6 +377,7 @@ mixed parse_function(string fun) case "mixed": case "program": case "function": + case "class": /* parse function */ if(eq_pos!=-1) break; /* it's a variable */ sscanf(fun,first_word+"%s",name); @@ -378,25 +386,20 @@ mixed parse_function(string fun) name=c[0]; c=c[1]; - if(c[0]=='(') + int i; + if((i=member_array(name,function_names))!=-1) { - int i; - if((i=member_array(name,function_names))!=-1) + b=functions[i]; + functions[i]=fun; + if(!eval("")) functions[i]=b; + }else{ + if(eval(fun)) { - b=functions[i]; - functions[i]=fun; - if(!eval("")) functions[i]=b; - }else{ - if(eval(fun)) - { - functions+=({fun}); - function_names+=({name}); - } + functions+=({fun}); + function_names+=({name}); } - return 1; - }else{ - write("Syntax error.\n"); } + return 1; } } @@ -482,6 +485,7 @@ mixed parse_statement(string ex) return 1; default: + if(ex==";") return 1; /* parse expressions */ a="mixed ___Foo4711() { return (mixed)("+ex[0..strlen(ex)-2]+"); }\n"; if(foo=eval(a)) @@ -505,7 +509,7 @@ void stdin(string s) object foo; #ifdef DEBUG - write("input: '"+code_value(s,1)+"'\n"); + write("input: '"+my_write(s)+"'\n"); #endif s=skipwhite(s); @@ -519,11 +523,6 @@ void stdin(string s) // if(!strlen(input)) write("> "); } -void my_write(mixed x) -{ - write(sprintf("%O",x)); -} - void signal_trap(int s) { clean_buffer(); -- GitLab