«RE» имеет смысл, если мы интерпретируем «U» как подобие объединению множеств. Однако более обычным является использование «|» символ для обозначения альтернатив.
Во-первых, вы имеете дело только с целочисленными константами, а не с плавающей точкой, символьными или строковыми константами, не говоря уже о более сложных константах.
Во-вторых, вы пропустили '0X
' в качестве допустимого шестнадцатеричного префикса.
В-третьих, вы опустили различные суффиксы: U
, L
, LL
, ULL
(а также их синонимы и перестановки в нижнем и смешанном регистре).
Кроме того, стандарт C (§6.4.4.1) проводит различие между цифрами и ненулевыми цифрами в десятичной константе:
decimal-constant:
nonzero-digit
decimal-constant digit
Любая целочисленная константа, начинающаяся с нуля, является восьмеричной константой, а не десятичной. В частности, запись 0
- это запись восьмеричной константы.