aboutsummaryrefslogtreecommitdiff
path: root/src/interp/word.boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp/word.boot')
-rw-r--r--src/interp/word.boot16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/interp/word.boot b/src/interp/word.boot
index 904718a7..f37d34be 100644
--- a/src/interp/word.boot
+++ b/src/interp/word.boot
@@ -297,14 +297,14 @@ canForgeWord(word,entry) ==
forge(word,w,W,entry,e,E,n) ==
w > W =>
e > E => n
- QSADD1 QSPLUS(E-e,n)
- e > E => QSADD1 QSPLUS(W-w,n)
+ QSPLUS(E-e,n) + 1
+ e > E => QSPLUS(W-w,n) + 1
word.w = entry.e => forge(word,w+1,W,entry,e+1,E,n)
- w=W or e=E => forge(word,w+1,W,entry,e+1,E,QSADD1 n)
+ w=W or e=E => forge(word,w+1,W,entry,e+1,E,n + 1)
word.w=entry.(e+1) =>
- word.(w+1) = entry.e => forge(word,w+2,W,entry,e+2,E,QSADD1 n)
- forge(word,w+1,W,entry,e+2,E,QSADD1 n)
- word.(w+1)=entry.e => forge(word,w+2,W,entry,e+1,E,QSADD1 n)
+ word.(w+1) = entry.e => forge(word,w+2,W,entry,e+2,E,n + 1)
+ forge(word,w+1,W,entry,e+2,E,n + 1)
+ word.(w+1)=entry.e => forge(word,w+2,W,entry,e+1,E,n + 1)
(deltaW := W-w) > 1 and (deltaE := E-e) > 1 =>
--if word is long, can we delete chars to match 2 consective chars
@@ -317,9 +317,9 @@ forge(word,w,W,entry,e,E,n) ==
(k := or/[j for j in (e+2)..(E-1) | word.w = entry.j])
and word.(w+1) = entry.(k+1) =>
forge(word,w+2,W,entry,k+2,E,QSPLUS(n,k-e))
- forge(word,w+1,W,entry,e+1,E,QSADD1 n)
+ forge(word,w+1,W,entry,e+1,E,n + 1)
--check for two consecutive matches down the line
- forge(word,w+1,W,entry,e+1,E,QSADD1 n)
+ forge(word,w+1,W,entry,e+1,E,n + 1)
--+ DO NOT REMOVE DEFINITIONS BELOW which explain the algorithm
--+ canForgeWord(word,entry) ==--