2013-02-03 45 views
0

某些東西我發現自己需要解析某種簡單的語言。一種比正則表達式更具表現力的語言,但它的體積太小,不值得使用像野牛這樣強大的東西。快速解析簡單語言的指導原則

我最終做了特設解析器使用單元測試來保證它的正確性。我創建了一個提取單個標記的函數,另一個函數將繼續提取標記,並通過幾個循環和許多if來解析語言。但是,這不是解析語言的正確方法,如果有人看到代碼不理解它的意圖。

我正在尋找一些更好的解決方案來快速解析小語言。一些圖書館或某種技術來解決這個問題。

+1

野牛怎麼了?如果你有一個簡單的語言,野牛解析器也很簡單。 – rici

+2

你可以看看[Boost.Spirit](http://boost-spirit.com/home/)。 ([Documentation](http://www.boost.org/doc/libs/1_53_0/libs/spirit/doc/html/index.html)) – leemes

+0

@rici其實,我喜歡野牛。但它是我添加到我的項目中的另一個依賴項。但也許我可以在版本控制中添加生成的文件?我不知道... –

回答

2

這是解析語言的完美方式。保持標記化和解析部分分離,可能有一個或兩個枚舉來保存不同類型的標記。我不明白爲什麼這樣的方法會導致不潔的代碼,特別是對於相當簡單的語言。

除此之外,野牛應該工作得很好,而且它沒有太多的智力開銷來使用它。