UW Experimental: Superfast phrase/3. This version is simply using call/3
This commit is contained in:
parent
52f06f5f60
commit
9c42dfa26c
@ -132,19 +132,35 @@
|
|||||||
phrase(PhraseDef, WordList) :-
|
phrase(PhraseDef, WordList) :-
|
||||||
phrase(PhraseDef, WordList, []).
|
phrase(PhraseDef, WordList, []).
|
||||||
|
|
||||||
|
phrase(P, S0, S) :-
|
||||||
|
call(P, S0, S).
|
||||||
|
!(S, S).
|
||||||
|
|
||||||
phrase(P, S0, S) :-
|
[](S, S).
|
||||||
var(P), !,
|
|
||||||
'$do_error'(instantiation_error,phrase(P,S0,S)).
|
'.'(H,T, S0, S) :-
|
||||||
phrase(P, S0, S) :-
|
|
||||||
( primitive(P), \+ atom(P) ), !,
|
|
||||||
'$do_error'(type_error(callable,P),phrase(P,S0,S)).
|
|
||||||
phrase([], S0, S) :- !,
|
|
||||||
S0 = S.
|
|
||||||
phrase([H|T], S0, S) :- !,
|
|
||||||
lists:append([H|T], S, S0).
|
lists:append([H|T], S, S0).
|
||||||
phrase(Phrase, S0, S) :-
|
|
||||||
'$t_body'(Phrase, _, last, S0, S, Goal), !,
|
|
||||||
'$execute'(Goal).
|
|
||||||
|
|
||||||
|
{}(Goal, S0, S) :-
|
||||||
|
Goal,
|
||||||
|
S0 = S.
|
||||||
|
|
||||||
|
','(A,B, S0, S) :-
|
||||||
|
'$t_body'((A,B), _, last, S0, S, Goal),
|
||||||
|
'$execute'(Goal).
|
||||||
|
|
||||||
|
;(A,B, S0, S) :-
|
||||||
|
'$t_body'((A;B), _, last, S0, S, Goal),
|
||||||
|
'$execute'(Goal).
|
||||||
|
|
||||||
|
'|'(A,B, S0, S) :-
|
||||||
|
'$t_body'((A|B), _, last, S0, S, Goal),
|
||||||
|
'$execute'(Goal).
|
||||||
|
|
||||||
|
->(A,B, S0, S) :-
|
||||||
|
'$t_body'((A->B), _, last, S0, S, Goal),
|
||||||
|
'$execute'(Goal).
|
||||||
|
|
||||||
|
\+(A, S0, S) :-
|
||||||
|
'$t_body'(\+ A, _, last, S0, S, Goal),
|
||||||
|
'$execute'(Goal).
|
||||||
|
@ -647,6 +647,12 @@ source_module(Mod) :-
|
|||||||
(0 *-> 0),
|
(0 *-> 0),
|
||||||
(0 ; 0),
|
(0 ; 0),
|
||||||
^(+,0),
|
^(+,0),
|
||||||
|
{}(0,?,?),
|
||||||
|
','(2,2,?,?),
|
||||||
|
;(2,2,?,?),
|
||||||
|
'|'(2,2,?,?),
|
||||||
|
->(2,2,?,?),
|
||||||
|
\+(2,?,?),
|
||||||
\+ 0 .
|
\+ 0 .
|
||||||
|
|
||||||
%
|
%
|
||||||
|
Reference in New Issue
Block a user