From 0bde837174fcb9c17cb3adbf6bc3c7407cab10df Mon Sep 17 00:00:00 2001 From: Matthew Hall Date: Wed, 22 Feb 2023 21:42:36 +1300 Subject: Proctables are now maps --- DSL/Parsing.hs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'DSL/Parsing.hs') diff --git a/DSL/Parsing.hs b/DSL/Parsing.hs index e0017bb..72d6b23 100644 --- a/DSL/Parsing.hs +++ b/DSL/Parsing.hs @@ -1,9 +1,9 @@ module DSL.Parsing where import Data.Char (isDigit, isSpace) -import Data.Maybe (fromMaybe) import DSL.Types +import DSL.Util import DSL.BaseParsers buildDSLLexer :: Parser Char [Char] -> TokenTag -> DSLLexer @@ -197,6 +197,10 @@ programP = phrase $ procs `plus` code procs = mult procP code = mult1 blockP -stringToProgram :: String -> Maybe ([ProcSpec], Program) -stringToProgram = fmap snd . parse (tokenizer `chain` programP) +stringToProgram :: String -> Maybe (ProcTable, Program) +stringToProgram = (>>=(f . snd)) . parse (tokenizer `chain` programP) + where + f (ps, b) = case buildProcTable ps of + Nothing -> Nothing + Just t -> Just (t, b) -- cgit v1.2.1