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

  1. productions
  2.   PARSER    = SECTION*
  3.  
  4.   SECTION    = userdefined_ productions_ PRODNAMES -> userprods_(PRODNAMES),
  5.           userdefined_ domains_ PRODNAMES -> userdoms_(PRODNAMES),
  6.           productions_ PRODUCTIONS     -> productions_(PRODUCTIONS)
  7.  
  8.   PRODUCTIONS    = PRODUCTION+
  9.  
  10.   PRODUCTION    = upper(STRING):CURSOR equal PRODBODY    -> p(PRODNAME,CURSOR,PRODBODY)
  11.  
  12.   PRODBODY    = upper(STRING):CURSOR STAR_PLUS SEPARATOR
  13.                 -> list(PRODNAME,CURSOR,STAR_PLUS,SEPARATOR),
  14.           PRODGROUPS            -> groups(PRODGROUPS)
  15.  
  16.   STAR_PLUS    = star                -> star,
  17.           plus                -> plus
  18.  
  19.   SEPARATOR    = separator_ id(STRING)        -> sep(STRING),
  20.                         -> none
  21.  
  22.   PRODGROUPS    = PRIORGROUP+ separator priorsepp
  23.  
  24.   PRIORGROUP    = SINGPROD+ separator comma
  25.  
  26.   SINGPROD    = ASSOC GRAMTOKL arrow:CURSOR TERM -> prod(ASSOC,GRAMTOKL,CURSOR,TERM)
  27.  
  28.   ASSOC        = rightassoc_:CURSOR        -> right(CURSOR),
  29.                         -> left
  30.  
  31.   GRAMTOKL    = GRAMTOK*
  32.  
  33.   GRAMTOK    = upper(STRING):CURSOR        -> prodname(PRODNAME,CURSOR),
  34.           TOKK CURSORDEMAND        -> tok(TOKK,CURSORDEMAND)
  35.  
  36.   CURSORDEMAND    = colon PRODNAME        -> curdemand(PRODNAME),
  37.                         -> none
  38.  
  39.   TOKK        = id(STRING):CURSOR lpar PRODNAMES rpar -> cmp(STRING,CURSOR,PRODNAMES),
  40.           id(STRING):CURSOR            -> name(STRING,CURSOR)
  41.  
  42.   TERM        = upper(STRING):CURSOR            -> dom(PRODNAME,CURSOR),
  43.           id(STRING):CURSOR lpar PRODNAMES rpar -> term(STRING,CURSOR,PRODNAMES),
  44.           id(STRING):CURSOR            -> name(STRING,CURSOR)
  45.  
  46.   PRODNAME    = upper(STRING)            -> PRODNAME
  47.  
  48.   PRODNAMES    = PRODNAME+ separator comma
  49.