したがって、次の形式で与えられる 1 次元配列内に文法があります。
struct array
{
char left;
char right[3];
char number;
}
例:
array.left = 'A';
array.right = "BC";
array.number = insert_some_conventional_null_character_here
これは次のように翻訳されます。
A->BC
------
その他の例:
A->3
C->BDE
X->9
また、array.number は [0, 9] で囲まれています。
array.right と array.left は区間 [A, Z] のリテラルです。
startStringという入力文字列からstopStringという別の入力文字列に取得するために適用されるすべてのルール (文法コンポーネント) を含むリンク リストを返す必要があります。
ご覧のとおり、この文法はチョムスキー正規形で与えられていません。文法が変更され、プログラムから要求されたリンク リストを返すことができないため、CNF に変換できないと思います。
どのように進めればよいですか?Post-Scriptum と同じように、文法内には最大で 1000 のそのようなルールがあるため、再帰パーサーは適していない可能性があると思います。以前に尋ねたことがありますが、CYK アルゴリズムについて読むように言われました。これは私がプロジェクトとして与えられた問題です。このレベルのプログラミングを始めたばかりであることを覚えておいてください。とはいえ、基本的な知識はすべて持っています。