DATA 2 0.0 1.0 ^ ここの数値で ^ ^ 後ろに何個取れるか変わる
見たいなのはBNFでは書けないわけかい(´・ω・`)?
@termoshtt
数値リテラルを解釈するのはパースしてからの仕事みたいな気がしますね…(門外漢)
@yukikurage
やっぱり内容を解釈する前に文法は決まらないといけないんですよね多分...(´・ω・`)
一応文脈自由文法で表せないことの証明とか試してみます
長いです もっと見る
単純化して 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 助かります(`・ω・´)ゞ
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
長いです
@termoshtt
単純化して 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 は文脈自由ではない
ですかね