home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l216 / 2.ddi / XPARS.PAR < prev    next >
Encoding:
Text File  |  1987-03-23  |  1.5 KB  |  59 lines

  1. /***********************************************************
  2.  
  3.      Turbo Prolog Toolbox
  4.      (C) Copyright 1987 Borland International.
  5.  
  6.         PARSING PREDICATES
  7. ***********************************************************/
  8.  
  9. PREDICATES
  10.   s_exp(TOKL,TOKL,EXP)
  11.   s_exp1(TOKL,TOKL,EXP)
  12.   s_exp5(TOKL,TOKL,EXP,EXP)
  13.   s_exp2(TOKL,TOKL,EXP)
  14.   s_exp6(TOKL,TOKL,EXP,EXP)
  15.   s_exp3(TOKL,TOKL,EXP)
  16.   s_exp7(TOKL,TOKL,EXP,EXP)
  17.   s_exp4(TOKL,TOKL,EXP)
  18.  
  19. CLAUSES
  20.   s_exp(LL1,LL0,EXP):-
  21.     s_exp1(LL1,LL0,EXP).
  22.  
  23.   s_exp1(LL1,LL0,EXP_):-
  24.     s_exp2(LL1,LL2,EXP),
  25.     s_exp5(LL2,LL0,EXP,EXP_).
  26.  
  27.   s_exp2(LL1,LL0,EXP_):-
  28.     s_exp3(LL1,LL2,EXP),
  29.     s_exp6(LL2,LL0,EXP,EXP_).
  30.  
  31.   s_exp3(LL1,LL0,EXP_):-
  32.     s_exp4(LL1,LL2,EXP),
  33.     s_exp7(LL2,LL0,EXP,EXP_).
  34.  
  35.   s_exp4([t(id(STRING),_)|LL],LL,id(STRING)):-!.
  36.   s_exp4([t(int(INTEGER),_)|LL],LL,int(INTEGER)):-!.
  37.   s_exp4(LL,_,_):-syntax_error(exp4,LL),fail.
  38.  
  39.   s_exp5([t(plus,_)|LL1],LL0,EXP,EXP_):-!,
  40.     s_exp2(LL1,LL2,EXP1),
  41.     s_exp5(LL2,LL0,plus(EXP,EXP1),EXP_).
  42.   s_exp5([t(minus,_)|LL1],LL0,EXP,EXP_):-!,
  43.     s_exp2(LL1,LL2,EXP1),
  44.     s_exp5(LL2,LL0,minus(EXP,EXP1),EXP_).
  45.   s_exp5(LL,LL,EXP,EXP).
  46.  
  47.   s_exp6([t(mult,_)|LL1],LL0,EXP,EXP_):-!,
  48.     s_exp3(LL1,LL2,EXP1),
  49.     s_exp6(LL2,LL0,mult(EXP,EXP1),EXP_).
  50.   s_exp6([t(div,_)|LL1],LL0,EXP,EXP_):-!,
  51.     s_exp3(LL1,LL2,EXP1),
  52.     s_exp6(LL2,LL0,div(EXP,EXP1),EXP_).
  53.   s_exp6(LL,LL,EXP,EXP).
  54.  
  55.   s_exp7([t(power,_)|LL1],LL0,EXP,power(EXP,EXP1)):-!,
  56.     s_exp3(LL1,LL0,EXP1).
  57.   s_exp7(LL,LL,EXP,EXP).
  58.  
  59.