@@ -268,6 +268,9 @@ $(GNAME IdentifierStart):
268268    $(I Letter)
269269    $(I UniversalAlpha)
270270
271+ $(GNAME IdentifierStartError):
272+     IdentifierStart
273+ 
271274$(GNAME IdentifierChar):
272275    $(GLINK IdentifierStart)
273276    $(B 0)
@@ -282,6 +285,11 @@ Identifiers can be arbitrarily long, and are case sensitive.)
282285
283286$(IMPLEMENTATION_DEFINED Identifiers starting with $(D __) (two underscores) are reserved.)
284287
288+ $(NOTE *IdentifierStartError* exists to enforce that a $(GLINK StringPostfix)
289+ or numeric literal with a suffix is not immediately followed by an identifier
290+ without whitespace.)
291+ 
292+ 
285293$(H2 $(LNAME2 string_literals, String Literals))
286294
287295$(GRAMMAR
@@ -342,9 +350,9 @@ $(GNAME EscapeSequence):
342350    $(B \\) $(GLINK2 entity, NamedCharacterEntity)
343351
344352$(GNAME StringPostfix):
345-     $(B c)
346-     $(B w)
347-     $(B d)
353+     $(B c) $(GLINK IdentifierStartError)$(OPT) 
354+     $(B w) $(GLINK IdentifierStartError)$(OPT) 
355+     $(B d) $(GLINK IdentifierStartError)$(OPT) 
348356
349357$(GNAME DelimitedString):
350358    $(B q") $(GLINK Delimiter) $(GLINK WysiwygCharacters)$(OPT) $(GLINK MatchingDelimiter) $(B ") $(GLINK StringPostfix)$(OPT)
@@ -625,7 +633,7 @@ $(H2 $(LNAME2 integerliteral, Integer Literals))
625633$(GRAMMAR_LEX
626634$(GNAME IntegerLiteral):
627635    $(GLINK Integer)
628-     $(GLINK Integer) $(GLINK IntegerSuffix)
636+     $(GLINK Integer) $(GLINK IntegerSuffix) $(GLINK IdentifierStartError)$(OPT) 
629637
630638$(GNAME Integer):
631639    $(GLINK DecimalInteger)
@@ -841,9 +849,11 @@ $(H2 $(LNAME2 floatliteral, Floating Point Literals))
841849
842850$(GRAMMAR_LEX
843851$(GNAME FloatLiteral):
844-     $(GLINK Float) $(GLINK Suffix)$(OPT)
845-     $(GLINK Integer) $(GLINK FloatSuffix) $(GLINK ImaginarySuffix)$(OPT)
852+     $(GLINK Float)
853+     $(GLINK Float) $(GLINK Suffix) $(GLINK IdentifierStartError)$(OPT)
854+     $(GLINK Integer) $(GLINK FloatSuffix) $(GLINK IdentifierStartError)$(OPT)
846855    $(GLINK Integer) $(GLINK RealSuffix)$(OPT) $(GLINK ImaginarySuffix)
856+     $(GLINK Integer) $(GLINK FloatSuffix) $(GLINK ImaginarySuffix)
847857
848858$(GNAME Float):
849859    $(GLINK DecimalFloat)
0 commit comments