[flang] Prevent misrecognition of a digit string that is the kind parameter of a...
authorpeter klausler <pklausler@nvidia.com>
Sat, 7 Apr 2018 00:04:18 +0000 (17:04 -0700)
committerpeter klausler <pklausler@nvidia.com>
Mon, 9 Apr 2018 20:49:25 +0000 (13:49 -0700)
Original-commit: flang-compiler/f18@bd7ed0b162b7cc4e89e0d08e22e8676d59261931
Reviewed-on: https://github.com/flang-compiler/f18/pull/48
Tree-same-pre-rewrite: false

flang/lib/parser/grammar.h

index dcab4fb..07803f4 100644 (file)
@@ -713,8 +713,10 @@ TYPE_PARSER(space >> sourced(construct<SignedIntLiteralConstant>{}(
                          signedDigitString, maybe(underscore >> kindParam))))
 
 // R708 int-literal-constant -> digit-string [_ kind-param]
+// The negated look-ahead for a trailing underscore prevents misrecognition
+// when the digit string is a numeric kind parameter of a character literal.
 TYPE_PARSER(construct<IntLiteralConstant>{}(
-    space >> digitString, maybe(underscore >> kindParam)))
+    space >> digitString, maybe(underscore >> kindParam) / !underscore))
 
 // R709 kind-param -> digit-string | scalar-int-constant-name
 TYPE_PARSER(construct<KindParam>{}(digitString) ||