我試圖用秒差距來分析是這樣的:哈斯克爾秒差距和無序屬性
property :: CharParser SomeObject
property = do
name
parameters
value
return SomeObjectInstance { fill in records here }
我實施的iCalendar規範,對每一個喜歡有一個名字:參數:值三峯,非常喜歡XML具有名稱的方式:attributes:content triplet。 Infact you could very easily convert an iCalendar into XML format(以爲我看不出優點)。
我的觀點是,參數不必以任何順序出現,每個參數可以有不同的類型。一個參數可能是一個字符串,而另一個參數可能是另一個元素的數字ID。他們可能沒有共同點,最後,我想把它們正確地放在正確的記錄字段中,以便解析器返回任何'SomeObjectInstance'。我該如何去做這類事情(或者你能指點我一個例子,說明有人必須像這樣解析數據)?
謝謝,我知道我的問題可能有點困惑,但這反映了我對我需要做什麼的理解程度。
編輯:我試圖避免給出預期輸出(因爲它是大的,而不是因爲它是隱藏的),但這裏是一個輸入文件(來自維基百科)的例子:
BEGIN :VCALENDAR
VERSION:2.0
PRODID: - // hacksw/handcal // NONSGML 1.0 // EN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:19970714T170000Z
組織者; CN = John Doe的:MAILTO:[email protected]
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
內容:巴士底日方
END:VEVENT
END:VCALENDAR
正如你可以看到它在VCalendar中包含一個VEvent,我已經制作了data structures that represent them here。
我想寫一個解析器,將該類型的文件解析爲我的數據結構,並且卡在需要處理任何類型的任何順序的屬性的位上;日期,時間,int,字符串,uid等。我希望在不重複整個iCalendar規範的情況下更有意義。
我不確定你在問什麼。你能舉一個可能的輸入和預期輸出的例子嗎? – sepp2k 2010-09-14 04:42:03
我給了更多的信息,我希望它現在更有意義,您已經預期了輸入以及我試圖用解析器填充的數據結構。現在我只是想弄清楚如何用parsec來做到這一點。 – 2010-09-14 04:51:37