From 42d52055d1e606138df32e1cdc349f3cacbc7fa7 Mon Sep 17 00:00:00 2001 From: Joscha Date: Wed, 20 Nov 2019 18:19:25 +0000 Subject: [PATCH] Extract flag parser --- src/Mima/Parse/Common.hs | 4 ++++ src/Mima/Parse/FlagFile.hs | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Mima/Parse/Common.hs b/src/Mima/Parse/Common.hs index 7d67ecf..5dc09e0 100644 --- a/src/Mima/Parse/Common.hs +++ b/src/Mima/Parse/Common.hs @@ -6,6 +6,7 @@ module Mima.Parse.Common -- * Basic parsers , whitespace , labelName + , flag -- ** Number literals , binDigit , decDigit @@ -58,6 +59,9 @@ labelName = label "label" $ do ts <- takeWhileP Nothing (\c -> isAlphaNum c || isConnecting c) pure $ T.singleton t <> ts +flag :: Parser (Set.Set Char) +flag = label "alphanumeric character" $ Set.singleton <$> satisfy isAlphaNum + binDigit :: (Num a) => Parser a binDigit = label "binary digit" $ token helper Set.empty where diff --git a/src/Mima/Parse/FlagFile.hs b/src/Mima/Parse/FlagFile.hs index 7cde1c3..a20089c 100644 --- a/src/Mima/Parse/FlagFile.hs +++ b/src/Mima/Parse/FlagFile.hs @@ -21,11 +21,8 @@ import Mima.Word lAddress :: Parser MimaAddress lAddress = lexeme fixedWidthHexAddress -lFlag :: Parser (Set.Set Char) -lFlag = lexeme $ label "alphanumeric character" $ Set.singleton <$> satisfy isAlphaNum - lFlags :: Parser (Set.Set Char) -lFlags = Set.unions <$> some lFlag +lFlags = Set.unions <$> some (lexeme flag) lAddressRange :: Parser AddressRange lAddressRange = do