Improve parse error messages for node specs
authorDaniel Schwyn <danielschwyn@gmail.com>
Wed, 10 May 2017 13:29:22 +0000 (15:29 +0200)
committerDaniel Schwyn <schwyda@student.ethz.ch>
Tue, 13 Jun 2017 12:20:28 +0000 (14:20 +0200)
Signed-off-by: Daniel Schwyn <schwyda@student.ethz.ch>

tools/sockeye2/SockeyeParser.hs

index cf74b83..9f55c64 100644 (file)
@@ -78,9 +78,13 @@ netSpec = do
             return nodeIds
 
 nodeSpec = do
-    accept <- try parseAccept <|> return []
-    translate <- try parseTranlsate <|> return []
-    overlay <- try parseOverlay <|> return Nothing
+    a <- optionMaybe parseAccept 
+    t <- optionMaybe parseTranlsate 
+    overlay <- optionMaybe parseOverlay
+    let accept = case a of Nothing -> []
+                           Just blocks -> blocks
+        translate = case t of Nothing -> []
+                              Just maps -> maps
     return $ AST.NodeSpec accept translate overlay
     where parseAccept = do
             reserved "accept"
@@ -90,8 +94,7 @@ nodeSpec = do
             brackets $ commaSep mapSpec
           parseOverlay = do
             reserved "over"
-            nodeId <- identifier
-            return (Just nodeId)
+            identifier
 
 mapSpec = do
     srcBlock <- blockSpec