diff options
Diffstat (limited to 'src/interp/parse.boot')
-rw-r--r-- | src/interp/parse.boot | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/interp/parse.boot b/src/interp/parse.boot index 278de20e..6daf3ea3 100644 --- a/src/interp/parse.boot +++ b/src/interp/parse.boot @@ -197,22 +197,19 @@ parseAtAt t == parseHas: %ParseForm -> %Form parseHas t == t isnt ["has",x,y] => systemErrorHere ["parseHas",t] - mkand [["has",x,u] for u in fn y] where - mkand x == - x is [a] => a - ["and",:x] + ["has",x,fn y] where fn y == y is [":" ,op,["Mapping",:map]] => op:= (STRINGP op => INTERN op; op) - [["SIGNATURE",op,map]] - y is ["Join",:u] => "append"/[fn z for z in u] - y is ["CATEGORY",:u] => "append"/[fn z for z in u] + ["SIGNATURE",op,map] + y is ["Join",:u] => ["Join",:[fn z for z in u]] + y is ["CATEGORY",kind,:u] => ["CATEGORY",kind,:[fn z for z in u]] kk:= getConstructorKindFromDB opOf y - kk = "domain" or kk = "category" => [makeNonAtomic y] - y is ["ATTRIBUTE",:.] => [y] - y is ["SIGNATURE",:.] => [y] - y is [":",op,type] => [["SIGNATURE",op,[type],"constant"]] - [["ATTRIBUTE",y]] + kk = "domain" or kk = "category" => makeNonAtomic y + y is ["ATTRIBUTE",:.] => y + y is ["SIGNATURE",:.] => y + y is [":",op,type] => ["SIGNATURE",op,[type],"constant"] + ["ATTRIBUTE",y] parseDEF: %ParseForm -> %Form parseDEF t == |