Вам необходимо использовать контекстно-независимую грамматику (то, что вы пока представляете, это просто обычная грамматика):
U-> aUa | bUb | a | b | _
Будет соответствовать таким вещам, как "ababa" и«aabaa», но не «aabba».
Я оставляю вам право изменять это в соответствии с вашими потребностями - но имейте в виду, что указанный вами язык может u
быть пустой строкой,следовательно, он генерирует все строки в {a,b}*
.