我知道FSA如何接受字符串'nice'(如維基百科頁面所示),但FSA接受的語言如何成爲編程語言?作爲(編程)語言接受器的有限狀態自動機
是這樣嗎?假設我有一個字母表A = {1,2,+, - }和語言L = {1 + 1,1 + 2,1-1,1-2},那麼我的FSA看起來像這樣;
-->[1]--1-->[2]--+-->[3]--1-->[[5]]
| |
- 2-->[[6]]
|
v
[4]--1-->[[7]]
|
2-->[[8]]
當我達到接受狀態5,6,7,8我知道值應該是什麼,因此我定義了一種編程語言?
如果我擴展它以嵌套FSA,那麼我可以計算字符串'1plus2'和'sqrt(9)'。
這種想法是否正確?
是否有這樣的事,作爲一個「嵌套FSA」?我的印象是(無界)嵌套導致無限的狀態。 – delnan 2012-01-12 20:54:39
那麼我的知識缺乏,嵌套FSA實際上可能更像是一個圖靈機,我只是想在FSA內運行子例程的方法,這可能是不可能的,但我真正的問題是如何能FSA充當編程語言接受者?我知道語言如何被接受,但他們是如何行事的,即當我打到狀態5時,我怎麼知道我有價值2以便能夠將它存儲在註冊表中或做我需要做的任何事情?在我看來,以任何方式擴展它不再是FSA。 – Neilos 2012-01-12 21:02:36
爲了計算A + B = C需要的不僅僅是一個有限狀態自動機,出於簡單的原因,語言a^n b^m c(n + m)不是一個常規語言,而是由抽象引理。 – Patrick87 2012-01-12 21:09:31