1
我想畫一個FSM使用發現令牌找到令牌給Microsyntax拉絲有限狀態機(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]*"
我對FSM圖如下所示:
我不確定我製作的圖是否完全正確。我在繪製圖中的困惑在於: 1)標識符a-z,A-Z,_的循環轉換。 2)從整數轉換爲realValue:狀態3是否從0-9循環轉換?和 3)過渡到stringValue。
如果有人能讓我知道圖表是否正確,如果不正確,我的錯誤是什麼?
謝謝你的回答。但是,如果真正的價值是1.5說呢?難道它會停止在第3次循環轉換嗎?由於實際值可以有1.5或1.25以上的一個以上的小數點。如果實際值是1.5,那麼狀態3不是最終的,如果值是1.25,那麼第4個將是最終的? – Sujal
從狀態2到狀態3的轉換是當它讀取一個'.'。你有兩個從狀態3到數字的輸出轉換:不正確的轉換,正確的轉換到狀態4.當它讀取'1.5'中的'5'時,它應該轉到狀態4(接受)。所以它只會在讀完'.'後才處於狀態3,根據你的語法,這不是一個有效的數字。 – rici
謝謝!有道理 – Sujal