Язык всех наборов правил, не зависящих от контекста, обычно будет регулярным. В зависимости от ваших точных определений и вашего представления правил, вам в основном нужно только проверить, все ли левые части имеют длину один и правильный ли формат набора.
((S,ab),(S,aSb))
может быть строкой этого языка для набора с правилами S->ab
и S->aSb
. Скобки никогда не вкладываются глубже 2, поэтому вам не нужен стек. Если вы действительно имеете в виду «набор, состоящий из: правил производства грамматик», у вас есть строки с единичными правилами, такими как (S,ab)
, что еще проще.
Что касается набора строк, которые не имеют формы t # t, то его дополнение хорошо известно как не зависящее от контекста. Поскольку КЛЛ не является закрытым по дополнению, это ничего не значит, однако. Вы можете найти ответ здесь .