home *** CD-ROM | disk | FTP | other *** search
- /***********************************************************
-
- Turbo Prolog Toolbox
- (C) Copyright 1987 Borland International.
-
- PARSING PREDICATES
- ***********************************************************/
-
- PREDICATES
- s_exp(TOKL,TOKL,EXP)
- s_exp1(TOKL,TOKL,EXP)
- s_exp5(TOKL,TOKL,EXP,EXP)
- s_exp2(TOKL,TOKL,EXP)
- s_exp6(TOKL,TOKL,EXP,EXP)
- s_exp3(TOKL,TOKL,EXP)
- s_exp7(TOKL,TOKL,EXP,EXP)
- s_exp4(TOKL,TOKL,EXP)
-
- CLAUSES
- s_exp(LL1,LL0,EXP):-
- s_exp1(LL1,LL0,EXP).
-
- s_exp1(LL1,LL0,EXP_):-
- s_exp2(LL1,LL2,EXP),
- s_exp5(LL2,LL0,EXP,EXP_).
-
- s_exp2(LL1,LL0,EXP_):-
- s_exp3(LL1,LL2,EXP),
- s_exp6(LL2,LL0,EXP,EXP_).
-
- s_exp3(LL1,LL0,EXP_):-
- s_exp4(LL1,LL2,EXP),
- s_exp7(LL2,LL0,EXP,EXP_).
-
- s_exp4([t(id(STRING),_)|LL],LL,id(STRING)):-!.
- s_exp4([t(int(INTEGER),_)|LL],LL,int(INTEGER)):-!.
- s_exp4(LL,_,_):-syntax_error(exp4,LL),fail.
-
- s_exp5([t(plus,_)|LL1],LL0,EXP,EXP_):-!,
- s_exp2(LL1,LL2,EXP1),
- s_exp5(LL2,LL0,plus(EXP,EXP1),EXP_).
- s_exp5([t(minus,_)|LL1],LL0,EXP,EXP_):-!,
- s_exp2(LL1,LL2,EXP1),
- s_exp5(LL2,LL0,minus(EXP,EXP1),EXP_).
- s_exp5(LL,LL,EXP,EXP).
-
- s_exp6([t(mult,_)|LL1],LL0,EXP,EXP_):-!,
- s_exp3(LL1,LL2,EXP1),
- s_exp6(LL2,LL0,mult(EXP,EXP1),EXP_).
- s_exp6([t(div,_)|LL1],LL0,EXP,EXP_):-!,
- s_exp3(LL1,LL2,EXP1),
- s_exp6(LL2,LL0,div(EXP,EXP1),EXP_).
- s_exp6(LL,LL,EXP,EXP).
-
- s_exp7([t(power,_)|LL1],LL0,EXP,power(EXP,EXP1)):-!,
- s_exp3(LL1,LL0,EXP1).
- s_exp7(LL,LL,EXP,EXP).
-