Я пытаюсь нарисовать FSM для поиска маркеров с использованием дал MicrosyntaxDrawing конечный автомат (FSM) для поиска маркеров с помощью дали Microsyntax
microsyntax
// Uses .Net regular expression syntax.
Identifier <|[a-zA-Z][\w_.]*
IntegerValue <|\d+
// real values must include a decimal point.
RealValue <|\d*\.\d+
// Note that strings do not have any escape characters
// and will be prematurely terminated with a newline.
StringValue <|"[^"\n]*"
Моя схема для ФШМ выглядит следующим образом:
Я не уверен, что диаграмма, которую я сделал, абсолютно верна. Моя путаница в диаграмме рисования лежит в: 1) петлевый переход для Идентификатора a-z, A-Z, _. 2) переход от целого к realValue: состояние 3 будет иметь петлевый переход от 0-9? и 3) переход к stringValue.
Было бы очень полезно, если бы кто-нибудь мог сообщить мне, правильна ли диаграмма или нет, каковы мои ошибки?
Спасибо за ответ. Но что, если реальная стоимость была равна 1,5? не будет ли он останавливаться на седьмом 3 с петлевым переходом? Поскольку реальное значение может иметь более одной десятичной точки, например, 1,5 или 1,25. Если реальное значение равно 1,5, то не будет указано 3 окончательным, а если значение равно 1,25, то sate 4 будет окончательным? – Sujal
Переход в состояние 3 из состояния 2 происходит, когда он читает '.'. У вас есть два исходящих перехода из состояния 3 на цифрах: неправильный, который петли, и правильный, который переходит в состояние 4. Когда он читает '5' в' 1.5', он должен перейти в состояние 4 (принятие). Таким образом, это будет только в состоянии 3 после прочтения '.', И это не допустимое число в соответствии с вашим синтаксисом. – rici
Спасибо! Это имеет смысл – Sujal