From a48be18109647c5bcdd119aaec99b23eb09c866b Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Sun, 19 Apr 2009 17:01:11 +0000 Subject: [PATCH] Fixed the parser on normal ALT guards, after the extended rendezvous change broke it --- frontends/ParseOccam.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/frontends/ParseOccam.hs b/frontends/ParseOccam.hs index eb0233f..b0b2ea4 100644 --- a/frontends/ParseOccam.hs +++ b/frontends/ParseOccam.hs @@ -1716,7 +1716,7 @@ channelInput inAlt eol indent p <- process - mp <- if inAlt then return Nothing else (tryVX process outdent >>* Just) <|> (outdent >> return Nothing) + mp <- if inAlt then return (Just $ error "internal ALT error") else (tryVX process outdent >>* Just) <|> (outdent >> return Nothing) return (c, A.InputSimple m is (Just p), mp) extCaseInput m c @@ -1726,7 +1726,8 @@ channelInput inAlt indent p <- process mp <- if inAlt then return Nothing else (tryVX process outdent >>* Just) <|> (outdent >> return Nothing) - return (c, A.InputCase m A.InputCaseExtended (A.Only m (tl p mp)), Nothing) + return (c, A.InputCase m A.InputCaseExtended (A.Only m (tl p mp)), + if inAlt then Just $ error "internal ALT error" else Nothing) timerInput :: OccParser (A.Variable, A.InputMode) timerInput @@ -2012,15 +2013,15 @@ guardedAlternative guard :: OccParser (A.Process -> A.Alternative, Bool) guard = do m <- md - (c, im, _) <- input True - return (A.Alternative m (A.True m) c im, True) + (c, im, ext) <- input True + return (A.Alternative m (A.True m) c im, isJust ext) <|> do m <- md sSKIP eol return (A.AlternativeSkip m (A.True m), False) <|> do m <- md b <- tryVX expression sAmp - do { (c, im, _) <- input True; return (A.Alternative m b c im, True) } + do { (c, im, ext) <- input True; return (A.Alternative m b c im, isJust ext) } <|> do { sSKIP; eol; return (A.AlternativeSkip m b, False) } "guard" --}}}