diff -r 1841d5cf899f -r 39866eb9e4a6 tools/PascalParser.hs --- a/tools/PascalParser.hs Mon Aug 06 23:30:58 2012 +0400 +++ b/tools/PascalParser.hs Tue Aug 07 21:18:33 2012 +0400 @@ -270,12 +270,12 @@ char ';' comments forward <- liftM isJust $ optionMaybe (try (string "forward;") >> comments) - many functionDecorator + inline <- liftM (any (== "inline;")) $ many functionDecorator b <- if isImpl && (not forward) then liftM Just functionBody else return Nothing - return $ [OperatorDeclaration i rid ret vs b] + return $ [OperatorDeclaration i rid inline ret vs b] funcDecl = do @@ -295,21 +295,24 @@ char ';' comments forward <- liftM isJust $ optionMaybe (try (string "forward;") >> comments) - many functionDecorator + inline <- liftM (any (== "inline;")) $ many functionDecorator b <- if isImpl && (not forward) then liftM Just functionBody else return Nothing - return $ [FunctionDeclaration i ret vs b] + return $ [FunctionDeclaration i inline ret vs b] - functionDecorator = choice [ - try $ string "inline;" - , try $ caseInsensitiveString "cdecl;" - , try $ string "overload;" - , try $ string "export;" - , try $ string "varargs;" - , try (string "external") >> comments >> iD >> optional (string "name" >> comments >> stringLiteral pas)>> string ";" - ] >> comments + functionDecorator = do + d <- choice [ + try $ string "inline;" + , try $ caseInsensitiveString "cdecl;" + , try $ string "overload;" + , try $ string "export;" + , try $ string "varargs;" + , try (string "external") >> comments >> iD >> optional (string "name" >> comments >> stringLiteral pas)>> string ";" + ] + comments + return d program = do