Здравствуйте, VjcheslavV, Вы писали:
Pzz>>Pzz>>X? -> X | e
Pzz>>X+ -> X X*
Pzz>>X{n} -> X X X ... X
Pzz>>X{m,n} -> X X X ... X (X | e) (X | e) ... (X | e)
Pzz>>
VV>а можно для "X{n}?" и для "X{n}+" ?
Любое выражение вида
X{n} преобразуется в
XXX...XX. То бишь такой синтаксис в контексте данных алгоритмов специально обрабатывать не нужно. Перед обработкой выражения проводится его упрощение, оно преобразовывается в максимально простую форму перед созданием НКА и ДКА.
Выражение
Y+ преобразовывается в
YY*. Соответственно
X{N}+ преобразовывается в
X{N}X{N}*, а далее (например если n = 5) в
XXXXX(XXXXX)*
VV>e вроде просто убирается — какой с неё толк?
e это пустая строка, просто обозначение.