Я пытаюсь реализовать fsm, и все идет нормально. Я могу вводить строки и смотреть, действительны ли они, и все такое прочее.
Однако регулярные выражения (которые являются fsms) имеют эту функцию, где вы можете указать, сколько раз может встречаться определенный символ, например, {2,4} будет принимать «аа» и «ааа», но не «ааааа» и «а».
Я могу представить себе наличие счетчика на ребрах, который подсчитывает, сколько раз они были поражены, и использовать это, чтобы отклонить любые символы после того, как счетчик достиг определенного числа, но вы не можете реализовать минимум таким образом, потому что он всегда будет блокировать первый символ ( если минимум не равен 0).
Кто-нибудь знает способ реализовать эту функцию? он также должен работать с действительно большими числами, такими как {1,99999999999}
aaa?a?
не эквивалентно? - person Erick G. Hagstrom   schedule 01.04.2016aaa?a?
соответствует как минимум двумa
, за которыми могут следовать один или два других. Он соответствует аа, ааа и аааа и больше ничему. - person Erick G. Hagstrom   schedule 01.04.2016aaa?a?
, вы реализуетеa{2,4}
. Последнее обозначение является просто синтаксическим сахаром. - person Erick G. Hagstrom   schedule 01.04.2016{1, 100}
, то вам нужно создать для него сотню состояний. В остальном все просто. - person HenryLee   schedule 01.04.2016