[pure-lang-svn] SF.net SVN: pure-lang:[707] pure/trunk
Status: Beta
Brought to you by:
agraef
From: <ag...@us...> - 2008-09-05 00:59:11
|
Revision: 707 http://pure-lang.svn.sourceforge.net/pure-lang/?rev=707&view=rev Author: agraef Date: 2008-09-05 00:59:21 +0000 (Fri, 05 Sep 2008) Log Message: ----------- Change print syntax of external objects, 2nd attempt. Modified Paths: -------------- pure/trunk/ChangeLog pure/trunk/printer.cc pure/trunk/test/test004.log Modified: pure/trunk/ChangeLog =================================================================== --- pure/trunk/ChangeLog 2008-09-05 00:44:33 UTC (rev 706) +++ pure/trunk/ChangeLog 2008-09-05 00:59:21 UTC (rev 707) @@ -1,5 +1,10 @@ 2008-09-05 Albert Graef <Dr....@t-...> + * printer.cc: Changed <<...>> syntax for "external" objects such + as closures, thunks and pointers to #<...> syntax pilfered from + Scheme. This is less likely to be mistaken for a valid Pure + expression. + * pure.cc, lexer.ll: Renamed the interactive 'list' command to 'show', as suggested by John Cowan. This hopefully puts an end to inadvertent execution of that command, since 'show' is no prelude Modified: pure/trunk/printer.cc =================================================================== --- pure/trunk/printer.cc 2008-09-05 00:44:33 UTC (rev 706) +++ pure/trunk/printer.cc 2008-09-05 00:59:21 UTC (rev 707) @@ -166,7 +166,7 @@ static ostream& printx(ostream& os, const expr& x, bool pat, bool aspat) { char buf[64]; - if (x.is_null()) return os << "{{NULL}}"; + if (x.is_null()) return os << "#<NULL>"; //os << "{" << x.refc() << "}"; // handle "as" patterns if (aspat && x.astag()>0) { @@ -243,7 +243,7 @@ return os; } case EXPR::PTR: - return os << "{{pointer " << x.pval() << "}}"; + return os << "#<pointer " << x.pval() << ">"; case EXPR::APP: { expr u, v, w, y; exprl xs; @@ -665,7 +665,7 @@ return os; } case EXPR::PTR: - return os << "{{pointer " << x->data.p << "}}"; + return os << "#<pointer " << x->data.p << ">"; case EXPR::APP: { list<const pure_expr*> xs; prec_t p; @@ -760,11 +760,11 @@ default: { if (x->tag == 0) { const char *s = (x->data.clos && x->data.clos->n==0)?"thunk":"closure"; - return os << "{{" << s << " " << (void*)x << "}}"; + return os << "#<" << s << " " << (void*)x << ">"; } const symbol& sym = interpreter::g_interp->symtab.sym(x->tag); if (x->data.clos && x->data.clos->local) - return os << "{{closure " << sym.s << "}}"; + return os << "#<closure " << sym.s << ">"; if (sym.prec < 10) return os << '(' << sym.s << ')'; else Modified: pure/trunk/test/test004.log =================================================================== --- pure/trunk/test/test004.log 2008-09-05 00:44:33 UTC (rev 706) +++ pure/trunk/test/test004.log 2008-09-05 00:59:21 UTC (rev 707) @@ -35,15 +35,15 @@ foo 99; 99 foo2 99; -{{closure bar}} 100 +#<closure bar> 100 foo2 98; -{{closure bar}} 98 +#<closure bar> 98 foo3 99; -{{closure bar}} +#<closure bar> foo3 99 98; -{{closure bar}} 98 +#<closure bar> 98 foo3 99 99; -{{closure bar}} 100 +#<closure bar> 100 loop = loop; count n/*0:1*/ = ct/*0*/ n/*0:1*/ with ct n/*0:1*/::int = n/*0:1*/ if n/*0:1*/<=0; ct n/*0:1*/::int = ct/*1*/ (n/*0:1*/-1) { rule #0: ct n::int = n if n<=0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |