diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/br-search.boot | 5 | ||||
-rw-r--r-- | src/interp/br-util.boot | 7 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/interp/br-search.boot b/src/interp/br-search.boot index 090d7752..9890e86b 100644 --- a/src/interp/br-search.boot +++ b/src/interp/br-search.boot @@ -180,15 +180,14 @@ pmParseFromString s == [op,:[flatten x for x in argl]] s -pmPreparse s == hn fn(s,0,#s) where--stupid insertion of chars to get correct parse - hn x == SUBLISLIS('(and or not),'("and" "or" "not"),x) +pmPreparse s == fn(s,0,#s) where--stupid insertion of chars to get correct parse fn(s,n,siz) == --main function: s is string, n is origin n = siz => '"" i := firstNonDelim(s,n) or return subString(s,n) j := firstDelim(s,i + 1) or siz t := gn(s,i,j - 1) middle := - t in '("and" "or" "not") => t + member(t,'("and" "or" "not")) => t --the following 2 lines make commutative("*") parse correctly!!!! stringChar(t,0) = char "_"" => t j < siz - 1 and s.j = char "(" => t diff --git a/src/interp/br-util.boot b/src/interp/br-util.boot index acc4ed9a..fadc5bf9 100644 --- a/src/interp/br-util.boot +++ b/src/interp/br-util.boot @@ -162,11 +162,14 @@ htPred2English(x,:options) == bcConform(first l,$emList) htSay('" has ") fnAttr CADADR l - op in '(_has ofCategory) => + op in '(has ofCategory) => bcConform(first l,$emList) htSay('" has ") [a,b] := l - b is ['ATTRIBUTE,c] and not constructor? c => fnAttr c + b is ['ATTRIBUTE,c] => + symbol? c and not constructor? c => fnAttr c + c is [.,:.] and symbol? c.op and not constructor? c.op => fnAttr c + bcConform(c,$emList) bcConform(b, $emList) bcConform(x,$emList) fnAttr c == |