2010-09-27 54 views
0

我想寫一個haml-like語言的解析器和轉換器來解析它們,並將它們轉換爲html內容。如何編寫haml-like語言的解析器?

我發現人們通常使用正則表達式來做到這一點,但我們寫了很多困難的正則表達式,這是不容易的。有什麼工具或庫可以做到嗎?我希望它在java和易於使用。

而且,有沒有關於如何編寫這樣的解析器的文章?提前致謝!

回答

1

一些研究和測試後,我不得不說,parboiled是這個職位的最佳工具。

我花了一天就PEG和蒸穀米的很好的例子提供,並且編寫一個簡單的青菜解析器的一天。這是如此簡單和自然。比正則表達式更容易和更清晰。最好的事情是我只能使用Java編寫程序,而無需外部DSL學習。

我想說非常感謝你到半熟的作者,那就是我正在尋找一個偉大的工具。

1

正則表達式通常是一個窮人分析器。一個正則表達式不是一個真正的解析器。

解析器通常由解析器生成器生成。您可以在規範文件中指定語言,解析器生成器會將其轉換爲解析器的源代碼。

+0

如果我不使用正則表達式,我應該使用什麼?例如,解析並轉換haml – Freewind 2010-09-27 14:08:19

+0

只需比較字符串和字符。這裏有一個例子:http://github.com/raymyers/JHaml/blob/master/src/main/java/com/cadrlife/jhaml/internal/JHamlParser.java – Sjoerd 2010-09-27 14:13:36

0

您可以使用JavaCC。這是一個像解析器生成器一樣的yacc。輸出是解析器的Java源代碼。

+0

謝謝你,但我發現蒸穀米是非常好的我的工作 – Freewind 2010-09-29 16:59:59