Думая о моей другой проблеме , я решил, что не могу даже создать регулярное выражение, которое будет соответствовать римским цифрам (не говоря уже о неконтекстной грамматике, которая будет генерировать их)
Проблема в сопоставлении только действительных римских цифр.
Например, 990 это не "XM", это "CMXC"
Моя проблема в создании регулярного выражения для этого заключается в том, что для того, чтобы разрешить или запретить определенные символы, мне нужно оглянуться назад.
Возьмем, к примеру, тысячи и сотни.
Я могу допустить M {0,2} C? M (чтобы учесть 900, 1000, 1900, 2000, 2900 и 3000). Однако, если совпадение на CM, я не могу допустить, чтобы следующие символы были C или D (потому что я уже на 900).
Как я могу выразить это в регулярном выражении?
Если это просто невозможно выразить в регулярном выражении, можно ли это выразить в контекстно-свободной грамматике?