parsec

attoparsec lub parsec w haskell

Muszę przetworzyć niektóre pliki i przekonwertować je na predefiniowane typy danych. Haskell wydaje się dostarczać do tego d ... a jest różnica między tymi dwoma, a który z nich lepiej nadaje się do parsowania pliku tekstowego zgodnie z pewnymi zasadami?

Jakie są zalety parsowania aplikacyjnego nad parsowaniem monadycznym?

Wydaje się, że istnieje konsensus, że powinieneś używać Parsec jako aplikatora, a nie monady. Jakie są zalety parsowania aplikacyjnego nad parsowaniem monadycznym? style wydajność abstrakcja Czy monadyczny parsuje?

Czy kombinatory parserów mogą być wydajne?

Około 6 lat temu, porównałem moje własne kombinatory parserów w OCaml i odkryłem, że były ~5× wolniejsze niż Generatory parse ... -1) f (n-1) f (n-1) f (n-1) let () = let n = try int_of_string Sys.argv.(1) with _ -> 3 in fprintf stdout "%a\n" f n

Czy powinienem używać lexera podczas korzystania z biblioteki parsera, takiej jak Parsec?

Podczas pisania parsera w bibliotece kombinatorów parserów, takiej jak Parsec Haskella, zwykle masz 2 opcje: napisz lexer, ... iektórzy nazywają), z prostotą cytowaną jako głównym powodem. Jakie są ogólne kompromisy między Lex-em a nie robieniem tego?

Pełne przykłady parserów z parsec?

Próbuję stworzyć parser dla prostego języka funkcjonalnego, trochę jak Caml, ale wydaje mi się, że utknąłem z najprostszymi r ... OrIdent = do name <- identifier liftM (FuncCall name) (parens $ commaSep expr) <|> return (Identifier name)

Parsec: Applicatives vs Monads

Dopiero zaczynam od Parsec (mam małe doświadczenie w Haskell), i jestem trochę zdezorientowany w używaniu monad lub aplikator ... dy i aplikatory (używać ich, gdy są bardziej przydatne niż inne) Jeśli ostatnia odpowiedź brzmi: tak, powinienem to zrobić?

Jaka jest zaleta używania generatora parserów, takiego jak happy, w przeciwieństwie do używania kombinatorów parserów?

Aby nauczyć się pisać i analizować gramatykę bez kontekstu chcę wybrać narzędzie. Dla Haskell istnieją dwie duże opcje: Happy ... opisu gramatycznego i * Parsec, który pozwala na bezpośrednie kodowanie parsera w Haskell. Jakie są (dis)zalety obu podejść?

Haskell / Parsec: jak używać tekstu.Parsec.Token z tekstem.Parsec.Indent (z pakietu indents)

Pakiet indenty dla Parsec Haskella zapewnia sposób na analizę języków wcięć (takich jak Haskell i Python). Redefiniuje typ P ... .Parsec.Tiret Niestety, żaden z powyższych przykładów nie używa parserów tokenowych, takich jak te w tekście.Parsec.Token.

Haskell Parsec-komunikaty o błędach są mniej pomocne podczas korzystania z własnych tokenów

Pracuję nad oddzieleniem etapów Lex i parsowania parsera. Po kilku testach zdałem sobie sprawę, że komunikaty o błędach są mn ... (linia 1, kolumna 1): unexpected (Ide "asdf","test" (linia 1, kolumna 3)) oczekiwanie Ide " ok " lub Ide "nop"

Używanie Parseka z danymi.Tekst

Używając Parsec 3.1, możliwe jest parsowanie kilku typów wejść: [Char] z Text.Parsec.String Data.ByteString z Text.Pars ... y1 (char 'y') x2 <- many1 (char 'x') return (T.pack x1, T.pack y, T.pack x2) test = runParser parser () "test" input