@@ -23,10 +23,10 @@ class Tokenizer(s: String, delimiters: String) extends Iterator[String] {
23
23
var ch = s.charAt(i); i = i + 1 ;
24
24
if (isDelimiter(ch)) ch.toString()
25
25
else {
26
- while (i < s.length() &&
27
- s.charAt(i) > ' ' &&
28
- ! isDelimiter(s.charAt(i))){ i = i + 1 }
29
- s.substring(start, i)
26
+ while (i < s.length() &&
27
+ s.charAt(i) > ' ' &&
28
+ ! isDelimiter(s.charAt(i))){ i = i + 1 }
29
+ s.substring(start, i)
30
30
}
31
31
} else " " ;
32
32
@@ -100,8 +100,8 @@ object Terms {
100
100
case (List (), List ()) => Some (s)
101
101
case (x :: xs1, y :: ys1) =>
102
102
unify(x, y, s) match {
103
- case Some (s1) => unify(xs1, ys1, s1)
104
- case None => None
103
+ case Some (s1) => unify(xs1, ys1, s1)
104
+ case None => None
105
105
}
106
106
case _ => None
107
107
}
@@ -136,14 +136,14 @@ object Programs {
136
136
137
137
def solve2 (query : List [Term ], s : Subst ): LazyList [Subst ] = query match {
138
138
case List () =>
139
- LazyList .cons(s, LazyList .empty)
139
+ LazyList .cons(s, LazyList .empty)
140
140
case Con (" not" , qs) :: query1 =>
141
- if (solve1(qs, s).isEmpty) LazyList .cons(s, LazyList .empty)
142
- else LazyList .empty
141
+ if (solve1(qs, s).isEmpty) LazyList .cons(s, LazyList .empty)
142
+ else LazyList .empty
143
143
case q :: query1 =>
144
- for (clause <- list2stream(clauses);
145
- s1 <- tryClause(clause.newInstance, q, s);
146
- s2 <- solve1(query1, s1)) yield s2
144
+ for (clause <- list2stream(clauses);
145
+ s1 <- tryClause(clause.newInstance, q, s);
146
+ s2 <- solve1(query1, s1)) yield s2
147
147
}
148
148
149
149
def solve1 (query : List [Term ], s : Subst ): LazyList [Subst ] = {
@@ -200,7 +200,7 @@ class Parser(s: String) {
200
200
token = it.next;
201
201
Clause (NoTerm , rep(constructor));
202
202
} else {
203
- Clause (
203
+ Clause (
204
204
constructor,
205
205
if (token equals " :-" ) { token = it.next; rep(constructor) } else List ())
206
206
}
@@ -219,27 +219,27 @@ object Prolog {
219
219
var tvs : List [String ] = List ();
220
220
{ input =>
221
221
new Parser (input).all foreach { c =>
222
- if (c.lhs == NoTerm ) {
223
- c.rhs match {
224
- case List (Con (" more" , List ())) =>
222
+ if (c.lhs == NoTerm ) {
223
+ c.rhs match {
224
+ case List (Con (" more" , List ())) =>
225
225
solutions = solutions.tail;
226
- case _ =>
226
+ case _ =>
227
227
solutions = solve(c.rhs, program);
228
- tvs = c.tyvars;
228
+ tvs = c.tyvars;
229
229
}
230
- if (solutions.isEmpty) {
231
- Console .println(" no" )
232
- } else {
233
- val s : Subst = solutions.head
234
- .filter(b => tvs contains b.name)
235
- .map(b => Binding (b.name, b.term map solutions.head))
230
+ if (solutions.isEmpty) {
231
+ Console .println(" no" )
232
+ } else {
233
+ val s : Subst = solutions.head
234
+ .filter(b => tvs contains b.name)
235
+ .map(b => Binding (b.name, b.term map solutions.head))
236
236
.reverse;
237
- if (s.isEmpty) Console .println(" yes" )
238
- else Console .println(s);
237
+ if (s.isEmpty) Console .println(" yes" )
238
+ else Console .println(s);
239
239
}
240
- } else {
241
- program = program ::: List (c);
242
- }
240
+ } else {
241
+ program = program ::: List (c);
242
+ }
243
243
}
244
244
}
245
245
}
0 commit comments