Why is it not possible to have the set of reals in terminal symbols? Because you'd have to list ALL of them, and there an infinite number of reals. However, we can (and do) build the reals themselves out of finite symbols, so we merely regress to having the reals constructed. Before we consider whether the reals can be expressed as a formal language, remember that reals are a composite of:
- Integers
- Rationals
- Irrationals
and therefore the formal language must accommodate all of these types since each type must be represented for all to be represented. Using regular expressions:
Let D := {0,1,2,3,4,5,6,7,8,9}, d := {1,2,3,4,5,6,7,8,9}
ℤ := 0 | (+|-)dD*
ℚ := 0/(+|-)dD* | (+|-)dD*/(+|-)dD*
𝕁 := (+|-)DD*.D*
Therefore our alphabet is
Σ := {+,-,/,.,0,1,2,3,4,5,6,7,8,9}
This is almost the language, however, note that we cannot have an empty string represent a real number L which in formal language is technically a sentence, so:
Σ+ = Σ* - {λ} (where λ is the empty string)
Which means r ∈ ℝ in set-theoretic notation is the formal languages equivalent of L ∈ Σ+. So Σ+ is the collection of all reals, and therefore by construction exists. From here, we can use Σ+ as a generator of primitives for other grammars where the primitive is merely ℝ. Anywhere the terminal symbol ℝ occurs, we can generate or check if the string of symbols fits the definition of ℝ.
So while we can't technically build a grammar out of actual infinity of reals, we can construct it in a roundabout manner as a potential infinity. This is where mathematics and computer science differ since the Turing machine is only infinite in mathematical theory and not in physical practice.
EDIT
Read the comments below until I update the posting with the results of the back and forth.