[flang] Allow dollar and backslash formats
authorpeter klausler <pklausler@nvidia.com>
Thu, 21 Mar 2019 23:47:51 +0000 (16:47 -0700)
committerpeter klausler <pklausler@nvidia.com>
Mon, 1 Apr 2019 17:14:15 +0000 (10:14 -0700)
Original-commit: flang-compiler/f18@4d8d6e599eab130a9026c53f404a7036d4410c47
Reviewed-on: https://github.com/flang-compiler/f18/pull/352
Tree-same-pre-rewrite: false

flang/documentation/f2018-grammar.txt
flang/lib/parser/features.h
flang/lib/parser/format-specification.h
flang/lib/parser/grammar.h

index 35bb1b0..727a744 100644 (file)
@@ -669,7 +669,8 @@ R1311 e -> digit-string
 R1312 v -> [sign] digit-string
 R1313 control-edit-desc ->
         position-edit-desc | [r] / | : | sign-edit-desc | k P |
-        blank-interp-edit-desc | round-edit-desc | decimal-edit-desc
+        blank-interp-edit-desc | round-edit-desc | decimal-edit-desc |
+        @ $ | \
 R1314 k -> [sign] digit-string
 R1315 position-edit-desc -> T n | TL n | TR n | n X
 R1316 n -> digit-string
index 953f2cf..6ba3498 100644 (file)
@@ -30,7 +30,7 @@ ENUM_CLASS(LanguageFeature, BackslashEscapes, OldDebugLines,
     Convert, Dispose, IOListLeadingComma, AbbreviatedEditDescriptor,
     ProgramParentheses, PercentRefAndVal, OmitFunctionDummies, CrayPointer,
     Hollerith, ArithmeticIF, Assign, AssignedGOTO, Pause, OpenMP,
-    CruftAfterAmpersand, ClassicCComments)
+    CruftAfterAmpersand, ClassicCComments, AdditionalFormats)
 
 using LanguageFeatures =
     common::EnumSet<LanguageFeature, LanguageFeature_enumSize>;
index dbb4a74..98c3255 100644 (file)
@@ -70,7 +70,8 @@ struct DerivedTypeDataEditDesc {
 
 // R1313 control-edit-desc ->
 //         position-edit-desc | [r] / | : | sign-edit-desc | k P |
-//         blank-interp-edit-desc | round-edit-desc | decimal-edit-desc
+//         blank-interp-edit-desc | round-edit-desc | decimal-edit-desc |
+//         @ \ | $
 // R1315 position-edit-desc -> T n | TL n | TR n | n X
 // R1316 n -> digit-string
 // R1317 sign-edit-desc -> SS | SP | S
@@ -98,7 +99,9 @@ struct ControlEditDesc {
     RC,
     RP,
     DC,
-    DP
+    DP,
+    Dollar,
+    Backslash,
   };
   ControlEditDesc() = delete;
   ControlEditDesc(ControlEditDesc &&) = default;
index 6fd0b2f..d2d1240 100644 (file)
@@ -2976,7 +2976,8 @@ constexpr PositiveDigitStringIgnoreSpaces count;
 
 // R1313 control-edit-desc ->
 //         position-edit-desc | [r] / | : | sign-edit-desc | k P |
-//         blank-interp-edit-desc | round-edit-desc | decimal-edit-desc
+//         blank-interp-edit-desc | round-edit-desc | decimal-edit-desc |
+//         @ \ | $
 // R1315 position-edit-desc -> T n | TL n | TR n | n X
 // R1316 n -> digit-string
 // R1317 sign-edit-desc -> SS | SP | S
@@ -3023,7 +3024,12 @@ TYPE_PARSER(construct<format::ControlEditDesc>(
     "D" >> ("C" >> construct<format::ControlEditDesc>(
                        pure(format::ControlEditDesc::Kind::DC)) ||
                "P" >> construct<format::ControlEditDesc>(
-                          pure(format::ControlEditDesc::Kind::DP))))
+                          pure(format::ControlEditDesc::Kind::DP))) ||
+    extension<LanguageFeature::AdditionalFormats>(
+        "$" >> construct<format::ControlEditDesc>(
+                   pure(format::ControlEditDesc::Kind::Dollar)) ||
+        "\\" >> construct<format::ControlEditDesc>(
+                    pure(format::ControlEditDesc::Kind::Backslash))))
 
 // R1401 main-program ->
 //         [program-stmt] [specification-part] [execution-part]