YAP 7.1.0
term_visit.h
Go to the documentation of this file.
1
5 DEB_DOOBIN(*pt0_);
6CELL *pt0=&t-1, *pt0_end=&t;
7
8Ystack_t stt_, *stt = &stt_;
9//Int rc;<
10
11init_stack(stt);
12do {
13 yhandle_t y0 = Yap_StartHandles();
14 RESET_TERM_VISITOR;
15Yap_CloseHandles(y0)
16;
17 loop:
18 while (pt0 == pt0_end) {
19 if (!pop_sub_term(stt, &pt0, &pt0_end)) {
20
21 goto nomore;
22 }
23 }
24 CELL d0, dd0;
25 CELL *ptd0;
26 pt0++;
27 ptd0 = pt0;
28 dd0 = (*ptd0);
29 mderef_head(d0, dd0, var_in_term_unk); /*DEB_DOOB();*/
30 var_in_term_nvar:
31 if (IsPairTerm(d0)) {
32 CELL *ptd1 = RepPair(d0);
33#if defined(LIST_HOOK_CODE)
34 LIST_HOOK_CODE;
35#endif
36 if (IS_VISIT_MARKER(ptd1[0]))
37 goto loop;
38 CELL d1 = VISIT_UNMARK(ptd1[0]);
39 push_sub_term(stt, d1, ptd1, pt0, pt0_end);
40 pt0 = ptd1-1;
41 pt0_end = ptd1 + 1;
42 // fprintf(stderr, "%ld at %s %ld@%ld-%ld %lx\n", stt->pt - stt->pt0,
43 // __FUNCTION__, ptd1 - H0, pt0 - H0, pt0_end - H0, *ptd1);
44 goto loop;
45 } else if (IsApplTerm(d0)) {
46 Functor f;
47 arity_t a;
48 /* store the terms to visit */
49 CELL *ptd1 = RepAppl(d0), d1;
50 f = (Functor)(d1 = VISIT_UNMARK(*ptd1));
51#if defined(COMPOUND_HOOK_CODE)
52 COMPOUND_HOOK_CODE;
53#endif
54 if (IsExtensionFunctor(f)) {
55 if (f == FunctorAttVar)
56 a =3;
57 else
58 goto loop;
59 } else {
60 a = ArityOfFunctor(f);
61 }
62
63 if (IS_VISIT_MARKER(*ptd1)) {
64
65 goto loop;
66 }
67 push_sub_term(stt, d1, ptd1, pt0, pt0_end);
68 pt0 = ptd1;
69 pt0_end = ptd1 + a;
70 // fprintf(stderr, "%ld at %s %ld@%ld-%ld %lx\n", stt->pt -
71 // stt->pt0, __FUNCTION__,ptd1-H0,pt0-H0,pt0_end-H0, *(CELL*)f);
72 goto loop;
73 } else {
74#if defined(ATOMIC_HOOK_CODE)
75 ATOMIC_HOOK_CODE;
76#endif
77 goto loop;
78 }
79
80 mderef_body(d0,dd0, ptd0, var_in_term_unk, var_in_term_nvar);
81 /*enter variable processing */ {
82#if defined(VAR_HOOK_CODE)
84#endif
85 goto loop;
86 }
87 } while (stt->err != YAP_NO_ERROR);
88nomore:
89
90#undef RESET_TERM_VISITOR
91
92
#define VAR_HOOK_CODE
routine to locate all variables in a term, and its application s
Definition: terms.c:699
Definition: terms.h:25