Tôi đang viết chương trình đầu tiên của mình với Parsec. Tôi muốn phân tích các lược đồ MySQL và muốn tìm ra cách tốt nhất để phân tích các chuỗi đại diện cho các từ khóa nhất định trong trường hợp không phân biệt chữ hoa chữ thường. Dưới đây là một số mã cho thấy cách tiếp cận tôi đang sử dụng để phân tích cú pháp "TẠO" hoặc "tạo". Có cách nào tốt hơn để làm điều này? Một câu trả lời mà không phải để xây dựngExpressionParser sẽ là tốt nhất. Tôi đang đi các bước em bé ở đây.Cách nào tốt nhất để phân tích cú pháp phân biệt chữ hoa chữ thường với Text.Combinators.Parsec?
p_create_t :: GenParser Char st Statement
p_create_t = do
x <- (string "CREATE" <|> string "create")
xs <- manyTill anyChar (char ';')
return $ CreateTable (x ++ xs) [] -- refine later
Tôi giả định rằng 'map toLower' trên đầu vào trước khi thậm chí chạy trình phân tích cú pháp không phải là một tùy chọn? Ngoài ra, tôi mong đợi "phân biệt chữ hoa chữ thường" cũng khớp với "Tạo", "CrEaTe", "TẠO" hoặc bất kỳ biến thể nào khác mà ví dụ của bạn từ chối. Bạn muốn cái nào –
Điều đó có hiệu quả. Cảm ơn. Tôi đã không nghĩ về điều đó! – dan
@dan Hãy cẩn thận nếu đầu vào của bạn chứa chuỗi, chúng cũng sẽ được hạ thấp hơn. Ví dụ: nếu bất kỳ cột nào của bạn chứa giá trị chuỗi mặc định. –