summaryrefslogtreecommitdiff
path: root/DSL/Parsing.hs
diff options
context:
space:
mode:
Diffstat (limited to 'DSL/Parsing.hs')
-rw-r--r--DSL/Parsing.hs10
1 files changed, 7 insertions, 3 deletions
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)