@@ -844,24 +844,12 @@ notAfterForbiddenBorderChar = do
845-- | Read a sub- or superscript expression
845-- | Read a sub- or superscript expression
846subOrSuperExpr :: OrgParser Inlines
846subOrSuperExpr :: OrgParser Inlines
847−subOrSuperExpr = try $ do
847+subOrSuperExpr = try $
848− choice [ balancedSexp '{' '}'
848+ choice [ id <$> charsInBalanced '{' '}' (noneOf "\n\r")
849− , balancedSexp '(' ')' >>= return . enclosing ('(', ')')
849+ , enclosing ('(', ')') <$> charsInBalanced '(' ')' (noneOf "\n\r")
850 , simpleSubOrSuperString
850 , simpleSubOrSuperString
851 ] >>= parseFromString (mconcat <$> many inline)
851 ] >>= parseFromString (mconcat <$> many inline)
852−
852+ where enclosing (left, right) s = left : s ++ [right]
853−-- | Read a balanced sexp
857−balancedSexp l r = try $ do
859− res <- concat <$> many ( many1 (noneOf ([l, r] ++ "\n\r"))
860− <|> try (string [l, r])
861− <|> enclosing (l, r) <$> balancedSexp l r
866simpleSubOrSuperString :: OrgParser String
854simpleSubOrSuperString :: OrgParser String
867simpleSubOrSuperString = try $
855simpleSubOrSuperString = try $
@@ -869,8 +857,3 @@ simpleSubOrSuperString = try $
869 , mappend <$> option [] ((:[]) <$> oneOf "+-")
857 , mappend <$> option [] ((:[]) <$> oneOf "+-")
870 <*> many1 alphaNum
858 <*> many1 alphaNum
876−enclosing (left, right) s = left : s ++ [right]