2010-09-10 49 views
0

您好我正在尋找一種僞Markdown類型的語言和解析器來解析它到xhtml。編譯/分析有意義的空白

我從來沒有寫過一個編譯器......我簡單看了一下ANTLR,想知道ANTLR是否可以用有意義的空白來處理解析事情?

所以說我有這樣的事情:

some text 

    some other text 

    # bullet point 

    # nested bullet point 

根據上下文和前綴空間的數量,這些線路將意味着不同的事情。

什麼是用於編寫解析器的好工具?

謝謝, 亞歷克斯

回答

2

ANTLR肯定可以用於此。但是,如果您對ANTLR或解析器生成器一般都不熟悉,我不認爲我可以簡單地解釋如何完全做到這一點。我建議你用ANTLR嘗試一些簡單的事情,並瀏覽The Definitive ANTLR Reference。它甚至有一段關於這種類型的問題,類似於解析Python代碼。請參閱章節4.3規則,段落有關詳細信息,請按照Lexer規則發送多個令牌。

1

我的做法是讓你的詞法分析器產生縮進/突出令牌。存儲當前縮進級別並匹配\n *之類的模式。計算空格的數量,如果它與當前縮進級別不同,則發出縮進/縮進標記。

同樣,在開始行計數標籤。在\n[ \t]*模式中插入引發錯誤的規則應該會阻止人們混合標籤和空格。