Your phrase, "With the advent of recognizer technology," is quite humorous!
I have no use for recognizers --- they are a gross violation of Forth tradition in which there is no syntax.
Recognizers are just Alex McDonald's goofy idea ---
a complete lack of common-sense on the part of the Forth-200x committee would be required for them to be accepted into Forth-200x.
I'm designing a standard that will certainly not have recognizers.
Some minor elements of syntax will be introduced, including a syntax for numbers, but this will be standardized and documented.
The problem with recognizers is that there could be a wide variety of recognizers in use, all of which clash with each other --- ambiguity!
In my novice-package (unreleased) I have STR>NUM that converts strings into numbers:
\ STR>INT converts strings to integers, either singles and doubles.
\ An integer is a string of digits. There may be commas throughout.
\ An integer may have a $ # or % at the front, signifying that it is hexadecimal, decimal or binary. If none of these are present, then BASE is used.
\ An integer may have a + or - at the front (after the base signifier if there is one), signifying non-negative or negative, but otherwise it is non-negative.
\ A comma at the beginning (after the sign signifier if there is one) signifies that the integer is a double, but otherwise it is a single.
\ These are valid integers:
\ $-,123,456 double: -123456 hexadecimal
\ -,123,456 double: -123456
\ ,123,456 double: 123456
\ 123,456 single: 123456
\ STR>FLT converts strings to floats.
\ A float is a string of digits. There may be commas throughout. All floats are in decimal.
\ A comma in the front is legal but should not be used as STR>NUM will interpret this as an invalid double.
\ There must be either a decimal-point or an exponent-signifier (either 'E' or 'e') or both.
\ If there is a decimal-point, there must be digits either before or after or both.
\ The first digits are the integer part. The digits after the decimal-point, if there is a decimal-point, are the fraction part.
\ The digits after the exponent-signifier, if there is an exponent-signifier, are the exponent part (scientific notation).
\ If there is an exponent-signifier, and there are no digits after it, then the exponent is assumed to be 0.
\ An exponent may have a + or - at the front, signifying non-negative or negative, but otherwise it is non-negative.
\ STR>NUM converts strings to either integers or floats.
\ These are valid floats:
\ -123,456.78 float: -123456.78
\ -123,456.78E4 float: -1234567800
\ -123,456.78E-4 float: -12.345678
\ 123E4 float: 1230000
\ 123E float: 123
0 constant #invalid
1 constant #single
2 constant #double
3 constant #float
\ these are the kinds of numbers
: str>num ( adr cnt -- #invalid | n #single | d #double | #float ) \ float: -- f (if we return a #float on the data-stack)
...