Skip to content

Commit

Permalink
Position/locate/pseudocode revamp
Browse files Browse the repository at this point in the history
  • Loading branch information
pzinn committed Jul 22, 2024
1 parent a7a2f1f commit aeb1b30
Show file tree
Hide file tree
Showing 38 changed files with 635 additions and 554 deletions.
8 changes: 4 additions & 4 deletions M2/Macaulay2/c/error.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ void fatal(const char *s,...)
va_list ap;
va_start(ap,s);
if (cur.filename != NULL) {
fprintf(stderr,errfmt,cur.filename,cur.lineno,cur.column+1,"");
fprintf(stderr,errfmt,cur.filename,cur.lineno,cur.column,"");
}
vfprintf(stderr,s,ap);
fprintf(stderr,"\n");
Expand All @@ -26,7 +26,7 @@ void error(char *s,...)
va_list ap;
va_start(ap,s);
fprintf(stderr,errfmt,
cur.filename!=NULL?cur.filename:"",cur.lineno,cur.column+1,"");
cur.filename!=NULL?cur.filename:"",cur.lineno,cur.column,"");
vfprintf(stderr,s,ap);
fprintf(stderr,"\n");
fflush(stderr);
Expand Down Expand Up @@ -117,11 +117,11 @@ void fail(char *filename, int lineno) {
void downpos(node n){
struct POS *p = pos(n);
if (p != NULL && p->filename != NULL) {
fprintf(stderr,errfmt,p->filename,p->lineno,p->column+1,"");
fprintf(stderr,errfmt,p->filename,p->lineno,p->column,"");
}
else {
assert(cur.filename != NULL);
fprintf(stderr,errfmt,cur.filename,cur.lineno,cur.column+1,"");
fprintf(stderr,errfmt,cur.filename,cur.lineno,cur.column,"");
}
}

Expand Down
3 changes: 2 additions & 1 deletion M2/Macaulay2/d/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ set(DLIST
parser.d
binding.d
basic.d
convertr.d
common.d
util.d
convertr.d
struct.d
classes.dd
buckets.dd
Expand All @@ -82,6 +82,7 @@ set(DLIST
xmlactors.d # removed unless WITH_XML
actors5.d
actors6.dd
debugging.dd
threads.dd
python.d # removed unless WITH_PYTHON
interface.dd interface2.d
Expand Down
3 changes: 2 additions & 1 deletion M2/Macaulay2/d/Makefile.files.in
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ M2_DFILES += lex.d
M2_DFILES += parser.d
M2_DFILES += binding.d
M2_DFILES += basic.d
M2_DFILES += convertr.d
M2_DFILES += common.d
M2_DFILES += util.d
M2_DFILES += convertr.d
M2_DFILES += struct.d
M2_DFILES += classes.dd
M2_DFILES += buckets.dd
Expand Down Expand Up @@ -86,6 +86,7 @@ M2_SRCFILES += xmlactors.d
endif
M2_DFILES += actors5.d
M2_DFILES += actors6.dd
M2_DFILES += debugging.dd
M2_DFILES += threads.dd

ifeq (@PYTHON@,yes)
Expand Down
8 changes: 8 additions & 0 deletions M2/Macaulay2/d/actors.d
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,7 @@ assignNewFun(newclass:Code,rhs:Code):Expr := (
is o:HashTable do installMethod(NewE,o,eval(rhs))
else printErrorMessageE(newclass,"expected a hash table as prospective class"));
AssignNewFun = assignNewFun;
setup(NewS,AssignNewFun);
assignNewOfFun(newclass:Code,newparent:Code,rhs:Code):Expr := (
c := eval(newclass);
when c is Error do c
Expand All @@ -910,6 +911,7 @@ assignNewOfFun(newclass:Code,newparent:Code,rhs:Code):Expr := (
else printErrorMessageE(newparent,"expected a hash table as prospective parent"))
else printErrorMessageE(newclass,"expected a hash table as prospective class"));
AssignNewOfFun = assignNewOfFun;
setup(NewOfS,AssignNewOfFun);
assignNewFromFun(newclass:Code,newinitializer:Code,rhs:Code):Expr := (
c := eval(newclass);
when c is Error do c
Expand All @@ -920,6 +922,7 @@ assignNewFromFun(newclass:Code,newinitializer:Code,rhs:Code):Expr := (
else printErrorMessageE(newinitializer,"expected a hash table"))
else printErrorMessageE(newclass,"expected a hash table as prospective class"));
AssignNewFromFun = assignNewFromFun;
setup(NewFromS,AssignNewFromFun);
assignNewOfFromFun(args:CodeSequence):Expr := (
newclass := args.0;
newparent := args.1;
Expand All @@ -946,6 +949,7 @@ assignNewOfFromFun(args:CodeSequence):Expr := (
else printErrorMessageE(newclass,"expected a hash table as prospective class")
);
AssignNewOfFromFun = assignNewOfFromFun;
setup(NewOfFromS,AssignNewOfFromFun);
installFun2(a:Expr,args:CodeSequence):Expr := (
opr := eval(args.0);
when opr
Expand Down Expand Up @@ -1010,6 +1014,7 @@ installMethodFun2(arg1:Expr,args:CodeSequence):Expr := (
else buildErrorPacket("expected left hand parameter to be a function, type, or a hash table"));
installMethodFun(args:CodeSequence):Expr := installMethodFun2(eval(args.1),args);
InstallMethodFun = installMethodFun;
setup(ColonEqualS,InstallMethodFun);

mess1 := "objects on left hand side of assignment are not types (use ':=' instead?)";

Expand Down Expand Up @@ -1044,6 +1049,7 @@ installValueFun(args:CodeSequence):Expr := (
-- else buildErrorPacket(mess1))
-- else buildErrorPacket(mess1));
InstallValueFun = installValueFun;
setup(EqualS,InstallValueFun);

unaryInstallMethodFun(meth:Code,argtype:Code,body:Code):Expr := (
f := eval(meth);
Expand All @@ -1058,6 +1064,7 @@ unaryInstallMethodFun(meth:Code,argtype:Code,body:Code):Expr := (
)
else printErrorMessageE(argtype,"expected a hash table")));
UnaryInstallMethodFun = unaryInstallMethodFun;
setup(ColonEqualS,UnaryInstallMethodFun);

unaryInstallValueFun(meth:Code,lhs:Code,rhs:Code):Expr := (
oper := eval(meth);
Expand Down Expand Up @@ -1089,6 +1096,7 @@ unaryInstallValueFun(meth:Code,lhs:Code,rhs:Code):Expr := (
-- else printErrorMessageE(argtype,"expected a hash table")
-- );
UnaryInstallValueFun = unaryInstallValueFun;
setup(EqualS,UnaryInstallValueFun);

flatten(a:Sequence):Sequence := (
-- warning - this function may return its argument without copying
Expand Down
18 changes: 0 additions & 18 deletions M2/Macaulay2/d/actors2.dd
Original file line number Diff line number Diff line change
Expand Up @@ -660,24 +660,6 @@ unSingleton(e:Expr):Expr := (
else e);
setupfun("unsequence",unSingleton);

disassemble(e:Expr):Expr := (
when e
is f:FunctionClosure do toExpr(tostring(Code(f.model)))
is f:functionCode do toExpr(tostring(Code(f)))
is c:CodeClosure do toExpr(tostring(c.code))
is s:SpecialExpr do disassemble(s.e)
else WrongArg("pseudocode or a function closure derived from Macaulay 2 code")
);
setupfun("disassemble", disassemble);

pseudocode(e:Expr):Expr := (
when e
is f:FunctionClosure do Expr(CodeClosure(f.frame, Code(f.model)))
is s:SpecialExpr do pseudocode(s.e)
else WrongArg("a function closure derived from Macaulay 2 code")
);
setupfun("pseudocode", pseudocode);

cpuTime(e:Expr):Expr := (
when e
is s:Sequence do if length(s) == 0 then toExpr(cpuTime())
Expand Down
32 changes: 16 additions & 16 deletions M2/Macaulay2/d/actors3.d
Original file line number Diff line number Diff line change
Expand Up @@ -1213,7 +1213,7 @@ map(a1:Sequence,a2:Sequence,f:Expr):Expr := (
Expr(ret)
)
else ( -- (x,y) -> ...
if numparms != 2 then WrongNumArgs(model.arrow,numparms,2)
if numparms != 2 then WrongNumArgs(Code(model),numparms,2)
else (
saveLocalFrame := localFrame;
values := new Sequence len framesize do provide nullE;
Expand Down Expand Up @@ -1340,7 +1340,7 @@ map(a:Sequence,f:Expr):Expr := (
when arg is args:Sequence do (
if 1 == length(args) then values.0 = args.0
else (
errret = WrongNumArgs(model.arrow,numparms,length(args));
errret = WrongNumArgs(Code(model),numparms,length(args));
while true do provide nullE;
)
)
Expand All @@ -1367,7 +1367,7 @@ map(a:Sequence,f:Expr):Expr := (
when arg is args:Sequence do (
if 1 == length(args) then values.0 = args.0
else (
errret = WrongNumArgs(model.arrow,numparms,length(args));
errret = WrongNumArgs(Code(model),numparms,length(args));
while true do provide nullE;
)
)
Expand Down Expand Up @@ -1406,12 +1406,12 @@ map(a:Sequence,f:Expr):Expr := (
foreach arg in a do (
when arg is args:Sequence do (
if 0 != length(args) then (
errret = WrongNumArgs(model.arrow,0,length(args));
errret = WrongNumArgs(Code(model),0,length(args));
while true do provide nullE;
)
)
else (
errret = WrongNumArgs(model.arrow,numparms,1);
errret = WrongNumArgs(Code(model),numparms,1);
while true do provide nullE;
);
tmp := eval(body);
Expand Down Expand Up @@ -1445,12 +1445,12 @@ map(a:Sequence,f:Expr):Expr := (
foreach x at i in args do values.i = x;
)
else (
errret=WrongNumArgs(model.arrow,numparms,length(args));
errret=WrongNumArgs(Code(model),numparms,length(args));
while true do provide nullE;
)
)
else (
errret = WrongNumArgs(model.arrow,numparms,1);
errret = WrongNumArgs(Code(model),numparms,1);
while true do provide nullE;
);
tmp := eval(body);
Expand Down Expand Up @@ -1529,7 +1529,7 @@ map(newlen:int,f:Expr):Expr := (
numparms := desc.numparms;
framesize := desc.framesize;
if numparms != 1 then (
errret = WrongNumArgs(model.arrow,numparms,1);
errret = WrongNumArgs(Code(model),numparms,1);
while true do provide nullE;
)
else (
Expand Down Expand Up @@ -1716,7 +1716,7 @@ scan(n:int,f:Expr):Expr := (
framesize := desc.framesize;
if numparms != 1 then (
recursionDepth = recursionDepth - 1;
return WrongNumArgs(model.arrow,numparms,1);
return WrongNumArgs(Code(model),numparms,1);
);
if framesize == 1 then (
values := new Sequence len framesize do provide nullE;
Expand Down Expand Up @@ -1848,7 +1848,7 @@ scan(a:Sequence,f:Expr):Expr := (
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(model.arrow,numparms,length(args));
return WrongNumArgs(Code(model),numparms,length(args));
)
)
else values.0 = arg;
Expand All @@ -1874,7 +1874,7 @@ scan(a:Sequence,f:Expr):Expr := (
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(model.arrow,numparms,length(args));
return WrongNumArgs(Code(model),numparms,length(args));
)
)
else values.0 = arg;
Expand Down Expand Up @@ -1903,13 +1903,13 @@ scan(a:Sequence,f:Expr):Expr := (
if 0 != length(args) then (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(model.arrow,0,length(args));
return WrongNumArgs(Code(model),0,length(args));
)
)
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(model.arrow,numparms,1);
return WrongNumArgs(Code(model),numparms,1);
);
tmp := eval(body);
when tmp is err:Error do (
Expand All @@ -1931,13 +1931,13 @@ scan(a:Sequence,f:Expr):Expr := (
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(model.arrow,numparms,length(args));
return WrongNumArgs(Code(model),numparms,length(args));
)
)
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(model.arrow,numparms,1);
return WrongNumArgs(Code(model),numparms,1);
);
tmp := eval(body);
when tmp is err:Error do (
Expand Down Expand Up @@ -2043,7 +2043,7 @@ scan(a1:Sequence,a2:Sequence,f:Expr):Expr := (
recursionDepth = recursionDepth - 1;
nullE)
else ( -- (x,y) -> ...
if numparms != 2 then WrongNumArgs(model.arrow,numparms,2)
if numparms != 2 then WrongNumArgs(Code(model),numparms,2)
else (
saveLocalFrame := localFrame;
values := new Sequence len framesize do provide nullE;
Expand Down
Loading

0 comments on commit aeb1b30

Please sign in to comment.