2016-10-28 2 views
1

Hassan Aït-Kaci's "Warren's Abstract Machine: A Tutorial Reconstruction" 섹션 2.2에서는 L0 쿼리를 컴파일하기위한 순서가 충분히 명확합니다. 레지스터는 왼쪽에서 오른쪽으로의 너비 우선 검색으로 할당되어야하며 코드는 왼쪽에서 오른쪽 순으로 순서가 뒤 따르는 깊이 우선 검색으로 생성되어야합니다 .L0 프로그램 용 WAM 코드를 생성하는 올바른 순서는 무엇입니까?

섹션 2.3에서 레지스터 할당 순서 (L0 프로그램의 경우)는 왼쪽에서 오른쪽 너비 우선 검색입니다. 코드 생성 순서는 다릅니다. 주어진 유일한 예를 들어, 코드를 생성하기 위해 BFS 또는 DFS를 사용해야하는지 여부를 알 수 없습니다.

누군가 다음 L0 프로그램의 WAM 코드를 제공 할 수 있습니까?

p (q (r (a)), s (b)).

+0

[this reco mmendation] (http://stackoverflow.com/a/14536068/772868) !. – false

답변

2

내가 sample.pl에 프로그램을 넣어 :

 
$ cat sample.pl 
p(q(r(a)),s(b)). 

GNU Prolog을 사용하여, 나는 다음 않았다 :

다음 WAM 지침은 sample.wbc에 포함되어
$ gplc -w sample.pl 

:

 
clause(p(q(r(a)),s(b)),[ 
    get_structure(q/1,0), 
    unify_structure(r/1), 
    unify_atom(a), 
    get_structure(s/1,1), 
    unify_atom(b), 
    proceed]). 
+0

'.wam' 파일을 얻기 위해'glpc -W'와 다른 점은 무엇입니까? – false