Parsec (analyzátor) - Parsec (parser)
Původní autoři | Daan Leijen, Paolo Martini, Antoine Latter |
---|---|
Vývojáři | Herbert Valerio Riedel, Derek Elkins, Antoine Latter, Roman Cheplyaka, Ryan Scott |
První vydání | 2. listopadu 2006[1] |
Stabilní uvolnění | 3.1.14.0 / 10. srpna 2019[2] |
Úložiště | github |
Napsáno | Haskell |
Operační systém | Linux, Operační Systém Mac, Okna |
Plošina | Haskell Platform |
Typ | Analyzátorový kombinátor, Knihovna |
Licence | BSD-3 |
webová stránka | hackování |
Parsec je knihovna pro psaní analyzátory v Haskell.[3] Je založen na vyšším řádu syntaktické analyzátory, takže složitý analyzátor může být vytvořen z mnoha menších.[4] Byla znovu implementována v mnoha dalších jazycích, včetněErlang,[5],Elixír,[6],OCaml,[7] a F#,[8][9]stejně jako imperativní jazyky jako C#,[10] a Jáva.[11]
Protože program založený na kombinátoru analyzátoru je obecně pomalejší než a generátor analyzátoru -založený program, Parsec se obvykle používá pro malé jazyky specifické pro doménu, zatímco Šťastný se používá pro překladače jako GHC.[12]
Mezi další kombinátorové knihovny analyzátoru Haskell, které byly odvozeny od Parsec, patří Megaparsec[13] a Attoparsec.[14]
Parsec je svobodný software vydané pod licencí BSD-3-Clause.[15]
Příklad
Analyzátory napsané v Parsec začínají jednoduššími analyzátory, jako jsou ty, které rozpoznávají určité řetězce, a kombinují je, aby vytvořily analyzátor se složitějším chováním. Například, číslice
analyzuje číslici a tětiva
analyzuje konkrétní řetězec (jako "Ahoj"
).
Knihovny kombinátoru analyzátorů, jako je Parsec, poskytují obslužné funkce pro spuštění analyzátorů na skutečných hodnotách. Analyzátor, který rozpozná jednu číslici z řetězce, lze rozdělit na dvě funkce: jednu k vytvoření analyzátoru a a hlavní
funkce, která volá jednu z těchto obslužných funkcí (analyzovat
v tomto případě) pro spuštění analyzátoru:
import Text - má obecné obslužné funkce pro analýzuimport Text.Parsec.Char - obsahuje konkrétní základní kombinátorytyp Analyzátor = Proud s m Char => ParsecT s u m Tětivaanalyzátor :: Analyzátoranalyzátor = tětiva "Ahoj"hlavní :: IO ()hlavní = tisk (analyzovat analyzátor „“ "Ahoj světe")- vypíše 'Správně "ahoj"'
Definujeme a Analyzátor
typ vytvoří podpis typu analyzátor
čitelnější. Pokud bychom chtěli tento program pozměnit, řekněme přečíst buď řetězec "Ahoj"
nebo řetězec "Ahoj"
, mohli bychom použít operátora <|>
, poskytl Alternativní
typeclass, ke kombinaci dvou analyzátorů do jednoho analyzátoru, který se pokusí buď:
analyzátor = tětiva "Ahoj" <|> tětiva "Ahoj"
Reference
- ^ „parsec 2.0“. Hackování. Citováno 3. září 2019.
- ^ „Zprávy“. Github. Citováno 3. září 2019.
- ^ „Parsec na Haskell wiki“. Haskell Wiki. Citováno 29. května 2017.
- ^ „Parsec: Direct Style Monadic Parser Combinators For The Real World“ (PDF). Microsoft Research. Citováno 22. listopadu 2014.
- ^ „Parsec Erlang“. BitBucket. Citováno 23. listopadu 2014.
- ^ „Nimble Parsec“. Github. Citováno 18. prosince 2018.
- ^ „Parsec OCaml“ (PDF). Letní projekt OCaml. Citováno 23. listopadu 2014.
- ^ „XParsec by corsis“. XParsec. Citováno 29. května 2017.
- ^ „FParsec“. Quanttec. Citováno 29. května 2017.
- ^ "CSharp monad". Github. Citováno 10. prosince 2014.
- ^ „JParsec“. Github. Citováno 14. října 2016.
- ^ „Glasgow Haskell Compiler (AOSA sv. 2)“. Architektura aplikací s otevřeným zdrojovým kódem. Citováno 23. listopadu 2014.
- ^ „megaparsec: monadické kombinátory analyzátorů“. Hackování. Citováno 2018-09-10.
- ^ "attoparsec: Rychlá analýza kombinátoru pro bytestringy a text". Hackování. Citováno 2018-09-10.
- ^ https://github.com/haskell/parsec/blob/master/LICENSE
externí odkazy
![]() | Tento bezplatný open source software článek je a pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |