. , - , , , , , , .
BNF (Backus-Naur Form - -), . BNF. . BNF, .
<s>::=a<s>b
: s ab, , s , , , , s " ". , s - . , b . | . BNF : <s>::=ab|a<s>b , .
, . , s. . , . , . : $
s :
b
, :
& s b b
: a a a b b b
, , ab, aabb .. at", . = 1, 2, 3,.... , , , .
. . , .
, . , .
|
|
up ;
dewn .
, . up up up down up down
, . "". , (move) (step), , . :
21. 511
<move>:: - <step> <move>:;= <step> <raove> <Step>:: = iip <step>::= down
, Prolog1,
, . , . , ; , , . , , . , , : , , . , . , .
, . , . , Prolog . Prolog , DCG (Definite Clause Grammar - ). Prolog. , DCG, , . BNF DCG . , BNF DCG :
|
|
->[], []. s->[a],s, [].
move --> step,
move --> step, move.
step --> tup].
step --> [down].
, BNF DCG ":: = " "-->", , s Prolog. , , , Prolog.
Prolog, DCG, . , , , , { 8.) -
II. Prolog
. , , .
aabb [ a, a, b, b] [ ]
[ a, a, b, b, ] [ ]
[ , , , , 1, , 1] [ 1, 0, 1]
, , DCG , , , :
% aabb
[])
?- s( yes ?- s([a,a,b], no ?- move( yes "move( |
[]). []). |
?-no ?- X X no |
[ , , , ], []). [ up, up, down], [ up, up, left], [ up, X, up], []).
move(= up; = down;
, Prolog DCG . Prolog Prolog. , Prolog , . . DCG, , :
move(List, Rest):-
step(List, Rest), move(Listl, Rest):-
step(Listl, -List2),
move(List2, Rest).
step([up | Rest], Rest). step([down | Rest], Rest).
? move. move :
move(List, Rest)
, List Rest . :
move( move( move( |
[ up, down, up], []).
[ up, down, up, a, b, c], [ a, b, c])
[ up, down, up], [ down, up]).
. 21.1 , :
move(Listl, Rest):-step(Listl, List2), move(List2, Rest).
:
Listl Rest , Listl List2 List2 Rest - .