プログラミング得意な人来て
■ このスレッドは過去ログ倉庫に格納されています
文脈自由文法とか文脈依存文法みたいな形式文法で小泉構文ってどうやって作れば良い?
つまり例えば文字の集合{a,b,は}が与えられてる場合
aはa,abはab,abbはabb,baはba…
みたいなのが小泉構文とするとして
任意の小泉構文のみを生成するにはどういう形式文法にすればいい? 例えば小泉構文の反転バージョンなら形式文法は
・S→X
・X→aXa|bXb|は
でいいよね
例えば
aabはbaa
だと
S→aXa→aaXaa→aabXbaa→aabはbaa
って流れで作れるし作れたものは反転小泉構文になる >>2
聞いたけどどうしようもない回答しかしないGPTはググって答えが見つからないものは答えられない プログラムなら変数使いまわせばよくね
正規表現なら$1で 試しに形式文法使ってみてるだけだから変数は使わない 置換ってたぶん拡張正規表現よな?拡張正規表現って正規表現と同じ表現力持ってる?正規言語と正規表現が表現できる対象が同じらしいけど正規言語の定義から置換を表現できるんかな? $1は拡張でもなくふつうの一般的な正規表現の機能だけど正規表現が表現力低すぎるから追加されてるだけで学術的な意味での正規表現から逸脱するらしい 正確な規則はない単なる戦略イメージだけど
S
PXQ
PaaXQ
PaabbXQ
PaabbccXQ
PaabbcXQc
PaabcXbQc
PaacXbbQc
...
PcXaabbQc
cXPaabbQc
cPRXaabbQc
cPaRXabbQc
cPaaRXbbQc
...
cPaabbRXQc
cPaabbXQc
cPaabXQbc
って感じで文頭と文末に目印のPQをつけて変数Xで文字を運んじゃ帰っちゃすればよくね?
帰るときは帰ってることがわかるようにRをXの隣につける PaabbccQ
cPaabbcQc
bcPaaQbc
abcPQabc
abcはabc
みたいな Xはaabbccみたいな二文字綴りの文の生成する非終端文字で、二文字を生成するかYに変化することができる
Yは文字を移動させる非終端文字で
・文字Y文字
の状態だと左にある文字を左に運ぶ
・空Y文字
の状態だとRYに変化
・RY文字(Q以外)
の状態だと戻る
・RYQ
の状態だとRが消える
・PYQ
の状態だとPYQが「は」に変化する
って感じで大丈夫か? ■ このスレッドは過去ログ倉庫に格納されています