数値リテラルを解釈するのはパースしてからの仕事みたいな気がしますね…(門外漢)
一応文脈自由文法で表せないことの証明とか試してみます
長いです
単純化して L を
3|123, 2|15 など n|(n文字の列)
の集合とする
L を文脈自由とすると
反復補題から定まる反復長 p がある
ここで
w = 100...0 (p個) | 00...0 (10^p 個)
とすると |w| >= p なので、ある分割
w = uvxyz
があって
※1 |vxy| <= p
※2 任意の i に対し uv^ixy^iz in L
が成り立つ
vxy が | を跨がないと、※2 を考えたとき | の左辺か右辺のどちらかが一方的に大きくなり ※2 を満たさないので、vxy は | を跨ぐ
| in x でないと、※2を考えたときに | が増えるので | in x
したがって
v = 00...0 (m 個)
y = 00...0 (n 個)
ここで
uv^2xy^2z = 100...0 (p + m個) | 00...0 (10^p + n 個)
※2 から uv^2xy^2z in L なので
10^(p + m) = 10^p + n
が満たされる、明らかに n は 10^p の倍数であるが、これは ※1 |vxy| <= p を満たさない
ゆえに L は文脈自由ではない
ですかね
@termoshtt
最近学校で反復補題やったの使いたかっただけです
@yukikurage 助かります(`・ω・´)ゞ
@yukikurage
やっぱり内容を解釈する前に文法は決まらないといけないんですよね多分...(´・ω・`)