packages feed

parsley-2.0.0.1: test/Regression/Parsers.hs

{-# LANGUAGE TemplateHaskell #-}
module Regression.Parsers where

import Prelude hiding (pure, (<*>), (*>), (<*))
import Data.Char (isDigit)
import Parsley
import Parsley.Char (token)
import Parsley.Register (newRegister_, put_, get)
import Parsley.Defunctionalized (Defunc(LIFTED))
import Parsley.Internal.Core.Primitives (loop)

issue26_ex1 :: Parser ()
issue26_ex1 = (token "123" <|> token "") *> void (token "abc")

issue26_ex2 :: Parser ()
issue26_ex2 = (token "123" <|> token "45") *> void (token "abc")

issue41_ex1 :: Parser Bool
issue41_ex1 = newRegister_ (LIFTED False) $ \reg -> optional (try (char 'a' *> put_ reg (LIFTED True) *> char 'b')) *> get reg

issue41_ex2 :: Parser Bool
issue41_ex2 = newRegister_ (LIFTED False) $ \reg -> try ((string "abc" *> get reg) <|> (put_ reg (LIFTED True) *> get reg)) <|> get reg

issue41_ex3 :: Parser Bool
issue41_ex3 = newRegister_ (LIFTED False) $ \reg -> try ((string "abc" *> get reg) <|> (put_ reg (LIFTED True) *> item *> get reg)) <|> get reg

badFactor :: Parser String
badFactor = string "a"
        <|> string "uxy" *> loop (void (char 'a')) unit *> string "z"
        <|> string "b"