home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / style / prof.doc < prev    next >
Encoding:
Text File  |  1988-05-03  |  67.2 KB  |  2,298 lines

  1. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. --read.me
  3. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4. To build the statement profile tool:
  5.  
  6.  1. Compile all the abstractions into a program library (see READ.ME in
  7.     abstractions directory for details)
  8.  
  9.  2. Compile everything named in the STMTPROF.CO file into the program library
  10.     containing the abstractions or a sublibrary whose parent library contains 
  11.     all the abstractions.  STMTPROF.CO lists file names in the correct
  12.     compilation order.
  13.  
  14.  3. Link STMTPROF with the program library where everything was compiled.
  15.     To do this using the DEC Ada compiler type:
  16.     $ acs link stmtprof
  17.  
  18. To run the tool on VMS:
  19.  
  20.  1. Define a logical symbol for the executable of STMTPROF.  For example,
  21.  
  22.     STMTPROF :== $DRB1:[NOSC.TOOLS.STMTPROF]STMTPROF.EXE
  23.  
  24.      NOTE: The full path name of the executable is required in the 
  25.      definition of the symbol.   The pathname given here is just an example
  26.      and will be different on your system.
  27.  
  28.  2. Enter the command with appropriate parameters.  For example,
  29.  
  30.     STMTPROF (SOURCE=>"test.ada", OUTPUT=>"test.out");
  31.  
  32.     Entering the command STMTPROF with no parameters gives a brief
  33.     description of how to use the tool.
  34.  
  35. Files contained in this directory:
  36.  
  37. STMTPROF.CO   -- Compilation order for statement profile sources
  38. STMTPROF.EXE  -- VMS 4.0 statement profile executable
  39.  
  40. The [.SOURCE] subdirectory contains most of the sources that make up the 
  41. statement profile tool.  Other sources are contained in the abstractions
  42. directory.
  43.  
  44. Files in [.SOURCE]:
  45.  
  46.     The source files which make up the statement profile tool are as follows:
  47.  
  48.     STMTPROF.ADA -- the driver which deals with the command line
  49.     SPUTILS.SPC  -- the procedures which control gathering info and reporting
  50.     SPUTILS.BDY
  51.  
  52.     Most of the sources for the parser which the statement profile tool uses 
  53.     are in the abstractions directory. The four units which are unique to this 
  54.     tool are as follows:
  55.  
  56.     APPLYACT.SUB -- A subunit of the parser which calls the action subprograms
  57.     GETNEXT.SUB  -- A subunit of the lexer which returns non-comment tokens
  58.                     to the lexer and buffers comments
  59.     GRMCONST.BDY -- Grammar constants for the parse tables
  60.     PTBLS.BDY    -- The parse tables.
  61.  
  62. The ACVC A tests were used in testing the statement profile tool.
  63.  
  64. The [.DOC] subdirectory contains the documentation for the statement profile
  65. tool.
  66.  
  67. Files in [.DOC]:
  68.  
  69.     USERMAN.MEM -- Statement profile user's manual
  70.     USERMAN.RNO -- Runoff input for user's manual
  71.     STMTGRM.LIS -- Listing of statement profile grammar.  The rule numbers
  72.                    in this file may be used to make changes to the case
  73.                    statement in the Apply_Actions subunit.
  74.     STMTPROF.CNT-- Statement counts and line counts of statement profile 
  75.                    source files.
  76. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  77. --userman.mem
  78. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  79.  
  80.  
  81.  
  82.    STATEMENT PROFILE REPORT
  83.    _________ _______ ______
  84.    _________ _______ ______
  85. 1  STATEMENT PROFILE REPORT
  86.  
  87.  
  88.      ___________
  89. 1.1  Description
  90.  
  91.  
  92.      The Statement Profile Report counts every instance of each of the
  93.  
  94. various  types  of  Ada  statements in the given package or subprogram
  95.  
  96. body  including  comments,  distinguishing  whole-line  comments  from
  97.  
  98. comments  on a line of code.  From these raw counts a series of ratios
  99.  
  100. and percentages can then be computed and represented in a table.   The
  101.  
  102. raw  count  or  the  table  is  output to the specified or the default
  103.  
  104. output  file.   If  a  package  is  specified,  the  package  and  all
  105.  
  106. subprograms within that package are counted.  If a subprogram includes
  107.  
  108. nested subprograms, these are also  counted,  and  a  separate  report
  109.  
  110. table  is produced for each.  For each file, a report is also produced
  111.  
  112. for all statements  outside  any  package  or  subprogram  (these  are
  113.  
  114. usually  with  and use statements), and a report containing a total of
  115.  
  116. all statements in the source file.
  117.  
  118.  
  119.  
  120.  
  121.      _______ ______
  122. 1.2  Command Format
  123.  
  124.  
  125. type REPORT_TYPE is (RAW, TABLE);
  126.  
  127.  
  128. procedure STATEMENT_PROFILE ( SOURCE  : in STRING;
  129.  
  130.                               OUTPUT  : in STRING      := "";
  131.  
  132.                               PROFILE : in STRING      := "";
  133.  
  134.                               REPORT  : in REPORT_TYPE := TABLE );
  135.  
  136.  
  137. SOURCE    Name of the source file to be profiled for statement  types.
  138.  
  139.           It  should  be  a names of Ada source code file.  (Statement
  140.  
  141.           Profile  Report  assumes  that  the  Ada  source   code   is
  142.  
  143.           syntactically correct.)
  144.  
  145. OUTPUT    Name of the output file for the report.   If  not  specified
  146.  
  147.           defaults to standard output.
  148.  
  149. PROFILE   Specifies a ratio of statement types as
  150.  
  151.           "stmttype,...,stmttype  :   stmttype,...,stmttype"  If   not
  152.  
  153.           specified no ratio calculations are performed.
  154.  
  155. REPORT    Specifies the report output format as RAW or TABLE.  If  not
  156.  
  157.           specified defaults to TABLE.
  158.  
  159.  
  160.  
  161. Before execution the command line  is  echoed  to  the  output  stream
  162.  
  163. defined  by the system for error messages (normally the terminal).  If
  164.  
  165. the statement profile is invoked as:
  166.  
  167.  
  168.      STATEMENT_PROFILE ( "TEST.ADA", "TEST.RPT");
  169.  
  170.  
  171. The command line will be echoed as:
  172.  
  173.  
  174.      STATEMENT_PROFILE ( SOURCE  => "TEST.ADA",
  175.  
  176.                          OUTPUT  => "TEST.RPT",
  177.  
  178.                          PROFILE => "",
  179.  
  180.                          REPORT  => );
  181.  
  182.                                                                 Page 2
  183.  
  184.  
  185.  
  186.      _________ _____
  187. 1.3  Statement Types
  188.  
  189.  
  190. The following is a list of the recognised statement types:
  191.  
  192.  
  193.         stmt_type                   name                LRM Syntax Summary
  194.  
  195.  
  196.      1. ABORT_STMT              abort_statement                 5.1
  197.  
  198.      2. ACCEPT_STMT             accept_statement                5.1
  199.  
  200.      3. ASSIGNMENT_STMT         assignment_statement            5.2
  201.  
  202.      4. BASIC_DECL              basic_declaration               3.1
  203.  
  204.      5. BLOCK_STMT              block_statement                 5.6
  205.  
  206.      6. CASE_STMT               case_statement                  5.4
  207.  
  208.      7. CODE_STMT               code_statement                  5.1
  209.  
  210.      8. DELAY_STMT              delay_statement                 5.1
  211.  
  212.      9. ELSE_STMT               else part                       5.3
  213.  
  214.     10. ELSIF_STMT              else part with if               5.3
  215.  
  216.     11. ENTRY_CALL              entry_call_statement            5.1
  217.  
  218.     12. EXCEPT_HANDLER          exception_handler              11.2 
  219.  
  220.     13. EXIT_STMT               exit_statement                  5.7
  221.  
  222.     14. GOTO_STMT               goto_statement                  5.9
  223.  
  224.     15. IF_STMT                 if_statement                    5.3
  225.  
  226.     16. LONG_COMMENT            whole-line comment
  227.  
  228.     17. LOOP_STMT               loop_statement                  5.5
  229.  
  230.     18. NULL_STMT               null_statement                  5.1
  231.  
  232.     19. PRAGMA_STMT             pragma                          2.6
  233.  
  234.     20. PROCEDURE_CALL          procedure_call_statement        5.1
  235.  
  236.     21. RAISE_STMT              raise_statement                 5.1
  237.  
  238.     22. RETURN_STMT             return_statement                5.8
  239.  
  240.     23. SELECT_STMT             select_statement                5.1
  241.  
  242.     24. SHORT_COMMENT           comment on a line of code
  243.  
  244.     25. USE_STMT                use_clauses                     8.4
  245.  
  246.     26. WITH_STMT               with_clauses                   10.1 
  247.  
  248.  
  249. Statement types for the profile spec include the above types  and  the
  250.  
  251. keyword ALLSTMTS.
  252.  
  253.  
  254. The ALLSTMTS keyword allows  for  a  comparison  of  a  collection  of
  255.  
  256. statement types with the total number of statements.
  257.  
  258.  
  259.                                                                 Page 3
  260.  
  261.  
  262.  
  263.      ___ ______
  264. 1.4  Raw Format
  265.  
  266.  
  267. REPORT => RAW generates an output of the raw counts so that  the  user
  268.  
  269. can  do  his/her  own calculations and/or formatting.  Given the input
  270.  
  271. line:
  272.  
  273.  
  274.      STATEMENT_PROFILE ( SOURCE  => "STMTPROF.ADA",
  275.  
  276.                          OUTPUT  => "STMTPROF.RAW",
  277.  
  278.                          REPORT  => RAW );
  279.  
  280.  
  281. The  result  of  the  statement  report  tools  found  in   the   file
  282.  
  283. STMTPROF.RAW is:
  284.  
  285.  
  286.      STMTPROF.ADA StmtProf
  287.  
  288.       0 0 10 15 1 0 0 0 1 0 0 12 0 0 5 0 2 0 0 67 0 4 0 1 1 0 0 0 119
  289.  
  290.      STMTPROF.ADA 
  291.  
  292.       0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 10 0 0 14
  293.  
  294.      <TOTAL> STMTPROF.ADA 
  295.  
  296.       0 0 10 16 1 0 0 0 1 0 0 12 0 0 5 2 2 0 0 67 0 4 0 2 1 10 0 0 133
  297.  
  298.  
  299. The report consists of one line of  raw  count  for  each  package  or
  300.  
  301. subprogram in canonical order.
  302.  
  303.                                                                 Page 4
  304.  
  305.  
  306.  
  307.      _____ ______
  308. 1.5  Table Format
  309.  
  310.  
  311. Given the input line:
  312.  
  313.  
  314.      STATEMENT_PROFILE ( SOURCE  => "STMTPROF.ADA",
  315.  
  316.                          OUTPUT  => "STMTPROF.TBL",
  317.  
  318.                          PROFILE => "IF_STMT : ELSIF_STMT, ELSE_STMT" );
  319.  
  320.  
  321. The  result  of  the  statement  report  tools  found  in   the   file
  322.  
  323. STMTPROF.TBL is:
  324.  
  325.  
  326. --------------------------------------------------------------------------
  327.  
  328. Name = STMTPROF.ADA StmtProf
  329.  
  330. --------------------------------------------------------------------------
  331.  
  332. Statement            #       %     group1  group2      graph
  333.  
  334. --------------------------------------------------------------------------
  335.  
  336. ABORT_STMT           0       0                     |
  337.  
  338. ACCEPT_STMT          0       0                     |
  339.  
  340. ASSIGNMENT_STMT     10       8                     |==
  341.  
  342. BASIC_DECL          15      12                     |===
  343.  
  344. BLOCK_STMT           1       0                     |
  345.  
  346. CASE_STMT            0       0                     |
  347.  
  348. CODE_STMT            0       0                     |
  349.  
  350. DELAY_STMT           0       0                     |
  351.  
  352. ELSE_STMT            1       0               *     |
  353.  
  354. ELSIF_STMT           0       0               *     |
  355.  
  356. ENTRY_CALL           0       0                     |
  357.  
  358. EXCEPT_HANDLER      12      10                     |==
  359.  
  360. EXIT_STMT            0       0                     |
  361.  
  362. GOTO_STMT            0       0                     |
  363.  
  364. IF_STMT              5       4       *             |=
  365.  
  366. LONG_COMMENT         0       0                     |
  367.  
  368. LOOP_STMT            2       1                     |
  369.  
  370. NULL_STMT            0       0                     |
  371.  
  372. PRAGMA_STMT          0       0                     |
  373.  
  374. PROCEDURE_CALL      67      56                     |==============
  375.  
  376. RAISE_STMT           0       0                     |
  377.  
  378. RETURN_STMT          4       3                     |
  379.  
  380. SELECT_STMT          0       0                     |
  381.  
  382. SHORT_COMMENT        1       0                     |
  383.  
  384. USE_STMT             1       0                     |
  385.  
  386. WITH_STMT            0       0                     |
  387.  
  388. --------------------------------------------------------------------------
  389.  
  390. TOTALS             119               5       1
  391.  
  392. --------------------------------------------------------------------------
  393.  
  394. sum group1 + group2 =       6
  395.  
  396. ratio group1:group2 =     500 / 100
  397.  
  398. --------------------------------------------------------------------------
  399.  
  400.                                                                 Page 5
  401.  
  402.  
  403.  
  404. --------------------------------------------------------------------------
  405.  
  406. Name = STMTPROF.ADA
  407.  
  408. --------------------------------------------------------------------------
  409.  
  410. Statement            #       %     group1  group2      graph
  411.  
  412. --------------------------------------------------------------------------
  413.  
  414. ABORT_STMT           0       0                     |
  415.  
  416. ACCEPT_STMT          0       0                     |
  417.  
  418. ASSIGNMENT_STMT      0       0                     |
  419.  
  420. BASIC_DECL           1       7                     |=
  421.  
  422. BLOCK_STMT           0       0                     |
  423.  
  424. CASE_STMT            0       0                     |
  425.  
  426. CODE_STMT            0       0                     |
  427.  
  428. DELAY_STMT           0       0                     |
  429.  
  430. ELSE_STMT            0       0               *     |
  431.  
  432. ELSIF_STMT           0       0               *     |
  433.  
  434. ENTRY_CALL           0       0                     |
  435.  
  436. EXCEPT_HANDLER       0       0                     |
  437.  
  438. EXIT_STMT            0       0                     |
  439.  
  440. GOTO_STMT            0       0                     |
  441.  
  442. IF_STMT              0       0       *             |
  443.  
  444. LONG_COMMENT         2      14                     |===
  445.  
  446. LOOP_STMT            0       0                     |
  447.  
  448. NULL_STMT            0       0                     |
  449.  
  450. PRAGMA_STMT          0       0                     |
  451.  
  452. PROCEDURE_CALL       0       0                     |
  453.  
  454. RAISE_STMT           0       0                     |
  455.  
  456. RETURN_STMT          0       0                     |
  457.  
  458. SELECT_STMT          0       0                     |
  459.  
  460. SHORT_COMMENT        1       7                     |=
  461.  
  462. USE_STMT             0       0                     |
  463.  
  464. WITH_STMT           10      71                     |=================
  465.  
  466. --------------------------------------------------------------------------
  467.  
  468. TOTALS              14               0       0
  469.  
  470. --------------------------------------------------------------------------
  471.  
  472. sum group1 + group2 =       0
  473.  
  474. ratio group1:group2 =       0 / 100
  475.  
  476. --------------------------------------------------------------------------
  477.  
  478.                                                                 Page 6
  479.  
  480.  
  481.  
  482. --------------------------------------------------------------------------
  483.  
  484.      Grand Totals for  File   
  485.  
  486. --------------------------------------------------------------------------
  487.  
  488. Name = STMTPROF.ADA
  489.  
  490. --------------------------------------------------------------------------
  491.  
  492. Statement            #       %     group1  group2      graph
  493.  
  494. --------------------------------------------------------------------------
  495.  
  496. ABORT_STMT           0       0                     |
  497.  
  498. ACCEPT_STMT          0       0                     |
  499.  
  500. ASSIGNMENT_STMT     10       7                     |=
  501.  
  502. BASIC_DECL          16      12                     |===
  503.  
  504. BLOCK_STMT           1       0                     |
  505.  
  506. CASE_STMT            0       0                     |
  507.  
  508. CODE_STMT            0       0                     |
  509.  
  510. DELAY_STMT           0       0                     |
  511.  
  512. ELSE_STMT            1       0               *     |
  513.  
  514. ELSIF_STMT           0       0               *     |
  515.  
  516. ENTRY_CALL           0       0                     |
  517.  
  518. EXCEPT_HANDLER      12       9                     |==
  519.  
  520. EXIT_STMT            0       0                     |
  521.  
  522. GOTO_STMT            0       0                     |
  523.  
  524. IF_STMT              5       3       *             |
  525.  
  526. LONG_COMMENT         2       1                     |
  527.  
  528. LOOP_STMT            2       1                     |
  529.  
  530. NULL_STMT            0       0                     |
  531.  
  532. PRAGMA_STMT          0       0                     |
  533.  
  534. PROCEDURE_CALL      67      50                     |============
  535.  
  536. RAISE_STMT           0       0                     |
  537.  
  538. RETURN_STMT          4       3                     |
  539.  
  540. SELECT_STMT          0       0                     |
  541.  
  542. SHORT_COMMENT        2       1                     |
  543.  
  544. USE_STMT             1       0                     |
  545.  
  546. WITH_STMT           10       7                     |=
  547.  
  548. --------------------------------------------------------------------------
  549.  
  550. TOTALS             133               5       1
  551.  
  552. --------------------------------------------------------------------------
  553.  
  554. sum group1 + group2 =       6
  555.  
  556. ratio group1:group2 =     500 / 100
  557.  
  558. --------------------------------------------------------------------------
  559.  
  560.                                                                 Page 7
  561.  
  562.  
  563.  
  564.      ____
  565. 1.6  Bugs
  566.  
  567.  
  568. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  569. --userman.rno
  570. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  571. .FLAG BOLD
  572. .HEADER LEVEL 1^*^&STATEMENT PROFILE REPORT\&\*
  573. .HEADER LEVEL 2^&Description\&
  574. .PARAGRAPH
  575. The Statement Profile Report counts every instance of each of the
  576. various types of Ada statements in the given package or subprogram body 
  577. including comments, distinguishing whole-line comments from comments 
  578. on a line of code.  From these raw counts a series of ratios and percentages 
  579. can then be computed and represented in a table.  The raw count or the
  580. table is output to the specified or the default output file.
  581. If a package is specified, the package and all subprograms within that
  582. package are counted.  If a subprogram includes nested
  583. subprograms, these are also counted, and a separate report table is
  584. produced for each.  For each file, a report is also produced for all
  585. statements outside any package or subprogram (these are usually with and
  586. use statements), and a report containing a total of all statements in the
  587. source file.
  588. .HEADER LEVEL 2^&Command Format\&
  589. .LITERAL
  590. type REPORT_TYPE is (RAW, TABLE);
  591.  
  592. procedure STATEMENT_PROFILE ( SOURCE  : in STRING;
  593.                               OUTPUT  : in STRING      := "";
  594.                               PROFILE : in STRING      := "";
  595.                               REPORT  : in REPORT_TYPE := TABLE );
  596. .END LITERAL
  597. .BLANK
  598. .LEFT MARGIN 10
  599. .TAB STOP 10
  600. .INDENT -10
  601. SOURCE    Name of the source file to be profiled for statement types.  It should
  602. be a names of Ada source code file. (Statement Profile Report assumes that
  603. the Ada source code is syntactically correct.) 
  604. .INDENT -10
  605. OUTPUT    Name of the output file for the report.  If not specified defaults to
  606. standard output.
  607. .INDENT -10
  608. PROFILE    Specifies a ratio of statement types as
  609. .BREAK
  610. "stmt_type,...,stmt_type : stmt_type,...,stmt_type"
  611. If not specified no ratio calculations are performed.
  612. .INDENT -10
  613. REPORT    Specifies the report output format as RAW or TABLE.  If not specified
  614. defaults to TABLE.
  615. .LEFT MARGIN 0
  616. .BLANK 2
  617. Before execution the command line is echoed to the output stream defined by
  618. the system for error messages (normally the terminal).  If the statement
  619. profile is invoked as:
  620. .BLANK
  621. .LITERAL
  622.      STATEMENT_PROFILE ( "TEST.ADA", "TEST.RPT");
  623. .END LITERAL
  624. .BLANK
  625. The command line will be echoed as:
  626. .BLANK
  627. .LITERAL
  628.      STATEMENT_PROFILE ( SOURCE  => "TEST.ADA",
  629.                          OUTPUT  => "TEST.RPT",
  630.                          PROFILE => "",
  631.                          REPORT  => );
  632. .END LITERAL
  633. .PAGE
  634. .HEADER LEVEL 2^&Statement Types\&
  635. The following is a list of the recognised statement types:
  636. .BLANK
  637. .LITERAL
  638.         stmt_type                   name                LRM Syntax Summary
  639.  
  640.      1. ABORT_STMT              abort_statement                 5.1
  641.      2. ACCEPT_STMT             accept_statement                5.1
  642.      3. ASSIGNMENT_STMT         assignment_statement            5.2
  643.      4. BASIC_DECL              basic_declaration               3.1
  644.      5. BLOCK_STMT              block_statement                 5.6
  645.      6. CASE_STMT               case_statement                  5.4
  646.      7. CODE_STMT               code_statement                  5.1
  647.      8. DELAY_STMT              delay_statement                 5.1
  648.      9. ELSE_STMT               else part                       5.3
  649.     10. ELSIF_STMT              else part with if               5.3
  650.     11. ENTRY_CALL              entry_call_statement            5.1
  651.     12. EXCEPT_HANDLER          exception_handler              11.2    
  652.     13. EXIT_STMT               exit_statement                  5.7
  653.     14. GOTO_STMT               goto_statement                  5.9
  654.     15. IF_STMT                 if_statement                    5.3
  655.     16. LONG_COMMENT            whole-line comment
  656.     17. LOOP_STMT               loop_statement                  5.5
  657.     18. NULL_STMT               null_statement                  5.1
  658.     19. PRAGMA_STMT             pragma                          2.6
  659.     20. PROCEDURE_CALL          procedure_call_statement        5.1
  660.     21. RAISE_STMT              raise_statement                 5.1
  661.     22. RETURN_STMT             return_statement                5.8
  662.     23. SELECT_STMT             select_statement                5.1
  663.     24. SHORT_COMMENT           comment on a line of code
  664.     25. USE_STMT                use_clauses                     8.4
  665.     26. WITH_STMT               with_clauses                   10.1    
  666. .END LITERAL
  667. .BLANK
  668. Statement types for the profile spec include the above types and the
  669. keyword ALLSTMTS.  
  670. .BLANK
  671. The ALLSTMTS keyword allows for a comparison of a collection of statement 
  672. types with the total number of statements.
  673. .BLANK
  674. .PAGE
  675. .HEADER LEVEL 2^&Raw Format\&
  676. REPORT => RAW generates an output of the raw counts so that
  677. the user can do his/her own calculations and/or formatting.  
  678. Given the input line:   
  679. .BLANK
  680. .LITERAL
  681.      STATEMENT_PROFILE ( SOURCE  => "STMTPROF.ADA",
  682.                          OUTPUT  => "STMTPROF.RAW",
  683.                          REPORT  => RAW );
  684. .END LITERAL
  685. .BLANK
  686. The result of the statement report tools found in the file STMTPROF.RAW is:
  687. .BLANK
  688. .LITERAL 
  689.      STMTPROF.ADA StmtProf
  690.       0 0 10 15 1 0 0 0 1 0 0 12 0 0 5 0 2 0 0 67 0 4 0 1 1 0 0 0 119
  691.      STMTPROF.ADA 
  692.       0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 0 10 0 0 14
  693.      <TOTAL> STMTPROF.ADA 
  694.       0 0 10 16 1 0 0 0 1 0 0 12 0 0 5 2 2 0 0 67 0 4 0 2 1 10 0 0 133
  695. .END LITERAL
  696. .BLANK
  697. The report consists of one line of raw count for each package or subprogram
  698. in canonical order.
  699. .PAGE
  700. .HEADER LEVEL 2^&Table Format\&
  701. Given the input line:   
  702. .BLANK
  703. .LITERAL
  704.      STATEMENT_PROFILE ( SOURCE  => "STMTPROF.ADA",
  705.                          OUTPUT  => "STMTPROF.TBL",
  706.                          PROFILE => "IF_STMT : ELSIF_STMT, ELSE_STMT" );
  707. .END LITERAL
  708. .BLANK
  709. The result of the statement report tools found in the file STMTPROF.TBL is:
  710. .BLANK
  711. .LITERAL
  712. --------------------------------------------------------------------------
  713. Name = STMTPROF.ADA StmtProf
  714. --------------------------------------------------------------------------
  715. Statement            #       %     group1  group2      graph
  716. --------------------------------------------------------------------------
  717. ABORT_STMT           0       0                     |
  718. ACCEPT_STMT          0       0                     |
  719. ASSIGNMENT_STMT     10       8                     |==
  720. BASIC_DECL          15      12                     |===
  721. BLOCK_STMT           1       0                     |
  722. CASE_STMT            0       0                     |
  723. CODE_STMT            0       0                     |
  724. DELAY_STMT           0       0                     |
  725. ELSE_STMT            1       0               *     |
  726. ELSIF_STMT           0       0               *     |
  727. ENTRY_CALL           0       0                     |
  728. EXCEPT_HANDLER      12      10                     |==
  729. EXIT_STMT            0       0                     |
  730. GOTO_STMT            0       0                     |
  731. IF_STMT              5       4       *             |=
  732. LONG_COMMENT         0       0                     |
  733. LOOP_STMT            2       1                     |
  734. NULL_STMT            0       0                     |
  735. PRAGMA_STMT          0       0                     |
  736. PROCEDURE_CALL      67      56                     |==============
  737. RAISE_STMT           0       0                     |
  738. RETURN_STMT          4       3                     |
  739. SELECT_STMT          0       0                     |
  740. SHORT_COMMENT        1       0                     |
  741. USE_STMT             1       0                     |
  742. WITH_STMT            0       0                     |
  743. --------------------------------------------------------------------------
  744. TOTALS             119               5       1
  745. --------------------------------------------------------------------------
  746. sum group1 + group2 =       6
  747. ratio group1:group2 =     500 / 100
  748. --------------------------------------------------------------------------
  749. .END LITERAL
  750. .PAGE
  751. .LITERAL
  752. --------------------------------------------------------------------------
  753. Name = STMTPROF.ADA
  754. --------------------------------------------------------------------------
  755. Statement            #       %     group1  group2      graph
  756. --------------------------------------------------------------------------
  757. ABORT_STMT           0       0                     |
  758. ACCEPT_STMT          0       0                     |
  759. ASSIGNMENT_STMT      0       0                     |
  760. BASIC_DECL           1       7                     |=
  761. BLOCK_STMT           0       0                     |
  762. CASE_STMT            0       0                     |
  763. CODE_STMT            0       0                     |
  764. DELAY_STMT           0       0                     |
  765. ELSE_STMT            0       0               *     |
  766. ELSIF_STMT           0       0               *     |
  767. ENTRY_CALL           0       0                     |
  768. EXCEPT_HANDLER       0       0                     |
  769. EXIT_STMT            0       0                     |
  770. GOTO_STMT            0       0                     |
  771. IF_STMT              0       0       *             |
  772. LONG_COMMENT         2      14                     |===
  773. LOOP_STMT            0       0                     |
  774. NULL_STMT            0       0                     |
  775. PRAGMA_STMT          0       0                     |
  776. PROCEDURE_CALL       0       0                     |
  777. RAISE_STMT           0       0                     |
  778. RETURN_STMT          0       0                     |
  779. SELECT_STMT          0       0                     |
  780. SHORT_COMMENT        1       7                     |=
  781. USE_STMT             0       0                     |
  782. WITH_STMT           10      71                     |=================
  783. --------------------------------------------------------------------------
  784. TOTALS              14               0       0
  785. --------------------------------------------------------------------------
  786. sum group1 + group2 =       0
  787. ratio group1:group2 =       0 / 100
  788. --------------------------------------------------------------------------
  789. .END LITERAL
  790. .PAGE
  791. .LITERAL
  792. --------------------------------------------------------------------------
  793.      Grand Totals for  File   
  794. --------------------------------------------------------------------------
  795. Name = STMTPROF.ADA
  796. --------------------------------------------------------------------------
  797. Statement            #       %     group1  group2      graph
  798. --------------------------------------------------------------------------
  799. ABORT_STMT           0       0                     |
  800. ACCEPT_STMT          0       0                     |
  801. ASSIGNMENT_STMT     10       7                     |=
  802. BASIC_DECL          16      12                     |===
  803. BLOCK_STMT           1       0                     |
  804. CASE_STMT            0       0                     |
  805. CODE_STMT            0       0                     |
  806. DELAY_STMT           0       0                     |
  807. ELSE_STMT            1       0               *     |
  808. ELSIF_STMT           0       0               *     |
  809. ENTRY_CALL           0       0                     |
  810. EXCEPT_HANDLER      12       9                     |==
  811. EXIT_STMT            0       0                     |
  812. GOTO_STMT            0       0                     |
  813. IF_STMT              5       3       *             |
  814. LONG_COMMENT         2       1                     |
  815. LOOP_STMT            2       1                     |
  816. NULL_STMT            0       0                     |
  817. PRAGMA_STMT          0       0                     |
  818. PROCEDURE_CALL      67      50                     |============
  819. RAISE_STMT           0       0                     |
  820. RETURN_STMT          4       3                     |
  821. SELECT_STMT          0       0                     |
  822. SHORT_COMMENT        2       1                     |
  823. USE_STMT             1       0                     |
  824. WITH_STMT           10       7                     |=
  825. --------------------------------------------------------------------------
  826. TOTALS             133               5       1
  827. --------------------------------------------------------------------------
  828. sum group1 + group2 =       6
  829. ratio group1:group2 =     500 / 100
  830. --------------------------------------------------------------------------
  831. .END LITERAL
  832. .PAGE
  833. .HEADER LEVEL 2^&Bugs\&
  834. .PAGE
  835. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  836. --stmtgrm.lis
  837. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  838. 1Options in Effect
  839.  
  840.  DEFAULT
  841.  ACTIONS
  842.  TABLES
  843.  DEFMARK = %
  844.  ORMARK = |
  845.  BLOCKB = /.
  846.  BLOCKE = ./
  847.  COMMB = --
  848.  COMME = 
  849.  LOADF =   70
  850. 1Grammar Constants
  851.  
  852.  Number of Terminals   94
  853.  Number of Non Terminals  218
  854.  Number of Rules  471
  855.  Number of Items 1623
  856.  Number of states   942
  857.  Number of shift entries  1550
  858.  Number of goto entries  2137
  859.  Number of reduce entries   158
  860.  Number of entries saved by default reductions 5825
  861.  Number of shift/reduce conflicts    0
  862.  Number of reduce/reduce conflicts    0
  863. 1The following symbols are not used in any right hand side
  864.  
  865.  comment_literal 
  866. 1
  867.  Terminalss
  868.  
  869.  ABORT
  870.  ABS
  871.  ACCEPT
  872.  ACCESS
  873.  ALL
  874.  AND
  875.  ARRAY
  876.  AT
  877.  BEGIN
  878.  BODY
  879.  CASE
  880.  CONSTANT
  881.  DECLARE
  882.  DELAY
  883.  DELTA
  884.  DIGITS
  885.  DO
  886.  ELSE
  887.  ELSIF
  888.  END
  889.  ENTRY
  890.  EXCEPTION
  891.  EXIT
  892.  FOR
  893.  FUNCTION
  894.  GENERIC
  895.  GOTO
  896.  IF
  897.  IN
  898.  IS
  899.  LIMITED
  900.  LOOP
  901.  MOD
  902.  NEW
  903.  NOT
  904.  NULL
  905.  OF
  906.  OR
  907.  OTHERS
  908.  OUT
  909.  PACKAGE
  910.  PRAGMA
  911.  PRIVATE
  912.  PROCEDURE
  913.  RAISE
  914.  RANGE
  915.  RECORD
  916.  REM
  917.  RENAMES
  918.  RETURN
  919.  REVERSE
  920.  SELECT
  921.  SEPARATE
  922.  SUBTYPE
  923.  TASK
  924.  TERMINATE
  925.  THEN
  926.  TYPE
  927.  USE
  928.  WHEN
  929.  WHILE
  930.  WITH
  931.  XOR
  932.  identifier
  933.  numeric_literal
  934.  string_literal
  935.  character_literal
  936.  &
  937.  '
  938.  (
  939.  )
  940.  *
  941.  +
  942.  ,
  943.  -
  944.  .
  945.  /
  946.  :
  947.  ;
  948.  <
  949.  =
  950.  >
  951.  '|'
  952.  =>
  953.  ..
  954.  **
  955.  :=
  956.  /=
  957.  >=
  958.  <=
  959.  <<
  960.  >>
  961.  <>
  962.  comment_literal
  963. 1
  964.  Rules
  965.  
  966.     1 pragma ::= PRAGMA identifier ( general_component_associations ) ; 
  967.  
  968.     2 pragma ::= PRAGMA identifier ; 
  969.  
  970.     3 basic_declaration ::= object_declaration 
  971.  
  972.     4 basic_declaration ::= number_declaration 
  973.  
  974.     5 basic_declaration ::= type_declaration 
  975.  
  976.     6 basic_declaration ::= subtype_declaration 
  977.  
  978.     7 basic_declaration ::= subprogram_declaration 
  979.  
  980.     8 basic_declaration ::= package_declaration 
  981.  
  982.     9 basic_declaration ::= task_declaration 
  983.  
  984.    10 basic_declaration ::= generic_declaration 
  985.  
  986.    11 basic_declaration ::= exception_declaration 
  987.  
  988.    12 basic_declaration ::= generic_instantiation 
  989.  
  990.    13 basic_declaration ::= renaming_declaration 
  991.  
  992.    14 object_declaration ::= identifier_list : subtype_indication [:=expression] 
  993.       ; 
  994.  
  995.    15 object_declaration ::= identifier_list : CONSTANT subtype_indication 
  996.       [:=expression] ; 
  997.  
  998.    16 object_declaration ::= identifier_list : constrained_array_definition 
  999.       [:=expression] ; 
  1000.  
  1001.    17 object_declaration ::= identifier_list : CONSTANT 
  1002.       constrained_array_definition [:=expression] ; 
  1003.  
  1004.    18 number_declaration ::= identifier_list : CONSTANT := expression ; 
  1005.  
  1006.    19 identifier_list ::= identifier {,identifier} 
  1007.  
  1008.    20 type_declaration ::= full_type_declaration 
  1009.  
  1010.    21 type_declaration ::= incomplete_type_declaration 
  1011.  
  1012.    22 type_declaration ::= private_type_declaration 
  1013.  
  1014.    23 full_type_declaration ::= TYPE identifier IS type_definition ; 
  1015.  
  1016.    24 full_type_declaration ::= TYPE identifier ( discriminant_specification 
  1017.       {;discriminant_specification} ) IS type_definition ; 
  1018.  
  1019.    25 type_definition ::= enumeration_type_definition 
  1020.  
  1021.    26 type_definition ::= integer_type_definition 
  1022.  
  1023.    27 type_definition ::= real_type_definition 
  1024.  
  1025.    28 type_definition ::= array_type_definition 
  1026.  
  1027.    29 type_definition ::= record_type_definition 
  1028.  
  1029.    30 type_definition ::= access_type_definition 
  1030.  
  1031.    31 type_definition ::= derived_type_definition 
  1032.  
  1033.    32 subtype_declaration ::= SUBTYPE identifier IS subtype_indication ; 
  1034.  
  1035.    33 subtype_indication ::= type_mark 
  1036.  
  1037.    34 subtype_indication ::= type_mark constraint 
  1038.  
  1039.    35 type_mark ::= type_name|subtype_name 
  1040.  
  1041.    36 constraint ::= range_constraint 
  1042.  
  1043.    37 constraint ::= floating_point_constraint 
  1044.  
  1045.    38 constraint ::= fixed_point_constraint 
  1046.  
  1047.    39 constraint ::= ( general_component_associations ) 
  1048.  
  1049.    40 derived_type_definition ::= NEW subtype_indication 
  1050.  
  1051.    41 range_constraint ::= RANGE simple_expression 
  1052.  
  1053.    42 range_constraint ::= RANGE simple_expression .. simple_expression 
  1054.  
  1055.    43 enumeration_type_definition ::= ( enumeration_literal_specification 
  1056.       {,enumeration_literal_specification} ) 
  1057.  
  1058.    44 enumeration_literal_specification ::= enumeration_literal 
  1059.  
  1060.    45 enumeration_literal ::= identifier 
  1061.  
  1062.    46 enumeration_literal ::= character_literal 
  1063.  
  1064.    47 integer_type_definition ::= range_constraint 
  1065.  
  1066.    48 real_type_definition ::= floating_point_constraint 
  1067.  
  1068.    49 real_type_definition ::= fixed_point_constraint 
  1069.  
  1070.    50 floating_point_constraint ::= floating_accuracy_definition 
  1071.       [range_constraint] 
  1072.  
  1073.    51 floating_accuracy_definition ::= DIGITS simple_expression 
  1074.  
  1075.    52 fixed_point_constraint ::= fixed_accuracy_definition [range_constraint] 
  1076.  
  1077.    53 fixed_accuracy_definition ::= DELTA simple_expression 
  1078.  
  1079.    54 array_type_definition ::= unconstrained_array_definition 
  1080.  
  1081.    55 array_type_definition ::= constrained_array_definition 
  1082.  
  1083.    56 unconstrained_array_definition ::= ARRAY ( index_subtype_definition 
  1084.       {,index_subtype_definition} ) OF subtype_indication 
  1085.  
  1086.    57 constrained_array_definition ::= ARRAY index_constraint OF 
  1087.       subtype_indication 
  1088.  
  1089.    58 index_subtype_definition ::= name RANGE <> 
  1090.  
  1091.    59 index_constraint ::= ( discrete_range {,discrete_range} ) 
  1092.  
  1093.    60 discrete_range ::= name range_constraint 
  1094.  
  1095.    61 discrete_range ::= range 
  1096.  
  1097.    62 range ::= simple_expression 
  1098.  
  1099.    63 range ::= simple_expression .. simple_expression 
  1100.  
  1101.    64 record_type_definition ::= RECORD component_list END RECORD 
  1102.  
  1103.    65 component_list ::= {pragma_decl} {component_declaration} 
  1104.       component_declaration {pragma_decl} 
  1105.  
  1106.    66 component_list ::= {pragma_decl} {component_declaration} variant_part 
  1107.       {pragma_decl} 
  1108.  
  1109.    67 component_list ::= NULL ; {pragma_decl} 
  1110.  
  1111.    68 component_declaration ::= identifier_list : subtype_indication 
  1112.       [:=expression] ; 
  1113.  
  1114.    69 discriminant_specification ::= identifier_list : type_mark [:=expression] 
  1115.  
  1116.    70 variant_part ::= CASE identifier IS {pragma_variant} variant {variant} END 
  1117.       CASE ; 
  1118.  
  1119.    71 variant ::= WHEN choice {|choice} => component_list 
  1120.  
  1121.    72 variant ::= WHEN OTHERS => component_list 
  1122.  
  1123.    73 choice ::= simple_expression 
  1124.  
  1125.    74 choice ::= simple_expression .. simple_expression 
  1126.  
  1127.    75 choice ::= name range_constraint 
  1128.  
  1129.    76 access_type_definition ::= ACCESS subtype_indication 
  1130.  
  1131.    77 incomplete_type_declaration ::= TYPE identifier ; 
  1132.  
  1133.    78 incomplete_type_declaration ::= TYPE identifier ( 
  1134.       discriminant_specification {;discriminant_specification} ) ; 
  1135.  
  1136.    79 declarative_part ::= {basic_declarative_item} 
  1137.  
  1138.    80 declarative_part ::= {basic_declarative_item} body {later_declarative_item}
  1139.  
  1140.    81 basic_declarative_item ::= basic_declaration 
  1141.  
  1142.    82 basic_declarative_item ::= representation_clause 
  1143.  
  1144.    83 basic_declarative_item ::= use_clause 
  1145.  
  1146.    84 later_declarative_item ::= body 
  1147.  
  1148.    85 later_declarative_item ::= subprogram_declaration 
  1149.  
  1150.    86 later_declarative_item ::= package_declaration 
  1151.  
  1152.    87 later_declarative_item ::= task_declaration 
  1153.  
  1154.    88 later_declarative_item ::= generic_declaration 
  1155.  
  1156.    89 later_declarative_item ::= use_clause 
  1157.  
  1158.    90 later_declarative_item ::= generic_instantiation 
  1159.  
  1160.    91 body ::= proper_body 
  1161.  
  1162.    92 body ::= body_stub 
  1163.  
  1164.    93 proper_body ::= subprogram_body 
  1165.  
  1166.    94 proper_body ::= package_body 
  1167.  
  1168.    95 proper_body ::= task_body 
  1169.  
  1170.    96 name ::= identifier 
  1171.  
  1172.    97 name ::= character_literal 
  1173.  
  1174.    98 name ::= string_literal 
  1175.  
  1176.    99 name ::= indexed_component 
  1177.  
  1178.   100 name ::= selected_component 
  1179.  
  1180.   101 name ::= attribute 
  1181.  
  1182.   102 indexed_component ::= name ( general_component_associations ) 
  1183.  
  1184.   103 selected_component ::= name . selector 
  1185.  
  1186.   104 selected_component ::= name . ALL 
  1187.  
  1188.   105 selector ::= identifier 
  1189.  
  1190.   106 selector ::= character_literal 
  1191.  
  1192.   107 selector ::= string_literal 
  1193.  
  1194.   108 attribute ::= name ' attribute_designator 
  1195.  
  1196.   109 attribute_designator ::= identifier 
  1197.  
  1198.   110 attribute_designator ::= DIGITS 
  1199.  
  1200.   111 attribute_designator ::= DELTA 
  1201.  
  1202.   112 attribute_designator ::= RANGE 
  1203.  
  1204.   113 aggregate ::= ( component_associations ) 
  1205.  
  1206.   114 component_associations ::= expression,expression{,expression} 
  1207.       [,others=>expression] 
  1208.  
  1209.   115 component_associations ::= expression,expression{,expression} , 
  1210.       choice{|choice}=>expression {,choice{|choice}=>expression} 
  1211.       [,others=>expression] 
  1212.  
  1213.   116 component_associations ::= expression , choice{|choice}=>expression 
  1214.       {,choice{|choice}=>expression} [,others=>expression] 
  1215.  
  1216.   117 component_associations ::= choice{|choice}=>expression 
  1217.       {,choice{|choice}=>expression} [,others=>expression] 
  1218.  
  1219.   118 component_associations ::= expression , others=>expression 
  1220.  
  1221.   119 component_associations ::= others=>expression 
  1222.  
  1223.   120 general_component_associations ::= ga_expression{,ga_expression} 
  1224.  
  1225.   121 general_component_associations ::= ga_expression{,ga_expression} , 
  1226.       identifier{|identifier}=>expression {,identifier{|identifier}=>expression} 
  1227.  
  1228.   122 general_component_associations ::= identifier{|identifier}=>expression 
  1229.       {,identifier{|identifier}=>expression} 
  1230.  
  1231.   123 expression ::= relation 
  1232.  
  1233.   124 expression ::= relation{AND__relation} 
  1234.  
  1235.   125 expression ::= relation{OR__relation} 
  1236.  
  1237.   126 expression ::= relation{XOR__relation} 
  1238.  
  1239.   127 expression ::= relation{AND__THEN__relation} 
  1240.  
  1241.   128 expression ::= relation{OR__ELSE__relation} 
  1242.  
  1243.   129 relation ::= simple_expression [relational_operator__simple_expression] 
  1244.  
  1245.   130 relation ::= simple_expression [NOT]IN range 
  1246.  
  1247.   131 simple_expression ::= 
  1248.       [unary_adding_operator]term{binary_adding_operator__term} 
  1249.  
  1250.   132 term ::= factor{multiplying_operator__factor} 
  1251.  
  1252.   133 factor ::= primary [exponentiating_operator__primary] 
  1253.  
  1254.   134 factor ::= high_precedence_unary_operator primary 
  1255.  
  1256.   135 parenthesized_expression ::= ( expression ) 
  1257.  
  1258.   136 primary ::= numeric_literal 
  1259.  
  1260.   137 primary ::= NULL 
  1261.  
  1262.   138 primary ::= name 
  1263.  
  1264.   139 primary ::= allocator 
  1265.  
  1266.   140 primary ::= qualified_expression 
  1267.  
  1268.   141 primary ::= aggregate 
  1269.  
  1270.   142 primary ::= parenthesized_expression 
  1271.  
  1272.   143 relational_operator ::= = 
  1273.  
  1274.   144 relational_operator ::= /= 
  1275.  
  1276.   145 relational_operator ::= < 
  1277.  
  1278.   146 relational_operator ::= <= 
  1279.  
  1280.   147 relational_operator ::= > 
  1281.  
  1282.   148 relational_operator ::= >= 
  1283.  
  1284.   149 binary_adding_operator ::= + 
  1285.  
  1286.   150 binary_adding_operator ::= - 
  1287.  
  1288.   151 binary_adding_operator ::= & 
  1289.  
  1290.   152 unary_adding_operator ::= + 
  1291.  
  1292.   153 unary_adding_operator ::= - 
  1293.  
  1294.   154 high_precedence_unary_operator ::= ABS 
  1295.  
  1296.   155 high_precedence_unary_operator ::= NOT 
  1297.  
  1298.   156 multiplying_operator ::= * 
  1299.  
  1300.   157 multiplying_operator ::= / 
  1301.  
  1302.   158 multiplying_operator ::= MOD 
  1303.  
  1304.   159 multiplying_operator ::= REM 
  1305.  
  1306.   160 exponentiating_operator ::= ** 
  1307.  
  1308.   161 qualified_expression ::= name ' aggregate 
  1309.  
  1310.   162 qualified_expression ::= name ' parenthesized_expression 
  1311.  
  1312.   163 allocator ::= NEW type_mark 
  1313.  
  1314.   164 allocator ::= NEW type_mark ( general_component_associations ) 
  1315.  
  1316.   165 allocator ::= NEW expanded_name ' parenthesized_expression 
  1317.  
  1318.   166 allocator ::= NEW expanded_name ' aggregate 
  1319.  
  1320.   167 sequence_of_statements ::= {pragma_stm} statement {statement} 
  1321.  
  1322.   168 statement ::= simple_statement 
  1323.  
  1324.   169 statement ::= compound_statement 
  1325.  
  1326.   170 statement ::= {label}+ simple_statement 
  1327.  
  1328.   171 statement ::= {label}+ compound_statement 
  1329.  
  1330.   172 simple_statement ::= null_statement 
  1331.  
  1332.   173 simple_statement ::= assignment_statement 
  1333.  
  1334.   174 simple_statement ::= exit_statement 
  1335.  
  1336.   175 simple_statement ::= return_statement 
  1337.  
  1338.   176 simple_statement ::= goto_statement 
  1339.  
  1340.   177 simple_statement ::= delay_statement 
  1341.  
  1342.   178 simple_statement ::= abort_statement 
  1343.  
  1344.   179 simple_statement ::= raise_statement 
  1345.  
  1346.   180 simple_statement ::= code_statement 
  1347.  
  1348.   181 simple_statement ::= call_statement 
  1349.  
  1350.   182 compound_statement ::= if_statement 
  1351.  
  1352.   183 compound_statement ::= case_statement 
  1353.  
  1354.   184 compound_statement ::= loop_statement 
  1355.  
  1356.   185 compound_statement ::= block_statement 
  1357.  
  1358.   186 compound_statement ::= accept_statement 
  1359.  
  1360.   187 compound_statement ::= select_statement 
  1361.  
  1362.   188 label ::= << identifier >> 
  1363.  
  1364.   189 null_statement ::= NULL ; 
  1365.  
  1366.   190 assignment_statement ::= name := expression ; 
  1367.  
  1368.   191 if_statement ::= IF condition_THEN__sequence_of_statements 
  1369.       {ELSIF__condition__THEN__sequence_of_statements} 
  1370.       [ELSE__sequence_of_statements] END IF ; 
  1371.  
  1372.   192 condition ::= expression 
  1373.  
  1374.   193 case_statement ::= CASE expression IS {pragma_alt} 
  1375.       case_statement_alternative {case_statement_alternative} END CASE ; 
  1376.  
  1377.   194 case_statement_alternative ::= WHEN choice {|choice} => 
  1378.       sequence_of_statements 
  1379.  
  1380.   195 case_statement_alternative ::= WHEN OTHERS => sequence_of_statements 
  1381.  
  1382.   196 loop_statement ::= [loop_identifier:] LOOP sequence_of_statements END LOOP 
  1383.       [identifier] ; 
  1384.  
  1385.   197 loop_statement ::= [loop_identifier:] iteration_rule LOOP 
  1386.       sequence_of_statements END LOOP [identifier] ; 
  1387.  
  1388.   198 iteration_rule ::= WHILE condition 
  1389.  
  1390.   199 iteration_rule ::= FOR identifier IN discrete_range 
  1391.  
  1392.   200 iteration_rule ::= FOR identifier IN REVERSE discrete_range 
  1393.  
  1394.   201 declarative_part__begin_end_block ::= declarative_part begin_end_block 
  1395.  
  1396.   202 begin_end_block ::= BEGIN sequence_of_statements END 
  1397.  
  1398.   203 begin_end_block ::= BEGIN sequence_of_statements EXCEPTION 
  1399.       {pragma_alt}__exception_handler_list END 
  1400.  
  1401.   204 block_statement ::= [block_identifier:] DECLARE 
  1402.       declarative_part__begin_end_block [identifier] ; 
  1403.  
  1404.   205 block_statement ::= [block_identifier:] begin_end_block [identifier] ; 
  1405.  
  1406.   206 exit_statement ::= EXIT ; 
  1407.  
  1408.   207 exit_statement ::= EXIT WHEN condition ; 
  1409.  
  1410.   208 exit_statement ::= EXIT expanded_name ; 
  1411.  
  1412.   209 exit_statement ::= EXIT expanded_name WHEN condition ; 
  1413.  
  1414.   210 return_statement ::= RETURN ; 
  1415.  
  1416.   211 return_statement ::= RETURN expression ; 
  1417.  
  1418.   212 goto_statement ::= GOTO expanded_name ; 
  1419.  
  1420.   213 subprogram_declaration ::= subprogram_specification ; 
  1421.  
  1422.   214 subprogram_specification ::= PROCEDURE identifier 
  1423.  
  1424.   215 subprogram_specification ::= PROCEDURE identifier ( parameter_specification
  1425.       {;parameter_specification} ) 
  1426.  
  1427.   216 subprogram_specification ::= FUNCTION designator RETURN type_mark 
  1428.  
  1429.   217 subprogram_specification ::= FUNCTION designator ( parameter_specification 
  1430.       {;parameter_specification} ) RETURN type_mark 
  1431.  
  1432.   218 designator ::= identifier 
  1433.  
  1434.   219 designator ::= string_literal 
  1435.  
  1436.   220 parameter_specification ::= identifier_list mode type_mark [:=expression] 
  1437.  
  1438.   221 mode ::= generic_parameter_mode 
  1439.  
  1440.   222 mode ::= : OUT 
  1441.  
  1442.   223 generic_parameter_mode ::= : 
  1443.  
  1444.   224 generic_parameter_mode ::= : IN 
  1445.  
  1446.   225 generic_parameter_mode ::= : IN OUT 
  1447.  
  1448.   226 subprogram_body ::= subprogram_specification IS 
  1449.       declarative_part__begin_end_block [end_designator] ; 
  1450.  
  1451.   227 call_statement ::= name ; 
  1452.  
  1453.   228 package_declaration ::= package_specification ; 
  1454.  
  1455.   229 package_specification ::= package_spec_indicator {basic_declarative_item} 
  1456.       END [identifier] 
  1457.  
  1458.   230 package_specification ::= package_spec_indicator {basic_declarative_item} 
  1459.       PRIVATE {basic_declarative_item} END [identifier] 
  1460.  
  1461.   231 package_spec_indicator ::= PACKAGE identifier IS 
  1462.  
  1463.   232 package_body ::= package_body_indicator declarative_part END [identifier] ;
  1464.  
  1465.   233 package_body ::= package_body_indicator declarative_part__begin_end_block 
  1466.       [identifier] ; 
  1467.  
  1468.   234 package_body_indicator ::= PACKAGE BODY identifier IS 
  1469.  
  1470.   235 private_type_declaration ::= TYPE identifier IS LIMITED PRIVATE ; 
  1471.  
  1472.   236 private_type_declaration ::= TYPE identifier ( discriminant_specification 
  1473.       {;discriminant_specification} ) IS LIMITED PRIVATE ; 
  1474.  
  1475.   237 private_type_declaration ::= TYPE identifier IS PRIVATE ; 
  1476.  
  1477.   238 private_type_declaration ::= TYPE identifier ( discriminant_specification 
  1478.       {;discriminant_specification} ) IS PRIVATE ; 
  1479.  
  1480.   239 use_clause ::= USE expanded_name {,expanded_name} ; 
  1481.  
  1482.   240 renaming_declaration ::= identifier_list : type_mark RENAMES name ; 
  1483.  
  1484.   241 renaming_declaration ::= identifier_list : EXCEPTION RENAMES expanded_name 
  1485.       ; 
  1486.  
  1487.   242 renaming_declaration ::= PACKAGE identifier RENAMES expanded_name ; 
  1488.  
  1489.   243 renaming_declaration ::= subprogram_specification RENAMES name ; 
  1490.  
  1491.   244 task_declaration ::= task_specification ; 
  1492.  
  1493.   245 task_specification ::= TASK identifier 
  1494.  
  1495.   246 task_specification ::= TASK TYPE identifier 
  1496.  
  1497.   247 task_specification ::= TASK identifier IS {entry_declaration} 
  1498.       {representation_clause} END [identifier] 
  1499.  
  1500.   248 task_specification ::= TASK TYPE identifier IS {entry_declaration} 
  1501.       {representation_clause} END [identifier] 
  1502.  
  1503.   249 task_body ::= task_body_indicator declarative_part__begin_end_block 
  1504.       [identifier] ; 
  1505.  
  1506.   250 task_body_indicator ::= TASK BODY identifier IS 
  1507.  
  1508.   251 entry_declaration ::= ENTRY identifier [(discrete_range)][formal_part] ; 
  1509.  
  1510.   252 accept_statement ::= ACCEPT identifier [(expression)][formal_part] ; 
  1511.  
  1512.   253 accept_statement ::= ACCEPT identifier [(expression)][formal_part] DO 
  1513.       sequence_of_statements END [identifier] ; 
  1514.  
  1515.   254 delay_statement ::= DELAY simple_expression ; 
  1516.  
  1517.   255 select_statement ::= selective_wait 
  1518.  
  1519.   256 select_statement ::= conditional_entry_call 
  1520.  
  1521.   257 select_statement ::= timed_entry_call 
  1522.  
  1523.   258 selective_wait ::= SELECT select_alternative {OR__select_alternative} 
  1524.       [ELSE__sequence_of_statements] END SELECT ; 
  1525.  
  1526.   259 select_alternative ::= {pragma_stm} WHEN condition => 
  1527.       selective_wait_alternative 
  1528.  
  1529.   260 select_alternative ::= {pragma_stm} selective_wait_alternative 
  1530.  
  1531.   261 selective_wait_alternative ::= accept_alternative 
  1532.  
  1533.   262 selective_wait_alternative ::= delay_alternative 
  1534.  
  1535.   263 selective_wait_alternative ::= terminate_alternative 
  1536.  
  1537.   264 accept_alternative ::= accept_statement [sequence_of_statements] 
  1538.  
  1539.   265 delay_alternative ::= delay_statement [sequence_of_statements] 
  1540.  
  1541.   266 terminate_alternative ::= TERMINATE ; {pragma_stm} 
  1542.  
  1543.   267 conditional_entry_call ::= SELECT {pragma_stm} call_statement 
  1544.       [sequence_of_statements] ELSE sequence_of_statements END SELECT ; 
  1545.  
  1546.   268 timed_entry_call ::= SELECT {pragma_stm} call_statement 
  1547.       [sequence_of_statements] OR {pragma_stm} delay_alternative END SELECT ; 
  1548.  
  1549.   269 abort_statement ::= ABORT name {,name} ; 
  1550.  
  1551.   270 compilation ::= {compilation_unit} 
  1552.  
  1553.   271 pragma_header ::= PRAGMA identifier 
  1554.  
  1555.   272 compilation_unit ::= pragma_header ( general_component_associations ) ; 
  1556.  
  1557.   273 compilation_unit ::= pragma_header ; 
  1558.  
  1559.   274 compilation_unit ::= context_clause library_or_secondary_unit 
  1560.  
  1561.   275 library_or_secondary_unit ::= subprogram_declaration 
  1562.  
  1563.   276 library_or_secondary_unit ::= package_declaration 
  1564.  
  1565.   277 library_or_secondary_unit ::= generic_declaration 
  1566.  
  1567.   278 library_or_secondary_unit ::= generic_instantiation 
  1568.  
  1569.   279 library_or_secondary_unit ::= subprogram_body 
  1570.  
  1571.   280 library_or_secondary_unit ::= package_body 
  1572.  
  1573.   281 library_or_secondary_unit ::= subunit 
  1574.  
  1575.   282 context_clause ::= {with_clause{use_clause}} 
  1576.  
  1577.   283 with_clause ::= WITH identifier {,used_identifier} ; 
  1578.  
  1579.   284 body_stub ::= subprogram_specification IS SEPARATE ; 
  1580.  
  1581.   285 body_stub ::= PACKAGE BODY identifier IS SEPARATE ; 
  1582.  
  1583.   286 body_stub ::= TASK BODY identifier IS SEPARATE ; 
  1584.  
  1585.   287 subunit ::= SEPARATE ( expanded_name ) proper_body 
  1586.  
  1587.   288 exception_declaration ::= identifier_list : EXCEPTION ; 
  1588.  
  1589.   289 exception_handler ::= WHEN exception_choice {|exception_choice} => 
  1590.       sequence_of_statements 
  1591.  
  1592.   290 exception_choice ::= expanded_name 
  1593.  
  1594.   291 exception_choice ::= OTHERS 
  1595.  
  1596.   292 raise_statement ::= RAISE ; 
  1597.  
  1598.   293 raise_statement ::= RAISE expanded_name ; 
  1599.  
  1600.   294 generic_declaration ::= generic_specification ; 
  1601.  
  1602.   295 generic_specification ::= generic_formal_part subprogram_specification 
  1603.  
  1604.   296 generic_specification ::= generic_formal_part package_specification 
  1605.  
  1606.   297 generic_formal_part ::= GENERIC {generic_parameter_declaration} 
  1607.  
  1608.   298 generic_parameter_declaration ::= identifier_list generic_parameter_mode 
  1609.       type_mark [:=expression] ; 
  1610.  
  1611.   299 generic_parameter_declaration ::= TYPE identifier IS 
  1612.       generic_type_definition ; 
  1613.  
  1614.   300 generic_parameter_declaration ::= TYPE identifier ( 
  1615.       discriminant_specification {;discriminant_specification} ) IS 
  1616.       generic_type_definition ; 
  1617.  
  1618.   301 generic_parameter_declaration ::= WITH subprogram_specification 
  1619.       [IS__name__or__<>] ; 
  1620.  
  1621.   302 generic_type_definition ::= ( <> ) 
  1622.  
  1623.   303 generic_type_definition ::= RANGE <> 
  1624.  
  1625.   304 generic_type_definition ::= DIGITS <> 
  1626.  
  1627.   305 generic_type_definition ::= DELTA <> 
  1628.  
  1629.   306 generic_type_definition ::= LIMITED PRIVATE 
  1630.  
  1631.   307 generic_type_definition ::= PRIVATE 
  1632.  
  1633.   308 generic_type_definition ::= array_type_definition 
  1634.  
  1635.   309 generic_type_definition ::= access_type_definition 
  1636.  
  1637.   310 generic_instantiation ::= PACKAGE identifier IS NEW expanded_name ; 
  1638.  
  1639.   311 generic_instantiation ::= PACKAGE identifier IS NEW expanded_name ( 
  1640.       generic_association {,generic_association} ) ; 
  1641.  
  1642.   312 generic_instantiation ::= FUNCTION designator IS NEW expanded_name ; 
  1643.  
  1644.   313 generic_instantiation ::= FUNCTION designator IS NEW expanded_name ( 
  1645.       generic_association {,generic_association} ) ; 
  1646.  
  1647.   314 generic_instantiation ::= subprogram_specification IS NEW expanded_name ; 
  1648.  
  1649.   315 generic_instantiation ::= subprogram_specification IS NEW expanded_name ( 
  1650.       generic_association {,generic_association} ) ; 
  1651.  
  1652.   316 generic_association ::= 
  1653.       [generic_formal_parameter=>]generic_actual_parameter 
  1654.  
  1655.   317 generic_formal_parameter ::= identifier 
  1656.  
  1657.   318 generic_formal_parameter ::= string_literal 
  1658.  
  1659.   319 generic_actual_parameter ::= expression 
  1660.  
  1661.   320 representation_clause ::= length_clause 
  1662.  
  1663.   321 representation_clause ::= enumeration_representation_clause 
  1664.  
  1665.   322 representation_clause ::= address_clause 
  1666.  
  1667.   323 representation_clause ::= record_representation_clause 
  1668.  
  1669.   324 length_clause ::= FOR attribute USE simple_expression ; 
  1670.  
  1671.   325 enumeration_representation_clause ::= FOR identifier USE aggregate ; 
  1672.  
  1673.   326 record_representation_clause ::= FOR identifier USE RECORD 
  1674.       {component_clause} END RECORD ; 
  1675.  
  1676.   327 record_representation_clause ::= FOR identifier USE RECORD alignment_clause
  1677.       {component_clause} END RECORD ; 
  1678.  
  1679.   328 component_clause ::= name AT simple_expression range_constraint ; 
  1680.  
  1681.   329 alignment_clause ::= AT MOD simple_expression ; 
  1682.  
  1683.   330 address_clause ::= FOR identifier USE AT simple_expression ; 
  1684.  
  1685.   331 code_statement ::= name ' aggregate ; 
  1686.  
  1687.   332 {pragma_decl} ::= EMPTY
  1688.  
  1689.   333 {pragma_decl} ::= {pragma_decl} pragma 
  1690.  
  1691.   334 {pragma_variant} ::= EMPTY
  1692.  
  1693.   335 {pragma_variant} ::= {pragma_variant} pragma 
  1694.  
  1695.   336 {pragma_stm} ::= EMPTY
  1696.  
  1697.   337 {pragma_stm} ::= {pragma_stm} pragma 
  1698.  
  1699.   338 {pragma_alt} ::= EMPTY
  1700.  
  1701.   339 {pragma_alt} ::= {pragma_alt} pragma 
  1702.  
  1703.   340 [:=expression] ::= EMPTY
  1704.  
  1705.   341 [:=expression] ::= := expression 
  1706.  
  1707.   342 {,identifier} ::= EMPTY
  1708.  
  1709.   343 {,identifier} ::= {,identifier} , identifier 
  1710.  
  1711.   344 type_name|subtype_name ::= expanded_name 
  1712.  
  1713.   345 expanded_name ::= identifier 
  1714.  
  1715.   346 expanded_name ::= expanded_name . identifier 
  1716.  
  1717.   347 {,enumeration_literal_specification} ::= EMPTY
  1718.  
  1719.   348 {,enumeration_literal_specification} ::= 
  1720.       {,enumeration_literal_specification} , enumeration_literal_specification 
  1721.  
  1722.   349 [range_constraint] ::= EMPTY
  1723.  
  1724.   350 [range_constraint] ::= range_constraint 
  1725.  
  1726.   351 {,index_subtype_definition} ::= EMPTY
  1727.  
  1728.   352 {,index_subtype_definition} ::= {,index_subtype_definition} , 
  1729.       index_subtype_definition 
  1730.  
  1731.   353 {,discrete_range} ::= EMPTY
  1732.  
  1733.   354 {,discrete_range} ::= {,discrete_range} , discrete_range 
  1734.  
  1735.   355 {component_declaration} ::= EMPTY
  1736.  
  1737.   356 {component_declaration} ::= {component_declaration} component_declaration 
  1738.       {pragma_decl} 
  1739.  
  1740.   357 {;discriminant_specification} ::= EMPTY
  1741.  
  1742.   358 {;discriminant_specification} ::= {;discriminant_specification} ; 
  1743.       discriminant_specification 
  1744.  
  1745.   359 {variant} ::= EMPTY
  1746.  
  1747.   360 {variant} ::= {variant} variant 
  1748.  
  1749.   361 {|choice} ::= EMPTY
  1750.  
  1751.   362 {|choice} ::= {|choice} '|' choice 
  1752.  
  1753.   363 {basic_declarative_item} ::= {pragma_decl} 
  1754.  
  1755.   364 {basic_declarative_item} ::= {basic_declarative_item} 
  1756.       basic_declarative_item {pragma_decl} 
  1757.  
  1758.   365 {later_declarative_item} ::= {pragma_decl} 
  1759.  
  1760.   366 {later_declarative_item} ::= {later_declarative_item} 
  1761.       later_declarative_item {pragma_decl} 
  1762.  
  1763.   367 expression,expression{,expression} ::= expression , expression 
  1764.  
  1765.   368 expression,expression{,expression} ::= expression,expression{,expression} ,
  1766.       expression 
  1767.  
  1768.   369 choice{|choice}=>expression ::= choice {|choice} => expression 
  1769.  
  1770.   370 {,choice{|choice}=>expression} ::= EMPTY
  1771.  
  1772.   371 {,choice{|choice}=>expression} ::= {,choice{|choice}=>expression} , 
  1773.       choice{|choice}=>expression 
  1774.  
  1775.   372 [,others=>expression] ::= EMPTY
  1776.  
  1777.   373 [,others=>expression] ::= , others=>expression 
  1778.  
  1779.   374 others=>expression ::= OTHERS => expression 
  1780.  
  1781.   375 ga_expression ::= expression 
  1782.  
  1783.   376 ga_expression ::= simple_expression .. simple_expression 
  1784.  
  1785.   377 ga_expression ::= name range_constraint 
  1786.  
  1787.   378 ga_expression{,ga_expression} ::= ga_expression 
  1788.  
  1789.   379 ga_expression{,ga_expression} ::= ga_expression{,ga_expression} , 
  1790.       ga_expression 
  1791.  
  1792.   380 identifier{|identifier}=>expression ::= identifier {|identifier} => 
  1793.       expression 
  1794.  
  1795.   381 {,identifier{|identifier}=>expression} ::= EMPTY
  1796.  
  1797.   382 {,identifier{|identifier}=>expression} ::= 
  1798.       {,identifier{|identifier}=>expression} , 
  1799.       identifier{|identifier}=>expression 
  1800.  
  1801.   383 {|identifier} ::= EMPTY
  1802.  
  1803.   384 {|identifier} ::= {|identifier} '|' identifier 
  1804.  
  1805.   385 relation{AND__relation} ::= relation AND relation 
  1806.  
  1807.   386 relation{AND__relation} ::= relation{AND__relation} AND relation 
  1808.  
  1809.   387 relation{OR__relation} ::= relation OR relation 
  1810.  
  1811.   388 relation{OR__relation} ::= relation{OR__relation} OR relation 
  1812.  
  1813.   389 relation{XOR__relation} ::= relation XOR relation 
  1814.  
  1815.   390 relation{XOR__relation} ::= relation{XOR__relation} XOR relation 
  1816.  
  1817.   391 relation{AND__THEN__relation} ::= relation AND THEN relation 
  1818.  
  1819.   392 relation{AND__THEN__relation} ::= relation{AND__THEN__relation} AND THEN 
  1820.       relation 
  1821.  
  1822.   393 relation{OR__ELSE__relation} ::= relation OR ELSE relation 
  1823.  
  1824.   394 relation{OR__ELSE__relation} ::= relation{OR__ELSE__relation} OR ELSE 
  1825.       relation 
  1826.  
  1827.   395 [relational_operator__simple_expression] ::= EMPTY
  1828.  
  1829.   396 [relational_operator__simple_expression] ::= relational_operator 
  1830.       simple_expression 
  1831.  
  1832.   397 [NOT]IN ::= IN 
  1833.  
  1834.   398 [NOT]IN ::= NOT IN 
  1835.  
  1836.   399 [unary_adding_operator]term{binary_adding_operator__term} ::= term 
  1837.  
  1838.   400 [unary_adding_operator]term{binary_adding_operator__term} ::= 
  1839.       unary_adding_operator term 
  1840.  
  1841.   401 [unary_adding_operator]term{binary_adding_operator__term} ::= 
  1842.       [unary_adding_operator]term{binary_adding_operator__term} 
  1843.       binary_adding_operator term 
  1844.  
  1845.   402 factor{multiplying_operator__factor} ::= factor 
  1846.  
  1847.   403 factor{multiplying_operator__factor} ::= 
  1848.       factor{multiplying_operator__factor} multiplying_operator factor 
  1849.  
  1850.   404 [exponentiating_operator__primary] ::= EMPTY
  1851.  
  1852.   405 [exponentiating_operator__primary] ::= exponentiating_operator primary 
  1853.  
  1854.   406 {statement} ::= {pragma_stm} 
  1855.  
  1856.   407 {statement} ::= {statement} statement {pragma_stm} 
  1857.  
  1858.   408 {label}+ ::= label 
  1859.  
  1860.   409 {label}+ ::= {label}+ label 
  1861.  
  1862.   410 condition_THEN__sequence_of_statements ::= condition THEN 
  1863.       sequence_of_statements 
  1864.  
  1865.   411 {ELSIF__condition__THEN__sequence_of_statements} ::= EMPTY
  1866.  
  1867.   412 {ELSIF__condition__THEN__sequence_of_statements} ::= 
  1868.       {ELSIF__condition__THEN__sequence_of_statements} ELSIF condition THEN 
  1869.       sequence_of_statements 
  1870.  
  1871.   413 [ELSE__sequence_of_statements] ::= EMPTY
  1872.  
  1873.   414 [ELSE__sequence_of_statements] ::= ELSE sequence_of_statements 
  1874.  
  1875.   415 {case_statement_alternative} ::= EMPTY
  1876.  
  1877.   416 {case_statement_alternative} ::= {case_statement_alternative} 
  1878.       case_statement_alternative 
  1879.  
  1880.   417 [loop_identifier:] ::= EMPTY
  1881.  
  1882.   418 [loop_identifier:] ::= identifier : 
  1883.  
  1884.   419 [identifier] ::= EMPTY
  1885.  
  1886.   420 [identifier] ::= identifier 
  1887.  
  1888.   421 [block_identifier:] ::= EMPTY
  1889.  
  1890.   422 [block_identifier:] ::= identifier : 
  1891.  
  1892.   423 {pragma_alt}__exception_handler_list ::= {pragma_alt} 
  1893.       exception_handler_list 
  1894.  
  1895.   424 exception_handler_list ::= exception_handler 
  1896.  
  1897.   425 exception_handler_list ::= exception_handler_list exception_handler 
  1898.  
  1899.   426 {;parameter_specification} ::= EMPTY
  1900.  
  1901.   427 {;parameter_specification} ::= {;parameter_specification} ; 
  1902.       parameter_specification 
  1903.  
  1904.   428 [end_designator] ::= EMPTY
  1905.  
  1906.   429 [end_designator] ::= identifier 
  1907.  
  1908.   430 [end_designator] ::= string_literal 
  1909.  
  1910.   431 {,expanded_name} ::= EMPTY
  1911.  
  1912.   432 {,expanded_name} ::= {,expanded_name} , expanded_name 
  1913.  
  1914.   433 {entry_declaration} ::= {pragma_decl} 
  1915.  
  1916.   434 {entry_declaration} ::= {entry_declaration} entry_declaration {pragma_decl}
  1917.  
  1918.   435 {representation_clause} ::= EMPTY
  1919.  
  1920.   436 {representation_clause} ::= {representation_clause} representation_clause 
  1921.       {pragma_decl} 
  1922.  
  1923.   437 [(discrete_range)][formal_part] ::= EMPTY
  1924.  
  1925.   438 [(discrete_range)][formal_part] ::= ( parameter_specification 
  1926.       {;parameter_specification} ) 
  1927.  
  1928.   439 [(discrete_range)][formal_part] ::= ( discrete_range ) 
  1929.  
  1930.   440 [(discrete_range)][formal_part] ::= ( discrete_range ) ( 
  1931.       parameter_specification {;parameter_specification} ) 
  1932.  
  1933.   441 [(expression)][formal_part] ::= EMPTY
  1934.  
  1935.   442 [(expression)][formal_part] ::= ( parameter_specification 
  1936.       {;parameter_specification} ) 
  1937.  
  1938.   443 [(expression)][formal_part] ::= ( expression ) 
  1939.  
  1940.   444 [(expression)][formal_part] ::= ( expression ) ( parameter_specification 
  1941.       {;parameter_specification} ) 
  1942.  
  1943.   445 {OR__select_alternative} ::= EMPTY
  1944.  
  1945.   446 {OR__select_alternative} ::= {OR__select_alternative} OR select_alternative
  1946.  
  1947.   447 [sequence_of_statements] ::= {pragma_stm} 
  1948.  
  1949.   448 [sequence_of_statements] ::= sequence_of_statements 
  1950.  
  1951.   449 {,name} ::= EMPTY
  1952.  
  1953.   450 {,name} ::= {,name} , name 
  1954.  
  1955.   451 {compilation_unit} ::= compilation_unit 
  1956.  
  1957.   452 {compilation_unit} ::= {compilation_unit} compilation_unit 
  1958.  
  1959.   453 {with_clause{use_clause}} ::= EMPTY
  1960.  
  1961.   454 {with_clause{use_clause}} ::= {with_clause{use_clause}} with_clause 
  1962.       use_clause_list 
  1963.  
  1964.   455 use_clause_list ::= {pragma_decl} 
  1965.  
  1966.   456 use_clause_list ::= use_clause_list use_clause {pragma_decl} 
  1967.  
  1968.   457 {,used_identifier} ::= EMPTY
  1969.  
  1970.   458 {,used_identifier} ::= {,used_identifier} , identifier 
  1971.  
  1972.   459 {|exception_choice} ::= EMPTY
  1973.  
  1974.   460 {|exception_choice} ::= {|exception_choice} '|' exception_choice 
  1975.  
  1976.   461 {generic_parameter_declaration} ::= EMPTY
  1977.  
  1978.   462 {generic_parameter_declaration} ::= {generic_parameter_declaration} 
  1979.       generic_parameter_declaration 
  1980.  
  1981.   463 [IS__name__or__<>] ::= EMPTY
  1982.  
  1983.   464 [IS__name__or__<>] ::= IS name 
  1984.  
  1985.   465 [IS__name__or__<>] ::= IS <> 
  1986.  
  1987.   466 {,generic_association} ::= EMPTY
  1988.  
  1989.   467 {,generic_association} ::= {,generic_association} , generic_association 
  1990.  
  1991.   468 [generic_formal_parameter=>]generic_actual_parameter ::= 
  1992.       generic_actual_parameter 
  1993.  
  1994.   469 [generic_formal_parameter=>]generic_actual_parameter ::= 
  1995.       generic_formal_parameter => generic_actual_parameter 
  1996.  
  1997.   470 {component_clause} ::= {pragma_decl} 
  1998.  
  1999.   471 {component_clause} ::= {component_clause} component_clause {pragma_decl} 
  2000.  
  2001. 1Non terminalss
  2002.  
  2003.  $ACC
  2004.  compilation
  2005.  general_component_associations
  2006.  pragma
  2007.  object_declaration
  2008.  basic_declaration
  2009.  number_declaration
  2010.  type_declaration
  2011.  subtype_declaration
  2012.  subprogram_declaration
  2013.  package_declaration
  2014.  task_declaration
  2015.  generic_declaration
  2016.  exception_declaration
  2017.  generic_instantiation
  2018.  renaming_declaration
  2019.  identifier_list
  2020.  subtype_indication
  2021.  [:=expression]
  2022.  constrained_array_definition
  2023.  expression
  2024.  {,identifier}
  2025.  full_type_declaration
  2026.  incomplete_type_declaration
  2027.  private_type_declaration
  2028.  type_definition
  2029.  discriminant_specification
  2030.  {;discriminant_specification}
  2031.  enumeration_type_definition
  2032.  integer_type_definition
  2033.  real_type_definition
  2034.  array_type_definition
  2035.  record_type_definition
  2036.  access_type_definition
  2037.  derived_type_definition
  2038.  type_mark
  2039.  constraint
  2040.  type_name|subtype_name
  2041.  range_constraint
  2042.  floating_point_constraint
  2043.  fixed_point_constraint
  2044.  simple_expression
  2045.  enumeration_literal_specification
  2046.  {,enumeration_literal_specification}
  2047.  enumeration_literal
  2048.  floating_accuracy_definition
  2049.  [range_constraint]
  2050.  fixed_accuracy_definition
  2051.  unconstrained_array_definition
  2052.  index_subtype_definition
  2053.  {,index_subtype_definition}
  2054.  index_constraint
  2055.  name
  2056.  discrete_range
  2057.  {,discrete_range}
  2058.  range
  2059.  component_list
  2060.  {pragma_decl}
  2061.  {component_declaration}
  2062.  component_declaration
  2063.  variant_part
  2064.  {pragma_variant}
  2065.  variant
  2066.  {variant}
  2067.  choice
  2068.  {|choice}
  2069.  {basic_declarative_item}
  2070.  declarative_part
  2071.  body
  2072.  {later_declarative_item}
  2073.  basic_declarative_item
  2074.  representation_clause
  2075.  use_clause
  2076.  later_declarative_item
  2077.  proper_body
  2078.  body_stub
  2079.  subprogram_body
  2080.  package_body
  2081.  task_body
  2082.  indexed_component
  2083.  selected_component
  2084.  attribute
  2085.  selector
  2086.  attribute_designator
  2087.  component_associations
  2088.  aggregate
  2089.  expression,expression{,expression}
  2090.  [,others=>expression]
  2091.  choice{|choice}=>expression
  2092.  {,choice{|choice}=>expression}
  2093.  others=>expression
  2094.  ga_expression{,ga_expression}
  2095.  identifier{|identifier}=>expression
  2096.  {,identifier{|identifier}=>expression}
  2097.  relation
  2098.  relation{AND__relation}
  2099.  relation{OR__relation}
  2100.  relation{XOR__relation}
  2101.  relation{AND__THEN__relation}
  2102.  relation{OR__ELSE__relation}
  2103.  [relational_operator__simple_expression]
  2104.  [NOT]IN
  2105.  [unary_adding_operator]term{binary_adding_operator__term}
  2106.  factor{multiplying_operator__factor}
  2107.  term
  2108.  primary
  2109.  [exponentiating_operator__primary]
  2110.  factor
  2111.  high_precedence_unary_operator
  2112.  parenthesized_expression
  2113.  allocator
  2114.  qualified_expression
  2115.  relational_operator
  2116.  binary_adding_operator
  2117.  unary_adding_operator
  2118.  multiplying_operator
  2119.  exponentiating_operator
  2120.  expanded_name
  2121.  {pragma_stm}
  2122.  statement
  2123.  {statement}
  2124.  sequence_of_statements
  2125.  simple_statement
  2126.  compound_statement
  2127.  {label}+
  2128.  null_statement
  2129.  assignment_statement
  2130.  exit_statement
  2131.  return_statement
  2132.  goto_statement
  2133.  delay_statement
  2134.  abort_statement
  2135.  raise_statement
  2136.  code_statement
  2137.  call_statement
  2138.  if_statement
  2139.  case_statement
  2140.  loop_statement
  2141.  block_statement
  2142.  accept_statement
  2143.  select_statement
  2144.  label
  2145.  condition_THEN__sequence_of_statements
  2146.  {ELSIF__condition__THEN__sequence_of_statements}
  2147.  [ELSE__sequence_of_statements]
  2148.  condition
  2149.  {pragma_alt}
  2150.  case_statement_alternative
  2151.  {case_statement_alternative}
  2152.  [loop_identifier:]
  2153.  [identifier]
  2154.  iteration_rule
  2155.  begin_end_block
  2156.  declarative_part__begin_end_block
  2157.  {pragma_alt}__exception_handler_list
  2158.  [block_identifier:]
  2159.  subprogram_specification
  2160.  parameter_specification
  2161.  {;parameter_specification}
  2162.  designator
  2163.  mode
  2164.  generic_parameter_mode
  2165.  [end_designator]
  2166.  package_specification
  2167.  package_spec_indicator
  2168.  package_body_indicator
  2169.  {,expanded_name}
  2170.  task_specification
  2171.  {entry_declaration}
  2172.  {representation_clause}
  2173.  task_body_indicator
  2174.  [(discrete_range)][formal_part]
  2175.  entry_declaration
  2176.  [(expression)][formal_part]
  2177.  selective_wait
  2178.  conditional_entry_call
  2179.  timed_entry_call
  2180.  select_alternative
  2181.  {OR__select_alternative}
  2182.  selective_wait_alternative
  2183.  accept_alternative
  2184.  delay_alternative
  2185.  terminate_alternative
  2186.  [sequence_of_statements]
  2187.  {,name}
  2188.  {compilation_unit}
  2189.  pragma_header
  2190.  compilation_unit
  2191.  context_clause
  2192.  library_or_secondary_unit
  2193.  subunit
  2194.  {with_clause{use_clause}}
  2195.  {,used_identifier}
  2196.  with_clause
  2197.  exception_choice
  2198.  {|exception_choice}
  2199.  exception_handler
  2200.  generic_specification
  2201.  generic_formal_part
  2202.  {generic_parameter_declaration}
  2203.  generic_parameter_declaration
  2204.  generic_type_definition
  2205.  [IS__name__or__<>]
  2206.  generic_association
  2207.  {,generic_association}
  2208.  [generic_formal_parameter=>]generic_actual_parameter
  2209.  generic_formal_parameter
  2210.  generic_actual_parameter
  2211.  length_clause
  2212.  enumeration_representation_clause
  2213.  address_clause
  2214.  record_representation_clause
  2215.  {component_clause}
  2216.  alignment_clause
  2217.  component_clause
  2218.  ga_expression
  2219.  {|identifier}
  2220.  exception_handler_list
  2221.  use_clause_list
  2222. 1Information about Action Tables
  2223.  
  2224.  Number of Entries   3845
  2225.  Origin Table Size   5501
  2226.  Action Table Size   8286
  2227.  Number Unused   2751
  2228.  Distribution of entries   1905    646    157     34      7      1      0      0
  2229. 1Timing Statistics
  2230.  
  2231.                   Cpu Time   Elapsed  LG Reads LG Writes
  2232.  Parse:               9043      9043         0        35
  2233.  Preliminary:          311       311         0        68
  2234.  First Map:           2014      2014         0         6
  2235.  Item Creation:       1303      1303         0        10
  2236.  Follow Map:          1056      1056         0         0
  2237.  Closure:              999       999         0         0
  2238.  States:             10331     10331         0       305
  2239.  Reductions:         10801     10801         0        86
  2240.  Summary:             1273      1272         0         0
  2241.  Compress:            2747      2747         0        77
  2242.  Table Dump:          2000      2001         0         0
  2243. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2244. --stmtprof.cnt
  2245. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2246. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]GRMCONST.BDY                      32    31
  2247. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]PTBLS.BDY                      31801  3539
  2248. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]SPUTILS.SPC                       56   188
  2249. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]SPUTILS.BDY                      500   448
  2250. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]STMTPROF.ADA                     311   227
  2251. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]APPLYACT.SUB                     163   573
  2252. [NOSC.RELEASES.V0101.STMTPROF.SOURCE]GETNEXT.SUB                       38    61
  2253.  
  2254.