解析鬍鬚模板時,Parsec識別註釋時出現問題。
各種小鬍子標籤都以{{
開頭,包括塊註釋({{!comment}}
)。 我已經對我的TokenParser中的{{!
和}}
設置了評論開始和評論。
每當我向模板添加評論時,Parsec都會抱怨評論意外。
它需要一個mustache變量,因爲這是匹配{{
的唯一標記。Parsec無法識別塊註釋
Parsec何時刪除評論?我認爲這會發生在源打擊我的解析器之前?
解析鬍鬚模板時,Parsec識別註釋時出現問題。
各種小鬍子標籤都以{{
開頭,包括塊註釋({{!comment}}
)。 我已經對我的TokenParser中的{{!
和}}
設置了評論開始和評論。
每當我向模板添加評論時,Parsec都會抱怨評論意外。
它需要一個mustache變量,因爲這是匹配{{
的唯一標記。Parsec無法識別塊註釋
Parsec何時刪除評論?我認爲這會發生在源打擊我的解析器之前?
Parsec不刪除評論。在TokenParser
,意見在白色空間納入,所以
whiteSpace tokenParser
跳過註釋和普通的空白字符(空格,製表符,換行符,...)。
通常情況下,您使用lexeme parser
跳過跟隨詞位的所有空格,然後您只需要一個初始空白跳過頂級解析器跳過源中的任何前導空格,之後,所有空格(包括評論)自動處理(由,makeTokenParser
創建)。
如果您不使用lexeme
並手動處理空白區域,則必須注意作爲註釋分隔符前綴的標記/詞位。如果首先嚐試前綴,那將會成功,但只會佔用註釋分隔符的一部分,在這種情況下,將爲變量解析器留下'!'
,然後失敗。
你能告訴我們你的解析代碼的相關部分嗎? – asm
您可能有興趣查看我在'mustache2hs'包中的鬍子的Parsec解析器。 – singpolyma
mustache2hs是一個很酷的主意! 我看了一下,它可以從一些模塊化中受益:-)。 我的解析器建立一個XML /鬍子AST來做一些DOM的東西,所以你的解析器不適用於我的情況(它已經編碼了......) – andsens