Fixed the parser again for extended rendezvous

This commit is contained in:
Neil Brown 2009-04-19 17:29:43 +00:00
parent cb4250b1b2
commit 13ce688271

View File

@ -2003,11 +2003,15 @@ alternative
guardedAlternative :: OccParser (A.Structured A.Alternative) guardedAlternative :: OccParser (A.Structured A.Alternative)
guardedAlternative guardedAlternative
= do m <- md = do m <- md
(makeAlt, alreadyIndented) <- guard (makeAlt, alreadyIndentedAfterExt) <- guard
when (not alreadyIndented) $ indent if alreadyIndentedAfterExt
p <- process -- There may or may not be a further process:
outdent then (tryVX process outdent >>* (A.Only m . makeAlt))
return $ A.Only m (makeAlt p) <|> (outdent >> return (A.Only m $ makeAlt (A.Skip m)))
else do indent
p <- process
outdent
return $ A.Only m (makeAlt p)
<?> "guarded alternative" <?> "guarded alternative"
guard :: OccParser (A.Process -> A.Alternative, Bool) guard :: OccParser (A.Process -> A.Alternative, Bool)