// (only literal-constant -> int-literal-constant applies)
struct DataStmtRepeat {
UNION_CLASS_BOILERPLATE(DataStmtRepeat);
- std::variant<IntLiteralConstant, Scalar<Integer<NamedConstant>>,
- Scalar<Integer<ConstantSubobject>>>
- u;
+ std::variant<IntLiteralConstant, Scalar<Integer<ConstantSubobject>>> u;
};
// R843 data-stmt-value -> [data-stmt-repeat *] data-stmt-constant
// R844 data-stmt-repeat -> scalar-int-constant | scalar-int-constant-subobject
// R607 int-constant -> constant
-// Factored into:
-// constant -> literal-constant -> int-literal-constant and
-// constant -> named-constant
+// Factored into: constant -> literal-constant -> int-literal-constant
+// The named-constant alternative of constant is subsumed by constant-subobject
TYPE_PARSER(construct<DataStmtRepeat>(intLiteralConstant) ||
- construct<DataStmtRepeat>(scalar(integer(constantSubobject))) ||
- construct<DataStmtRepeat>(scalar(integer(namedConstant))))
+ construct<DataStmtRepeat>(scalar(integer(constantSubobject))))
// R845 data-stmt-constant ->
// scalar-constant | scalar-constant-subobject |
// references into constant subobjects.
TYPE_PARSER(first(construct<DataStmtConstant>(scalar(Parser<ConstantValue>{})),
construct<DataStmtConstant>(nullInit),
+ construct<DataStmtConstant>(scalar(constantSubobject)) / !"("_tok,
construct<DataStmtConstant>(Parser<StructureConstructor>{}),
- construct<DataStmtConstant>(scalar(constantSubobject)),
construct<DataStmtConstant>(signedRealLiteralConstant),
construct<DataStmtConstant>(signedIntLiteralConstant),
extension<LanguageFeature::SignedComplexLiteral>(