As expected for Prolog, this is a recursive top-down parser.
More...
As expected for Prolog, this is a recursive top-down parser.
The algorithm handles ambiguity in the Prolog grammar through setjmp.s
◆ jmp_buff_struct
◆ FAIL
FAIL siglongjmp(FailBuff->JmpBuff, 1) |
◆ TRY
Value: { \
Volatile
JMPBUFF *saveenv, newenv; \
Volatile
TokEntry *saveT = LOCAL_tokptr; \
Volatile CELL *saveH = HR; \
Volatile int savecurprio = curprio; \
saveenv = FailBuff; \
if (!sigsetjmp(newenv.JmpBuff, 0)) { \
FailBuff = &newenv; \
S; \
FailBuff = saveenv; \
P; \
} else { \
FailBuff = saveenv; \
HR = saveH; \
curprio = savecurprio; \
LOCAL_tokptr = saveT; \
} \
}
Definition at line 85 of file parser.c.
◆ TRY3
Value: { \
Volatile
JMPBUFF *saveenv, newenv; \
Volatile
TokEntry *saveT = LOCAL_tokptr; \
Volatile CELL *saveH = HR; \
saveenv = FailBuff; \
if (!sigsetjmp(newenv.JmpBuff, 0)) { \
FailBuff = &newenv; \
S; \
FailBuff = saveenv; \
P; \
} else { \
FailBuff = saveenv; \
HR = saveH; \
LOCAL_tokptr = saveT; \
F \
} \
}
Definition at line 105 of file parser.c.
◆ Volatile
◆ Yap_IsInfixOp()
int Yap_IsInfixOp |
( |
Atom |
op, |
|
|
int * |
pptr, |
|
|
int * |
lpptr, |
|
|
int * |
rpptr |
|
) |
| |
◆ Yap_IsPosfixOp()
int Yap_IsPosfixOp |
( |
Atom |
op, |
|
|
int * |
pptr, |
|
|
int * |
lpptr |
|
) |
| |
◆ Yap_IsPrefixOp()
int Yap_IsPrefixOp |
( |
Atom |
op, |
|
|
int * |
pptr, |
|
|
int * |
rpptr |
|
) |
| |
◆ Yap_LookupVar()
VarEntry * Yap_LookupVar |
( |
const char * |
var | ) |
|
◆ Yap_Parse()
Term Yap_Parse |
( |
UInt |
prio, |
|
|
encoding_t |
enc, |
|
|
Term |
cmod |
|
) |
| |
◆ Yap_Singletons()
Term Yap_Singletons |
( |
VarEntry * |
p, |
|
|
Term |
l |
|
) |
| |
◆ Yap_tokRep()
Term Yap_tokRep |
( |
void * |
tokptr | ) |
|
convert a token to text
Definition at line 747 of file scanner.c.
◆ Yap_tokText()
const char * Yap_tokText |
( |
void * |
tokptr | ) |
|
◆ Yap_Variables()
Term Yap_Variables |
( |
VarEntry * |
p, |
|
|
Term |
l |
|
) |
| |
◆ Yap_VarNames()
Term Yap_VarNames |
( |
VarEntry * |
p, |
|
|
Term |
l |
|
) |
| |
|
#define | Volatile |
|
#define | TRY(S, P) |
|
#define | TRY3(S, P, F) |
|
#define | FAIL siglongjmp(FailBuff->JmpBuff, 1) |
|
|
Term | Yap_tokRep (void *tokptr) |
| convert a token to text More...
|
|
const char * | Yap_tokText (void *tokptr) |
|
VarEntry * | Yap_LookupVar (const char *var) |
|
Term | Yap_VarNames (VarEntry *p, Term l) |
|
Term | Yap_Singletons (VarEntry *p, Term l) |
|
Term | Yap_Variables (VarEntry *p, Term l) |
|
int | Yap_IsPrefixOp (Atom op, int *pptr, int *rpptr) |
|
int | Yap_IsInfixOp (Atom op, int *pptr, int *lpptr, int *rpptr) |
|
int | Yap_IsPosfixOp (Atom op, int *pptr, int *lpptr) |
|
Term | Yap_Parse (UInt prio, encoding_t enc, Term cmod) |
|