home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol039 / ll1anl.pli < prev    next >
Text File  |  1984-04-29  |  3KB  |  79 lines

  1. LL1ANL: PROC OPTIONS(MAIN);
  2. /****************************************************************
  3. *              LL(1) GRAMMAR ANALYZER - MAIN ROUTINE        *
  4. *PURPOSE:                                                       *
  5. *    THIS PROGRAM IS THE MAIN CONTROL ROUTINE OF THE LL(1)      *
  6. *    GRAMMAR ANALYZER SYSTEM.  ITS RESPONSIBILITY IS TO IN-     *
  7. *    VOKE EACH PHASE OF THE ANALYZER AND CONTAIN THE COMMON     * 
  8. *    AREAS PASSED BETWEEN PHASES.                *
  9. *INPUT:                                                         *
  10. *OUTPUT:                                                        *
  11. *OUTLINE:                                                       *
  12. *REMARKS:                                                       *
  13. ****************************************************************/
  14.  
  15. /****************************************************************
  16. * * * * * * * * * * * *  DATA DEFINITIONS   * * * * * * * * * * *
  17. ****************************************************************/
  18.  
  19. /*    * * *  COMMON REPLACEMENTS  * * *    */
  20. %REPLACE TRUE BY '1'B;
  21. %REPLACE FALSE BY '0'B;
  22.  
  23. /*    * * *  COMMON AREAS  * * *    */
  24. %INCLUDE 'LL1CMN.DCL';
  25.  
  26. /*    * * *  COMMON PROCEDURES  * * *    */
  27. %INCLUDE 'LL1PRC.DCL';
  28.  
  29. /*    * * *  EXTERNAL ROUTINES  * * *        */
  30.     DCL LL1P00 ENTRY;
  31.     DCL LL1P10 ENTRY;
  32.     DCL LL1P20 ENTRY;
  33.     DCL LL1P30 ENTRY;
  34.     DCL LL1P40 ENTRY;
  35.     DCL LL1P50 ENTRY;
  36.     DCL LL1P60 ENTRY;
  37.     DCL LL1P70 ENTRY;
  38.     DCL LL1P80 ENTRY;
  39.  
  40. /*    * * *  MAIN ROUTINE  * * *    */
  41.  
  42. /*    DO INITIALIZATION. */
  43.     PUT SKIP(2) LIST('INITIALIZING COMMON AREAS...');
  44.     CALL    LL1P00;        /* DO IT. */
  45.  
  46. /*    READ IN THE GRAMMAR WITH MINOR ANALYSIS. */
  47.     PUT SKIP(2) LIST('READING IN THE GRAMMAR...');
  48.     CALL    LL1P10;        /* READ IN THE GRAMMAR. */
  49.  
  50. /*    PRINT THE GRAMMAR. */
  51.     PUT SKIP(2) LIST('PRINTING THE GRAMMAR...');
  52.     CALL    LL1P20;        /* ANALYZE IT. */
  53.  
  54. /*    FIND NULLABLE NON-TERMINALS AND PRODUCTIONS. */
  55.     PUT SKIP(2) LIST('FINDING THE NULLABLE NON-TERMS AND PRODS...');
  56.     CALL    LL1P30;        /* ANALYZE IT. */
  57.  
  58. /*    CALCULATE THE BEGINING TYPE RELATIONS. */
  59.     PUT SKIP(2) LIST('CALCULATE THE BEGINING TYPE RELATIONS...');
  60.     CALL    LL1P40;        /* ANALYZE IT. */
  61.  
  62. /*    CALCULATE THE END TYPE RELATIONS. */
  63.     PUT SKIP(2) LIST('CALCULATE THE END TYPE RELATIONS...');
  64.     CALL    LL1P50;        /* ANALYZE IT. */
  65.  
  66. /*    CALCULATE THE FOLLOW SET RELATION. */
  67.     PUT SKIP(2) LIST('CALCULATE THE FOLLOW SET RELATION...');
  68.     CALL    LL1P60;        /* ANALYZE IT. */
  69.  
  70. /*    CALCULATE THE SELECTION SET. */
  71.     PUT SKIP(2) LIST('CALCULATE THE SELECTION SET...');
  72.     CALL    LL1P70;        /* ANALYZE IT. */
  73.  
  74. /*    VALIDATE THAT THE LANGUAGE IS LL(1). */
  75.     PUT SKIP(2) LIST('VALIDATING THAT THE LANGUAGE IS LL(1)...');
  76.     CALL    LL1P80;        /* ANALYZE IT. */
  77.  
  78.     END LL1ANL;
  79.