diff --git a/flang/lib/parser/openmp-grammar.h b/flang/lib/parser/openmp-grammar.h
index 2921aee..cf2d785 100644
--- a/flang/lib/parser/openmp-grammar.h
+++ b/flang/lib/parser/openmp-grammar.h
@@ -12,14 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#ifndef OPENMP_PARSER_GRAMMAR_H_
-#define OPENMP_PARSER_GRAMMAR_H_
+#ifndef FORTRAN_PARSER_OPENMP_GRAMMAR_H_
+#define FORTRAN_PARSER_OPENMP_GRAMMAR_H_
 
-// Top-level grammar specification for Fortran.  These parsers drive
-// the tokenization parsers in cooked-tokens.h to consume characters,
-// recognize the productions of Fortran, and to construct a parse tree.
-// See ParserCombinators.md for documentation on the parser combinator
-// library used here to implement an LL recursive descent recognizer.
+// Top-level grammar specification for OpenMP. 
+// See OpenMP-4.5-grammar.txt for documentation.
 
 #include "basic-parsers.h"
 #include "characters.h"
@@ -63,13 +60,13 @@
 // map-type-modifier -> ALWAYS
 // map-type -> TO | FROM | TOFROM | ALLOC | RELEASE | DELETE
 TYPE_PARSER(construct<OmpMapClause>(
-    maybe(maybe("ALWAYS"_tok >> maybe(","_ch)) >>
-        ("TO" >> pure(OmpMapClause::Type::To) / ":"_ch ||
-            "FROM" >> pure(OmpMapClause::Type::From) / ":"_ch ||
-            "TOFROM" >> pure(OmpMapClause::Type::Tofrom) / ":"_ch ||
-            "ALLOC" >> pure(OmpMapClause::Type::Alloc) / ":"_ch ||
-            "RELEASE" >> pure(OmpMapClause::Type::Release) / ":"_ch ||
-            "DELETE" >> pure(OmpMapClause::Type::Delete) / ":"_ch)),
+    maybe(maybe("ALWAYS" >> maybe(","_tok)) >>
+        ("TO" >> pure(OmpMapClause::Type::To) / ":"_tok ||
+            "FROM" >> pure(OmpMapClause::Type::From) / ":"_tok ||
+            "TOFROM" >> pure(OmpMapClause::Type::Tofrom) / ":"_tok ||
+            "ALLOC" >> pure(OmpMapClause::Type::Alloc) / ":"_tok ||
+            "RELEASE" >> pure(OmpMapClause::Type::Release) / ":"_tok ||
+            "DELETE" >> pure(OmpMapClause::Type::Delete) / ":"_tok)),
     nonemptyList(name)))
 
 // SCHEDULE ([modifier [, modifier]:]kind[, chunk_size])
@@ -82,7 +79,7 @@
     "SIMD" >> pure(OmpScheduleModifierType::ModType::Simd)))
 
 TYPE_PARSER(construct<OmpScheduleModifier>(Parser<OmpScheduleModifierType>{},
-    maybe(","_ch >> Parser<OmpScheduleModifierType>{})))
+    maybe(","_tok >> Parser<OmpScheduleModifierType>{})))
 
 TYPE_PARSER(construct<OmpScheduleClause>(maybe(Parser<OmpScheduleModifier>{}),
     "STATIC" >> pure(OmpScheduleClause::ScheduleType::Static) ||
@@ -90,11 +87,11 @@
         "GUIDED" >> pure(OmpScheduleClause::ScheduleType::Guided) ||
         "AUTO" >> pure(OmpScheduleClause::ScheduleType::Auto) ||
         "RUNTIME" >> pure(OmpScheduleClause::ScheduleType::Runtime),
-    maybe(","_ch) >> scalarIntExpr))
+    maybe(","_tok) >> scalarIntExpr))
 
 // IF(directive-name-modifier: scalar-logical-expr)
 TYPE_PARSER(construct<OmpIfClause>(
-    ("PARALLEL"_tok >> pure(OmpIfClause::DirectiveNameModifier::Parallel) ||
+    maybe("PARALLEL"_tok >> pure(OmpIfClause::DirectiveNameModifier::Parallel) ||
         "TARGET ENTER DATA"_tok >>
             pure(OmpIfClause::DirectiveNameModifier::TargetEnterData) ||
         "TARGET EXIT DATA"_tok >>
@@ -106,7 +103,7 @@
         "TARGET"_tok >> pure(OmpIfClause::DirectiveNameModifier::Target) ||
         "TASKLOOP"_tok >> pure(OmpIfClause::DirectiveNameModifier::Taskloop) ||
         "TASK"_tok >> pure(OmpIfClause::DirectiveNameModifier::Task)) /
-        maybe(":"_ch),
+        maybe(":"_tok),
     scalarLogicalExpr))
 
 // REDUCTION(reduction-identifier: list)
@@ -130,7 +127,7 @@
     construct<OmpReductionOperator>(reductionProcedureOperator))
 
 TYPE_PARSER(construct<OmpReductionClause>(
-    Parser<OmpReductionOperator>{} / ":"_ch, nonemptyList(designator)))
+    Parser<OmpReductionOperator>{} / ":"_tok, nonemptyList(designator)))
 
 // DEPEND(SOURCE | SINK : vec | (IN | OUT | INOUT) : list
 TYPE_PARSER(construct<OmpDependSinkVecLength>(
@@ -146,11 +143,11 @@
 
 TYPE_CONTEXT_PARSER("Omp Depend clause"_en_US,
     construct<OmpDependClause>(construct<OmpDependClause::Sink>(
-        "SINK"_tok >> ":"_ch >> nonemptyList(Parser<OmpDependSinkVec>{}))) ||
+        "SINK"_tok >> ":"_tok >> nonemptyList(Parser<OmpDependSinkVec>{}))) ||
         construct<OmpDependClause>(
             construct<OmpDependClause::Source>("SOURCE"_tok)) ||
         construct<OmpDependClause>(construct<OmpDependClause::InOut>(
-            Parser<OmpDependenceType>{}, ":"_ch >> nonemptyList(designator))))
+            Parser<OmpDependenceType>{}, ":"_tok >> nonemptyList(designator))))
 
 // LINEAR(list: linear-step)
 TYPE_PARSER(construct<OmpLinearModifier>(
@@ -162,20 +159,20 @@
     construct<OmpLinearClause>(
         construct<OmpLinearClause>(construct<OmpLinearClause::WithModifier>(
             Parser<OmpLinearModifier>{}, parenthesized(nonemptyList(name)),
-            maybe(":"_ch >> scalarIntConstantExpr))) ||
+            maybe(":"_tok >> scalarIntConstantExpr))) ||
         construct<OmpLinearClause>(construct<OmpLinearClause::WithoutModifier>(
-            nonemptyList(name), maybe(":"_ch >> scalarIntConstantExpr)))))
+            nonemptyList(name), maybe(":"_tok >> scalarIntConstantExpr)))))
 
 // ALIGNED(list: alignment)
 TYPE_PARSER(construct<OmpAlignedClause>(
-    nonemptyList(name), maybe(":"_ch) >> scalarIntConstantExpr))
+    nonemptyList(name), maybe(":"_tok) >> scalarIntConstantExpr))
 
 TYPE_PARSER(construct<OmpNameList>(pure(OmpNameList::Kind::Object), name) ||
     construct<OmpNameList>("/" >> pure(OmpNameList::Kind::Common), name / "/"))
 
 TYPE_PARSER(
     construct<OmpClause>(construct<OmpClause::Defaultmap>("DEFAULTMAP"_tok >>
-        parenthesized("TOFROM"_tok >> ":"_ch >> "SCALAR"_tok))) ||
+        parenthesized("TOFROM"_tok >> ":"_tok >> "SCALAR"_tok))) ||
     construct<OmpClause>(construct<OmpClause::Inbranch>("INBRANCH"_tok)) ||
     construct<OmpClause>(construct<OmpClause::Mergeable>("MERGEABLE"_tok)) ||
     construct<OmpClause>(construct<OmpClause::Nogroup>("NOGROUP"_tok)) ||
@@ -193,7 +190,7 @@
         "DEVICE"_tok >> parenthesized(scalarIntExpr))) ||
     construct<OmpClause>(
         construct<OmpClause::DistSchedule>("DIST_SCHEDULE"_tok >>
-            parenthesized("STATIC"_tok >> ","_ch >> scalarIntExpr))) ||
+            parenthesized("STATIC"_tok >> ","_tok >> scalarIntExpr))) ||
     construct<OmpClause>(construct<OmpClause::Final>(
         "FINAL"_tok >> parenthesized(scalarIntExpr))) ||
     construct<OmpClause>(
@@ -353,4 +350,4 @@
                                  indirect(Parser<OpenMPLoopConstruct>{}))))
 
 }  // namespace Fortran::parser
-#endif  // OPENMP_PARSER_GRAMMAR_H_
+#endif  // FORTRAN_PARSER_OPENMP_GRAMMAR_H_
diff --git a/flang/lib/parser/parse-tree.h b/flang/lib/parser/parse-tree.h
index 5ee51567..3f0778e 100644
--- a/flang/lib/parser/parse-tree.h
+++ b/flang/lib/parser/parse-tree.h
@@ -3286,8 +3286,8 @@
   std::variant<WithModifier, WithoutModifier> u;
 };
 
-// reduction-identifier -> Add, Subtract, Multiply, .and., .or., .eqv., .neqg.,
-// min, max, iand, ior, ieor
+// reduction-identifier -> "+", "-", "*", .AND., .OR., .EQV., .NEQV.,
+// MIN, MAX, IAND, IOR, IEOR
 struct OmpReductionOperator {
   UNION_CLASS_BOILERPLATE(OmpReductionOperator);
   ENUM_CLASS(ProcedureOperator, MIN, MAX, IAND, IOR, IEOR)
diff --git a/flang/lib/parser/unparse.cc b/flang/lib/parser/unparse.cc
index 39c2f73..9481e7d 100644
--- a/flang/lib/parser/unparse.cc
+++ b/flang/lib/parser/unparse.cc
@@ -1668,7 +1668,7 @@
     Word(" SCHEDULE(");
     Walk(std::get<std::optional<OmpScheduleModifier>>(x.t));
     Walk(std::get<OmpScheduleClause::ScheduleType>(x.t));
-    Walk(std::get<std::optional<ScalarIntExpr>>(x.t));
+    Walk(",", std::get<std::optional<ScalarIntExpr>>(x.t));
     Put(")");
   }
   void Unparse(const OmpAlignedClause &x) {
@@ -1693,6 +1693,18 @@
     Walk(":", x.step);
     Put(")");
   }
+  void Unparse(const OmpReductionOperator::BinaryOperator &x) {
+    switch (x) {
+    case OmpReductionOperator::BinaryOperator::Add: Put("+"); break;
+    case OmpReductionOperator::BinaryOperator::Subtract: Put("-"); break;
+    case OmpReductionOperator::BinaryOperator::Multiply: Put("*"); break;
+    case OmpReductionOperator::BinaryOperator::AND: Word(".AND."); break;
+    case OmpReductionOperator::BinaryOperator::OR: Word(".OR."); break;
+    case OmpReductionOperator::BinaryOperator::EQV: Word(".EQV."); break;
+    case OmpReductionOperator::BinaryOperator::NEQV: Word(".NEQV."); break;
+    default: break;
+    }
+  }
   void Unparse(const OmpReductionClause &x) {
     Word(" REDUCTION(");
     Walk(std::get<OmpReductionOperator>(x.t));
@@ -2081,8 +2093,6 @@
   WALK_NESTED_ENUM(OmpLinearModifier, Type)  // OMP linear-modifier
   WALK_NESTED_ENUM(
       OmpReductionOperator, ProcedureOperator)  // OMP reduction-identifier
-  WALK_NESTED_ENUM(
-      OmpReductionOperator, BinaryOperator)  // OMP reduction-identifier
   WALK_NESTED_ENUM(OmpDependenceType, Type)  // OMP dependence-type
   WALK_NESTED_ENUM(OmpMapClause, Type)  // OMP map-type
   WALK_NESTED_ENUM(OmpScheduleClause, ScheduleType)  // OMP schedule-type
