Как выглядит правило производства EBNF (и вы можете написать это в EBNF?)
Разница в множестве A\B
между регулярными выражениями эквивалентна пересечению с дополнением: A&~B
: набор строк, совпадающих с A, лишен любых строк, сопоставленных с B. Ни flex, ни alex не поддерживают такую семантику в своих регулярных языки выражений.
Выражение этой формы все еще обозначает регулярный язык и поэтому имеет эквивалентный автомат, для которого существует регулярное выражение, основанное только на операторах чередования и Клини. Это эквивалентное выражение нелегко найти, и оно зависит от конкретных внутренних элементов A и B. То есть мы не можем просто вставить A и B в некоторую общую формулу регулярного выражения, чтобы результат обозначал разность множеств. Оригинальные A и B не будут отображаться в регулярном выражении разности наборов.