[flang] improvement for 'Re-write OpenMP 4.5 grammar doc with BNF'

Original-commit: flang-compiler/f18@e17e74104bf23bad2dbade8e04a2eb58902a9f34
Reviewed-on: https://github.com/flang-compiler/f18/pull/470
Tree-same-pre-rewrite: false
diff --git a/flang/documentation/OpenMP-4.5-grammar.txt b/flang/documentation/OpenMP-4.5-grammar.txt
index 0af5182..bb5ff0f 100644
--- a/flang/documentation/OpenMP-4.5-grammar.txt
+++ b/flang/documentation/OpenMP-4.5-grammar.txt
@@ -17,6 +17,8 @@
                        reduction-clause |
                        proc-bind-clause
 
+2.5 end-parallel -> END PARALLEL
+
 2.7.1 do -> DO [do-clause[ [,] do-clause]...]
       do-clause -> private-clause |
                    firstprivate-clause |
@@ -35,6 +37,8 @@
                          lastprivate-clause |
                          reduction-clause
 
+2.7.2 section -> SECTION
+
 2.7.2 end-sections -> END SECTIONS [nowait-clause]
 
 2.7.3 single -> SINGLE [single-clause[ [,] single-clause]...]
@@ -59,6 +63,8 @@
                      reduction-clause |
                      collapse-clause
 
+2.8.1 end-simd -> END SIMD
+
 2.8.2 declare-simd -> DECLARE SIMD [(proc-name)] [declare-simd-clause[ [,] declare-simd-clause]...]
       declare-simd-clause -> simdlen-clause |
                              linear-clause |
@@ -71,7 +77,7 @@
       do-simd-clause -> do-clause |
                         simd-clause
 
-2.8.4 end-do-simd -> END DO SIMD [nowait-clause]
+2.8.3 end-do-simd -> END DO SIMD [nowait-clause]
 
 2.9.1 task -> TASK [task-clause[ [,] task-clause]...]
       task-clause -> if-clause |
@@ -85,6 +91,8 @@
                      depend-clause |
                      priority-clause
 
+2.9.1 end-task -> END TASK
+
 2.9.2 taskloop -> TASKLOOP [taskloop-clause[ [,] taskloop-clause]...]
       taskloop-clause -> if-clause |
                          shared-clause |
@@ -101,10 +109,14 @@
                          mergeable-clause |
                          nogroup-clause
 
+2.9.2 end-taskloop -> END TASKLOOP
+
 2.9.3 taskloop-simd -> TASKLOOP SIMD [taskloop-simd-clause[ [,] taskloop-simd-clause]...]
       taskloop-simd-clause -> taskloop-clause |
                               simd-clause
 
+2.9.3 end-taskloop-simd -> END TASKLOOP SIMD
+
 2.9.4 taskyield -> TASKYIELD
 
 2.10.1 target-data -> TARGET DATA target-data-clause[ [ [,] target-data-clause]...]
@@ -113,6 +125,8 @@
                              map-clause |
                              use-device-ptr-clause
 
+2.10.1 end-target-data -> END TARGET DATA
+
 2.10.2 target-enter-data -> TARGET ENTER DATA [ target-enter-data-clause[ [,] target-enter-data-clause]...]
        target-enter-data-clause -> if-clause |
                                    device-clause |
@@ -138,6 +152,8 @@
                         nowait-clause |
                         depend-clause
 
+2.10.4 end-target -> END TARGET
+
 2.10.5 target-update -> TARGET UPDATE target-update-clause[ [ [,] target-update-clause]...]
        target-update-clause -> motion-clause |
                                if-clause |
@@ -147,8 +163,8 @@
        motion-clause -> to-clause |
                         from-clause
 
-2.10.6 declare-target -> DECLARE TARGET (extended-list)
-2.10.6 declare-target -> DECLARE TARGET [declare-target-clause[ [,] declare-target-clause]...]
+2.10.6 declare-target -> DECLARE TARGET (extended-list) |
+                         DECLARE TARGET [declare-target-clause[ [,] declare-target-clause]...]
        declare-target-clause -> to-clause |
                                 link-clause
 
@@ -161,6 +177,8 @@
                        shared-clause |
                        reduction-clause
 
+2.10.7 end-teams -> END TEAMS
+
 2.10.8 distribute -> DISTRIBUTE [distribute-clause[ [,] distribute-clause]...]
        distribute-clause -> private-clause |
                             firstprivate-clause |
@@ -168,20 +186,28 @@
                             collapse-clause |
                             dist-schedule-clause
 
+2.10.8 end-distribute -> END DISTRIBUTE
+
 2.10.9 distribute-simd -> DISTRIBUTE SIMD [distribute-simd-clause[ [,] distribute-simd-clause]...]
        distribute-simd-clause -> distribute-clause |
                                  simd-clause
 
+2.10.9 end-distribute-simd -> END DISTRIBUTE SIMD
+
 2.10.10 distribute-parellel-do ->
            DISTRIBUTE PARALLEL DO [distribute-parallel-do-clause[ [,] distribute-parallel-do-clause]...]
         distribute-parallel-do-clause -> distribute-clause |
                                          parallel-do-clause
 
+2.10.10 end-distribute-parellel-do -> END DISTRIBUTE PARALLEL DO
+
 2.10.11 distribute-parallel-do-simd ->
            DISTRIBUTE PARALLEL DO SIMD [distribute-parallel-do-simd-clause[ [,] distribute-parallel-do-simd-clause]...]
         distribute-parallel-do-simd-clause -> distribute-clause |
                                               parallel-do-simd-clause
 
+2.10.11 end-distribute-parallel-do-simd -> END DISTRIBUTE PARALLEL DO SIMD
+
 2.11.1 parallel-do -> PARALLEL DO [parallel-do-clause[ [,] parallel-do-clause]...]
        parallel-do-clause -> parallel-clause |
                              do-clause
@@ -209,64 +235,92 @@
        target-parallel-clause -> target-clause |
                                  parallel-clause
 
+2.11.5 end-target-parallel -> END TARGET PARALLEL
+
 2.11.6 target-parallel-do -> TARGET PARALLEL DO [target-parallel-do-clause[ [,] target-parallel-do-clause]...]
        target-parallel-do-clause -> target-clause |
                                     parallel-do-clause
 
+2.11.6 end-target-parallel-do -> END TARGET PARALLEL DO
+
 2.11.7 target-parallel-do-simd ->
           TARGET PARALLEL DO SIMD [target-parallel-do-simd-clause[ [,] target-parallel-do-simd-clause]...]
        target-parallel-do-simd-clause -> target-clause |
                                          parallel-do-simd-clause
 
+2.11.7 end-target-parallel-do-simd -> END TARGET PARALLEL DO SIMD
+
 2.11.8 target-simd -> TARGET SIMD [target-simd-clause[ [,] target-simd-clause]...]
        target-simd-clause -> target-clause |
                              simd-clause
 
+2.11.8 end-target-simd -> END TARGET SIMD
+
 2.11.9 target-teams -> TARGET TEAMS [target-teams-clause[ [,] target-teams-clause]...]
        target-teams-clause -> target-clause |
                               teams-clause
 
+2.11.9 end-target-teams -> END TARGET TEAMS
+
 2.11.10 teams-distribute -> TEAMS DISTRIBUTE [teams-distribute-clause[ [,] teams-distribute-clause]...]
         teams-distribute-clause -> teams-clause |
                                    distribute-clause
 
+2.11.10 end-teams-distribute -> END TEAMS DISTRIBUTE
+
 2.11.11 teams-distribute-simd ->
            TEAMS DISTRIBUTE SIMD [teams-distribute-simd-clause[ [,] teams-distribute-simd-clause]...]
         teams-distribute-simd-clause -> teams-clause |
                                         distribute-simd-clause
 
+2.11.11 end-teams-distribute-simd -> END TEAMS DISTRIBUTE SIMD
+
 2.11.12 target-teams-distribute ->
            TARGET TEAMS DISTRIBUTE [target-teams-distribute-clause[ [,] target-teams-distribute-clause]...]
         target-teams-distribute-clause -> target-clause |
                                           teams-distribute-clause
 
+2.11.12 end-target-teams-distribute -> END TARGET TEAMS DISTRIBUTE
+
 2.11.13 target-teams-distribute-simd ->
            TARGET TEAMS DISTRIBUTE SIMD [target-teams-distribute-simd-clause[ [,] target-teams-distribute-simd-clause]...]
         target-teams-distribute-simd-clause -> target-clause |
                                                teams-distribute-simd-clause
 
+2.11.13 end-target-teams-distribute-simd -> END TARGET TEAMS DISTRIBUTE SIMD
+
 2.11.14 teams-distribute-parallel-do ->
            TEAMS DISTRIBUTE PARALLEL DO [teams-distribute-parallel-do-clause[ [,] teams-distribute-parallel-do-clause]...]
         teams-distribute-parallel-do-clause -> teams-clause |
                                                distribute-parallel-do-clause
 
+2.11.14 end-teams-distribute-parallel-do -> END TEAMS DISTRIBUTE PARALLEL DO
+
 2.11.15 target-teams-distribute-parallel-do ->
            TARGET TEAMS DISTRIBUTE PARALLEL DO [target-teams-distribute-parallel-do-clause[ [,] target-teams-distribute-parallel-do-clause]...]
         target-teams-distribute-parallel-do-clause -> target-clause |
                                                       teams-distribute-parallel-do-clause
 
+2.11.15 end-target-teams-distribute-parallel-do -> END TARGET TEAMS DISTRIBUTE PARALLEL DO
+
 2.11.16 teams-distribute-parallel-do-simd ->
            TEAMS DISTRIBUTE PARALLEL DO SIMD [teams-distribute-parallel-do-simd-clause[ [,] teams-distribute-parallel-do-simd-clause]...]
         teams-distribute-parallel-do-simd-clause -> teams-clause |
                                                     distribute-parallel-do-simd-clause
 
+2.11.16 end-teams-distribute-parallel-do-simd -> END TEAMS DISTRIBUTE PARALLEL DO SIMD
+
 2.11.17 target-teams-distribute-parallel-do-simd ->
            TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD [target-teams-distribute-parallel-do-simd-clause[ [,] target-teams-distribute-parallel-do-simd-clause]...]
         target-teams-distribute-parallel-do-simd-clause -> target-clause |
                                                            teams-distribute-parallel-do-simd-clause
 
+2.11.17 end-target-teams-distribute-parallel-do-simd -> END TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD
+
 2.13.1 master -> MASTER
 
+2.13.1 end-master -> END MASTER
+
 2.13.2 critical -> CRITICAL [(name) [HINT(hint-expr)]]
 
 2.13.2 end-critical -> END CRITICAL [(name)]
@@ -277,6 +331,8 @@
 
 2.13.5 taskgroup -> TASKGROUP
 
+2.13.5 end-taskgroup -> END TASKGROUP
+
 2.13.6 atomic -> ATOMIC [seq_cst[,]] READ | WRITE | UPDATE | CAPTURE [[,]seq_cst]
 2.13.6 atomic -> ATOMIC [seq_cst]
 
@@ -285,6 +341,8 @@
 2.13.8 ordered -> ORDERED ordered-construct-clause [[[,] ordered-construct-clause]...]
        ordered-construct-clause -> depend-clause
 
+2.13.8 end-ordered -> END ORDERED
+
 2.14.1 cancel -> CANCEL construct-type-clause [ [,] if-clause]
        construct-type-clause -> PARALLEL |
                                 SECTIONS |
@@ -295,7 +353,7 @@
 
 2.15.2 threadprivate -> THREADPRIVATE (variable-name-list)
 
-2.16 declare-reduction -> DECLARE REDUCTION (reduction-identifier : type-list : combiner)
+2.16 declare-reduction -> DECLARE REDUCTION (reduction-identifier : type-list : combiner) [initializer-clause]
 
 # Clauses
 2.5 proc-bind-clause -> PROC_BIND (MASTER | CLOSE | SPREAD)
@@ -379,7 +437,8 @@
 2.15.3.5 lastprivate-clause -> LASTPRIVATE (variable-name-list)
 
 2.15.3.6 reduction-clause -> REDUCTION (reduction-identifier: variable-name-list)
-         reduction-identifier -> + | - | * | .AND. | .OR. | .EQV. | .NEQV. |
+         reduction-identifier -> + | - | * |
+                                 .AND. | .OR. | .EQV. | .NEQV. |
                                  MAX | MIN | IAND | IOR | IEOR
 
 2.15.3.7 linear-clause -> LINEAR (linear-list[ : linear-step])
@@ -390,7 +449,8 @@
 
 2.15.4.2 copyprivate-clause -> COPYPRIVATE (variable-name-list)
 
-2.15.5.1 map -> MAP ([ [ALWAYS[,]] (TO | FROM | TOFROM | ALLOC | RELEASE |
-                                  DELETE) : ] variable-name-list)
+2.15.5.1 map -> MAP ([ [ALWAYS[,]] map-type : ] variable-name-list)
+         map-type -> TO | FROM | TOFROM |
+                     ALLOC | RELEASE | DELETE
 
 2.15.5.2 defaultmap -> DEFAULTMAP (TOFROM:SCALAR)