Parser Implementation¶
As expected for Prolog, this is a recursive top-down parser.
The algorithm handles ambiguity in the Prolog grammar through setjmp.s
Define:¶
Functions:¶
1. static void GNextToken(CACHE_TYPE1):
1. static void checkfor(Term, JMPBUFF *, encoding_t CACHE_TYPE):
1. static Term ParseArgs(Atom, Term, JMPBUFF *, Term, encoding_t, Term CACHE_TYPE):
1. static Term ParseList(JMPBUFF *, encoding_t, Term CACHE_TYPE):
1. static Term ParseTerm(int, JMPBUFF *, encoding_t, Term CACHE_TYPE):
1. Term Yap_tokRep(void *tokptr): : convert a token to text.
1. const char * Yap_tokText(void *tokptr):
1. static void syntax_msg(const char *msg,...):
1. VarEntry * Yap_LookupVar(const char *var, int lineno, int linepos):
1. static Term VarNames(VarEntry *p, Term l USES_REGS):
1. Term Yap_VarNames(VarEntry *p, Term l):
1. static Term Singletons(VarEntry *p, bool var_only, Term l USES_REGS):
1. Term Yap_Singletons(VarEntry *p, bool vars_only, Term l):
1. static Term Variables(VarEntry *p, Term l USES_REGS):
1. Term Yap_Variables(VarEntry *p, Term l):
1. static int IsPrefixOp(Atom op, int pptr, int rpptr, Term cmod USES_REGS):
1. int Yap_IsPrefixOp(Atom op, int pptr, int rpptr):
1. static int IsInfixOp(Atom op, int pptr, int lpptr, int *rpptr, Term cmod USES_REGS):
1. int Yap_IsInfixOp(Atom op, int pptr, int lpptr, int *rpptr):
1. static int IsPosfixOp(Atom op, int pptr, int lpptr, Term cmod USES_REGS):
1. int Yap_IsPosfixOp(Atom op, int pptr, int lpptr):
1. static void GNextToken(USES_REGS1):
1. static void checkfor(Term c, JMPBUFF *FailBuff, encoding_t enc USES_REGS):
1. static Term ParseArgs(Atom a, Term close, JMPBUFF *FailBuff, Term arg1, encoding_t enc, Term cmod USES_REGS):
1. static Term MakeAccessor(Term t, Functor f USES_REGS):
1. static Term ParseList(JMPBUFF *FailBuff, encoding_t enc, Term cmod USES_REGS):
1. static Term ParseTerm(int prio, JMPBUFF *FailBuff, encoding_t enc, Term cmod USES_REGS):
1. Term Yap_Parse(UInt prio, encoding_t enc, Term cmod):