akasaka_34の日記

ネトウヨと呼ばれた男の日記。しかし頻度から言えば週報ぐらい。

文脈自由言語ではないということ

「オフサイドルールの言語は文脈自由言語じゃないよなあ」
と思いつつあんまり確信がなくて
かといってまじめに調べるほど興味もなかったのだけど
ふと気がついた。
「コピペできないってことは、文脈が自由でないってことじゃん」

for i in 0...10
print i
end
for j in 0...10
print j
end
このrubyプログラムは動く。
最初のループの中に二番目のループを入れると
for i in 0...10
for j in 0...10
print j
end
print i
end
恰好は悪いけどこれも動く。

for i in range(0,10):
print i

for j in range(0,10):
print j

このpythonプログラムは動く。
最初のループの中に二番目のループを入れると
for i in range(0,10):
for j in range(0,10):
print j
print i
これは動かない。
文法的な正しさが前後関係に依存しているから。

補足:
重箱の隅の話だけど、コンテキストフリーの「フリー」はシュガーフリーと一緒で
「自由」と訳すのは変なんじゃないかなーと思う。