[flang-commits] [flang] [flang] Enumeration Type: (PR 1/5) Foundation types + Parser (PR #192651)
Krzysztof Parzyszek via flang-commits
flang-commits at lists.llvm.org
Tue May 26 07:46:44 PDT 2026
================
@@ -669,6 +669,35 @@ TYPE_PARSER(
TYPE_PARSER(recovery("END ENUM"_tok, constructEndStmtErrorRecovery) >>
construct<EndEnumStmt>())
+// F2023 R766 enumeration-type-def ->
+// enumeration-type-stmt
+// enumeration-enumerator-stmt [ enumeration-enumerator-stmt ]...
+// end-enumeration-type-stmt
+TYPE_CONTEXT_PARSER("enumeration type definition"_en_US,
+ construct<EnumerationTypeDef>(statement(Parser<EnumerationTypeStmt>{}),
+ some(unambiguousStatement(Parser<EnumerationEnumeratorStmt>{})),
+ statement(Parser<EndEnumerationTypeStmt>{})))
+
+// F2023 R767 enumeration-type-stmt ->
+// ENUMERATION TYPE [ [ , access-spec ] :: ] enumeration-type-name
+TYPE_CONTEXT_PARSER("ENUMERATION TYPE statement"_en_US,
+ construct<EnumerationTypeStmt>(
+ "ENUMERATION TYPE" >> maybe("," >> accessSpec) / "::", name) ||
----------------
kparzysz wrote:
The `::` is also optional, but must be present if _access-spec_ is present.
https://github.com/llvm/llvm-project/pull/192651
More information about the flang-commits
mailing list