我想解析Haskell的語句列表。舉例來說,假設我有以下代碼:哈斯克爾的Src EXTS解析多個語句
let a = b
c = e
out <- return 3
我想要的功能,例如parseStmts
,這在某些解析格式返回這一點。
我看着haskell-src-exts
看到parseStmt
。這適用於單個語句。它的類型爲parseStmt :: String -> ParseResult Stmt
,如果您嘗試parseStmt "let a = 3"
,則結果爲成功ParseOk
。但是,如果您提供多個語句,則此函數會投訴,因爲字符串中有多個語句。
我如何解析多條語句,而無需在do
塊包裹呢?另外,我怎樣才能找到一個字符串中的Haskell語句分離的地方,所以我可以分開它們,然後使用parseStmt
從haskell-src-exts
?
謝謝!
我認爲這是一個解決方案,但它需要添加一個'do',在年底加入'return',並縮進一切爲了'do'。這是可行的(得到它?''可以嗎?),但有點醜,並希望有一個更好的解決方案。 –
@AndrewGibiansky你想解析_correct_ haskell源代碼,對吧?如果你沒有正確縮進並添加return語句,那麼你不能從它構造一個AST。你是否想簡單地將代碼解析成比AST更不正式的結構? – bheklilr
@AndrewGibiansky我不是太熟悉使用這個庫,但它看起來像你可以使用'lexTokenStream'功能從'Language.Haskell.Exts.Lexer'模塊,它會轉碼成標記,但它仍然可能難以操作。這看起來像一個鏡頭的工作。 – bheklilr