2010-04-01 38 views

回答

4

一個島嶼語法是一個對待大部分語言都是文本(「水」),並挑選出部分感興趣的語言來使用語法規則(「島」)進行解析。例如,你可以選擇構建一個孤島語法來挑選在C#程序中找到的所有表達式,並忽略變量/方法/類聲明和語句語法(if,while,...)。

真正的問題是,「你應該使用島語法嗎?」。

的正面效益:

  • 你不必爲你寫要處理的語言一個完整的,完整的語法。

缺點:

  • 它並不總是很容易挑出感興趣的源的一部分。例如, 您如何確保孤島語法不會挑出被註釋掉的代碼塊,除非您的島語法詳細解釋了所有註釋?島語法的要點是避免進入這種細節,但在這裏你必須。

  • 您現在只能使用孤島語法來關注問題。如果問題出現了,那麼你的島語法也可能不得不改變,而這並不容易。

  • 程序操作中最有趣的問題要求您不僅能夠確定語法(例如「解析」)並構建某種樹來操作,而且還能夠確定符號的含義。用島嶼語法,你已經有效地寫下了這樣做的可能性(除非你想包括塊,聲明等的所有語法...... oops突然間它不是島語法,而是一個小的大陸語法) 。而那真的限制你可以做的。

打電話給我偏見,但我一直在做這種東西很長一段時間。我相信島語法確實沒有那麼有用。我提出的替代方案是基於共同基礎的許多語言的攤銷成本解析器,其名稱爲DMS Software Reengineering Toolkit

YMMV。