2016-10-25 86 views
0

在大學他們要求我使用語法和Pushdown自動機來檢查Java代碼的一部分語法。由於我以前沒有使用過這個自動機,所以我已經瞭解了它們是如何工作的,我認爲這個自動機在檢查代碼語法方面並不是很有用,因爲下推自動機用於驗證任何令牌之間的某種比例的語法如「0^n 1^2n | n> = 0」。在這種情況下,下推自動機是否有用?

代碼語法中不存在令牌之間的這種比例,因此我認爲下推自動機在這種情況下並不有用。

  • 我是對的?
  • 我必須抱怨他們要求我的這項工作嗎?

回答

0

非確定性下推接受者(NPDA)和上下文無關語法(CFG)在表示語言方面具有相同的功能。由於大多數(如果不是全部)編程語言(如java)語法可以由CFG來呈現,所以它也可以由NPDA呈現。

所以,沒有抱怨,做任務。

+0

感謝您的答案,但你怎麼能在一個完全直線的語法中使用堆棧? 我的意思是,在代碼行的語法中,不需要使用堆棧,因爲令牌數量沒有關係。 你可以讓這個代碼行「int var = 25 + x」的下推接受器? – vanillaHoman