Парсек (талдаушы) - Parsec (parser)

Парсек
Түпнұсқа автор (лар)Даан Лайен, Паоло Мартини, Антуан Латтер
ӘзірлеушілерГерберт Валерио Ридель, Дерек Элкинс, Антуан Латтер, Роман Чепляка, Райан Скотт
Бастапқы шығарылым2006 жылғы 2 қараша; 14 жыл бұрын (2006-11-02)[1]
Тұрақты шығарылым
3.1.14.0 / 10 тамыз 2019 ж; 15 ай бұрын (2019-08-10)[2]
Репозиторийgithub.com/ haskell/ парсек
ЖазылғанХаскелл
Операциялық жүйеLinux, macOS, Windows
ПлатформаHaskell платформасы
ТүріБөлшектеуіш, Кітапхана
ЛицензияBSD-3
Веб-сайтбұзу.haskell.org/ пакет/ парсек

Парсек Бұл кітапхана жазу үшін талдаушылар жылы Хаскелл.[3] Ол жоғары деңгейге негізделген талдаушы комбинаторлар, сондықтан көптеген кішкене бөлшектерден күрделі талдағыш жасауға болады.[4] Ол көптеген басқа тілдерде, соның ішінде қайта енгізілдіЭрланг,[5],Эликсир,[6],OCaml,[7] және F #,[8][9]Сонымен қатар императивті тілдер сияқты C #,[10] және Java.[11]

Браузер негізіндегі бағдарлама негізінен а-ға қарағанда баяу болғандықтан талдаушы генератор Parsec негізіндегі бағдарлама әдетте кішігірімде қолданылады арнайы домендерге арналған тілдер, ал Бақытты сияқты компиляторлар үшін қолданылады ЖЖ.[12]

Парсек тілінен алынған Haskell талдаушы комбинаторының басқа кітапханаларына Megaparsec кіреді[13] және Аттопарсек.[14]

Парсек ақысыз бағдарламалық жасақтама BSD-3-бап лицензиясы бойынша шығарылды.[15]

Мысал

Парсек тілінде жазылған талдаушылар қарапайым талдаушылардан басталады, мысалы, белгілі бір жолдарды таниды және оларды қиындататын мінез-құлықпен парсер құру үшін біріктіреді. Мысалға, цифр санды және жіп белгілі бір жолды талдайды (мысалы «Сәлеметсіз бе»).

Парсек сияқты комбинатор кітапханалары талдаушыларды нақты мәндерде іске қосуға арналған утилиталық функцияларды ұсынады. Жолдан бір цифрды тануға арналған талдаушыны екі функцияға бөлуге болады: бірі - талдаушыны құру, ал а негізгі осы утилиталық функциялардың бірін шақыратын функция (талдау бұл жағдайда) талдаушыны іске қосу үшін:

импорт Парсек мәтіні      - жалпы утилиталық функцияларға иеимпорт Мәтін.Парсек.Чар - нақты базалық комбинаторлардан тұрадытүрі Саралаушы = Ағын с м Char => ПарсекТ с сен м Жолталдаушы :: Саралаушыталдаушы = жіп «Сәлеметсіз бе»негізгі :: IO ()негізгі = басып шығару (талдау талдаушы «<тест>» «Сәлем Әлем»)- «сәлем» басып шығарады

Біз анықтаймыз Саралаушы қолтаңбасын жасау үшін теріңіз талдаушы оқуға оңай. Егер біз бұл бағдарламаны өзгерткіміз келсе, жолды оқыңыз деп айтыңыз «Сәлеметсіз бе» немесе жіп «Сау болыңыз», біз операторды қолдана алдық <|>, қарастырылған Балама typeclass, екі талдаушыны бір талдаушыға біріктіру үшін:

талдаушы = жіп «Сәлеметсіз бе» <|> жіп «Сау болыңыз»

Әдебиеттер тізімі

  1. ^ «parsec 2.0». Ұрлау. Алынған 3 қыркүйек 2019.
  2. ^ «Шығарылымдар». Github. Алынған 3 қыркүйек 2019.
  3. ^ «Parsec on Haskell wiki». Haskell Wiki. Алынған 29 мамыр 2017.
  4. ^ «Парсек: шынайы әлемге арналған монадикалық талдаушы комбинаторлар» (PDF). Microsoft Research. Алынған 22 қараша 2014.
  5. ^ «Парсек Эрланг». BitBucket. Алынған 23 қараша 2014.
  6. ^ «Nimble Parsec». Github. Алынған 18 желтоқсан 2018.
  7. ^ «Parsec OCaml» (PDF). OCaml жазғы жобасы. Алынған 23 қараша 2014.
  8. ^ «XParsec корсистен». XParsec. Алынған 29 мамыр 2017.
  9. ^ «FParsec». Квантек. Алынған 29 мамыр 2017.
  10. ^ «CSharp monad». Github. Алынған 10 желтоқсан 2014.
  11. ^ «JParsec». Github. Алынған 14 қазан 2016.
  12. ^ «Глазго Хаскелл құрастырушысы (AOSA 2-том)». Ашық көзді қосымшалардың архитектурасы. Алынған 23 қараша 2014.
  13. ^ «megaparsec: монадалық талдауыш комбинаторлары». Ұрлау. Алынған 2018-09-10.
  14. ^ «attoparsec: байтетрингтер мен мәтінге арналған жылдам комбинаторды талдау». Ұрлау. Алынған 2018-09-10.
  15. ^ https://github.com/haskell/parsec/blob/master/LICENSE

Сыртқы сілтемелер