Tôi đang cố viết một trình phân tích cú pháp trong Haskell bằng Parsec. Hiện nay tôi có một chương trình có thể phân tíchTrình phân tích cú pháp phân tích cú pháp Haskell để gặp phải [...]
test x [1,2,3] end
Các mã mà thực hiện điều này được đưa ra như sau
testParser = do {
reserved "test";
v <- identifier;
symbol "[";
l <- sepBy natural commaSep;
symbol "]";
p <- pParser;
return $ Test v (List l) p
} <?> "end"
nơi commaSep được định nghĩa là
commaSep = skipMany1 (space <|> char ',')
Bây giờ là có một cách nào đó đối với tôi để phân tích một tuyên bố tương tự, cụ thể:
test x [1...3] end
Làm quen với Haskell và Parsec cho vấn đề đó, tôi chắc chắn có một số cách ngắn gọn để làm điều này mà tôi không biết. Bất kỳ trợ giúp sẽ được đánh giá cao.
Xin cảm ơn một lần nữa.
Số kỳ có thể là hằng số hay biến không? Khoảng trống có được phép giữa các số và dấu chấm và giữa các dấu chấm không? Nhân tiện, trình phân tích cú pháp đầu tiên của bạn khớp với 'kiểm tra x [1,, 2, ,, 3] kết thúc'; có lẽ đó không phải là những gì bạn muốn. – dflemstr
Số lượng dấu chấm phải không đổi, tức là [1 ... 3] phải bao gồm chính xác 3 dấu chấm cho mọi trường hợp. Khoảng trắng ở giữa chẳng hạn như [1 ... 3] sẽ bị bỏ qua. Hy vọng rằng làm rõ những gì tôi đang sau một chút. –