mirror of
https://github.com/github/semantic.git
synced 2024-12-23 23:11:50 +03:00
Apply both rewrapping functions.
This commit is contained in:
parent
341f806806
commit
edfb98ff7d
@ -349,7 +349,7 @@ instance (Bounded grammar, Ix grammar) => Alternative (Assignment ast grammar) w
|
|||||||
(Alt ls `Then` continueL) <|> (Alt rs `Then` continueR) = Alt ((Left <$> ls) <> (Right <$> rs)) `Then` either continueL continueR
|
(Alt ls `Then` continueL) <|> (Alt rs `Then` continueR) = Alt ((Left <$> ls) <> (Right <$> rs)) `Then` either continueL continueR
|
||||||
(Alt ls `Then` continueL) <|> r = Alt ((continueL <$> ls) <> pure r) `Then` id
|
(Alt ls `Then` continueL) <|> r = Alt ((continueL <$> ls) <> pure r) `Then` id
|
||||||
l <|> (Alt rs `Then` continueR) = Alt (l <| (continueR <$> rs)) `Then` id
|
l <|> (Alt rs `Then` continueR) = Alt (l <| (continueR <$> rs)) `Then` id
|
||||||
l <|> r | Just (sl, cl) <- choices l, Just (sr, cr) <- choices r = fromMaybe id (rewrapFor l <|> rewrapFor r) $ Choose (sl `union` sr) (accumArray (\ a b -> liftA2 (<|>) a b <|> a <|> b) Nothing (unionBounds cl cr) (assocs cl <> assocs cr)) `Then` id
|
l <|> r | Just (sl, cl) <- choices l, Just (sr, cr) <- choices r = fromMaybe id (rewrapFor r) . fromMaybe id (rewrapFor l) $ Choose (sl `union` sr) (accumArray (\ a b -> liftA2 (<|>) a b <|> a <|> b) Nothing (unionBounds cl cr) (assocs cl <> assocs cr)) `Then` id
|
||||||
| otherwise = wrap (Alt (l :| [r]))
|
| otherwise = wrap (Alt (l :| [r]))
|
||||||
where choices :: Assignment ast grammar a -> Maybe ([grammar], Array grammar (Maybe (Assignment ast grammar a)))
|
where choices :: Assignment ast grammar a -> Maybe ([grammar], Array grammar (Maybe (Assignment ast grammar a)))
|
||||||
choices (Choose symbols choices `Then` continue) = Just (symbols, fmap continue <$> choices)
|
choices (Choose symbols choices `Then` continue) = Just (symbols, fmap continue <$> choices)
|
||||||
|
Loading…
Reference in New Issue
Block a user