* Shorter list syntax ([a b c] instead of [a, b, c]).

This commit is contained in:
Eelco Dolstra 2003-11-03 11:59:35 +00:00
parent ad0976f8d5
commit e2655aa332
3 changed files with 15 additions and 8 deletions

View File

@ -4,8 +4,6 @@
ATerm bottomupRewrite(TermFun & f, ATerm e)
{
e = f(e);
if (ATgetType(e) == AT_APPL) {
AFun fun = ATgetAFun(e);
int arity = ATgetArity(fun);
@ -14,10 +12,10 @@ ATerm bottomupRewrite(TermFun & f, ATerm e)
for (int i = arity - 1; i >= 0; i--)
args = ATinsert(args, bottomupRewrite(f, ATgetArgument(e, i)));
return (ATerm) ATmakeApplList(fun, args);
e = (ATerm) ATmakeApplList(fun, args);
}
if (ATgetType(e) == AT_LIST) {
else if (ATgetType(e) == AT_LIST) {
ATermList in = (ATermList) e;
ATermList out = ATempty;
@ -26,10 +24,10 @@ ATerm bottomupRewrite(TermFun & f, ATerm e)
in = ATgetNext(in);
}
return (ATerm) ATreverse(out);
e = (ATerm) ATreverse(out);
}
return e;
return f(e);
}

View File

@ -45,7 +45,9 @@ exports
Bind ";" -> BindSemi
BindSemi* -> Binds
"[" Expr* "]" -> Expr {cons("List")}
"[" ExprList "]" -> Expr {cons("List")}
"" -> ExprList {cons("ExprNil")}
Expr ExprList -> ExprList {cons("ExprCons")}
Expr "." Id -> Expr {cons("Select")}
@ -58,7 +60,7 @@ exports
context-free priorities
Expr "." Id -> Expr
>
> Expr ExprList -> ExprList
> Expr Expr -> Expr
> "{" {Id ","}* "}" ":" Expr -> Expr

View File

@ -56,6 +56,13 @@ struct Cleanup : TermFun
if (ATmatch(e, "Bool(\"false\")", &s))
return ATmake("Bool(False)");
if (ATmatch(e, "ExprNil"))
return (ATerm) ATempty;
ATerm e1, e2;
if (ATmatch(e, "ExprCons(<term>, [<list>])", &e1, &e2))
return (ATerm) ATinsert((ATermList) e2, e1);
return e;
}
};