language-webidl 0.1.3.0 → 0.1.3.1
raw patch · 3 files changed
+19/−17 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Language.WebIDL.Parser: data ParserState
+ Language.WebIDL.Parser: pArg :: MyParser (Argument Tag)
+ Language.WebIDL.Parser: pArgumentName :: MyParser ArgumentName
+ Language.WebIDL.Parser: pArgumentNameKeyword :: MyParser ArgumentNameKeyword
+ Language.WebIDL.Parser: pAttribute :: MyParser (Attribute Tag)
+ Language.WebIDL.Parser: pBool :: MyParser Bool
+ Language.WebIDL.Parser: pConst :: MyParser (Const Tag)
+ Language.WebIDL.Parser: pConstType :: MyParser ConstType
+ Language.WebIDL.Parser: pConstValue :: MyParser ConstValue
+ Language.WebIDL.Parser: pDef :: MyParser (Definition Tag)
+ Language.WebIDL.Parser: pDefault :: MyParser (Maybe Default)
+ Language.WebIDL.Parser: pDictionary :: MyParser (Dictionary Tag)
+ Language.WebIDL.Parser: pDictionaryMember :: MyParser (DictionaryMember Tag)
+ Language.WebIDL.Parser: pEnum :: MyParser (Enum Tag)
+ Language.WebIDL.Parser: pEnumValues :: MyParser [EnumValue]
+ Language.WebIDL.Parser: pException :: MyParser (Exception Tag)
+ Language.WebIDL.Parser: pExceptionMember :: MyParser (ExceptionMember Tag)
+ Language.WebIDL.Parser: pExtAttr :: MyParser (ExtendedAttribute Tag)
+ Language.WebIDL.Parser: pExtAttrs :: MyParser [ExtendedAttribute Tag]
+ Language.WebIDL.Parser: pFloatType :: MyParser FloatType
+ Language.WebIDL.Parser: pImplementsStatement :: MyParser (ImplementsStatement Tag)
+ Language.WebIDL.Parser: pInheritance :: MyParser (Maybe Ident)
+ Language.WebIDL.Parser: pIntegerType :: MyParser IntegerType
+ Language.WebIDL.Parser: pInterface :: MyParser (Interface Tag)
+ Language.WebIDL.Parser: pInterfaceMember :: MyParser (InterfaceMember Tag)
+ Language.WebIDL.Parser: pMaybeIdent :: MyParser (Maybe Ident)
+ Language.WebIDL.Parser: pNonAnyType :: MyParser NonAnyType
+ Language.WebIDL.Parser: pNull :: MyParser (Maybe Null)
+ Language.WebIDL.Parser: pOperation :: MyParser (Operation Tag)
+ Language.WebIDL.Parser: pPartial :: MyParser (Partial Tag)
+ Language.WebIDL.Parser: pPrimTy :: MyParser PrimitiveType
+ Language.WebIDL.Parser: pQualifier :: MyParser (Maybe Qualifier)
+ Language.WebIDL.Parser: pReturnType :: MyParser ReturnType
+ Language.WebIDL.Parser: pSingleType :: MyParser SingleType
+ Language.WebIDL.Parser: pSpecial :: MyParser Special
+ Language.WebIDL.Parser: pType :: MyParser Type
+ Language.WebIDL.Parser: pTypeSuffix :: MyParser TypeSuffix
+ Language.WebIDL.Parser: pTypedef :: MyParser (Typedef Tag)
+ Language.WebIDL.Parser: pUnionMemberType :: MyParser UnionMemberType
+ Language.WebIDL.Parser: pUnionType :: MyParser UnionType
+ Language.WebIDL.Parser: pUnsigned :: MyParser (Maybe Unsigned)
+ Language.WebIDL.Parser: tryParse :: MyParser a -> String -> Either ParseError a
+ Language.WebIDL.Parser: type MyParser = CharParser ParserState
Files
- language-webidl.cabal +2/−1
- src/Language/WebIDL/PPrint.hs +1/−1
- src/Language/WebIDL/Parser.hs +16/−15
language-webidl.cabal view
@@ -1,5 +1,5 @@ name: language-webidl-version: 0.1.3.0+version: 0.1.3.1 synopsis: Parser and Pretty Printer for WebIDL description: It is intended to replace the old package@@ -24,6 +24,7 @@ build-depends: base >=4.9 && <4.10, parsec, wl-pprint hs-source-dirs: src default-language: Haskell2010+ ghc-options: -Wall -fno-warn-missing-signatures -fno-warn-orphans test-suite language-webidl-test type: exitcode-stdio-1.0
src/Language/WebIDL/PPrint.hs view
@@ -129,7 +129,7 @@ pretty Unrestricted = text "unrestricted" instance Pretty IntegerType where- pretty (IntegerType mUns width) = prettyMaybe mUns pretty <> pretty width+ pretty (IntegerType mUns width_) = prettyMaybe mUns pretty <> pretty width_ instance Pretty IntegerWidth where pretty Short = text "short"
src/Language/WebIDL/Parser.hs view
@@ -4,15 +4,18 @@ -} module Language.WebIDL.Parser (- Tag(..), parseIDL-) where+ Tag(..), MyParser, ParserState, parseIDL, tryParse, pDef, pExtAttrs, pExtAttr, pPartial, pDictionary,+ pInterface, pException, pInheritance, pEnum, pEnumValues, pTypedef, pImplementsStatement,+ pDictionaryMember, pExceptionMember, pMaybeIdent, pInterfaceMember, pConst, pConstType,+ pAttribute, pOperation, pArg, pArgumentName, pArgumentNameKeyword, pDefault, pQualifier,+ pSpecial, pReturnType, pConstValue, pBool, pNull, pPrimTy, pIntegerType, pUnsigned, pFloatType,+ pType, pSingleType, pNonAnyType, pTypeSuffix, pUnionType, pUnionMemberType ) where import Language.WebIDL.AST import Prelude hiding (Enum) import Text.ParserCombinators.Parsec import Text.Parsec.Language (emptyDef) import Text.Parsec (modifyState, SourcePos, getPosition, getState, putState, sourceLine)-import Control.Monad (void) import qualified Text.Parsec.Token as Tok data ParserState = ParserState {@@ -38,12 +41,12 @@ type MyParser = CharParser ParserState -testParse :: MyParser a -> String -> Either ParseError a-testParse p = runParser p initState "webidl"+tryParse :: MyParser a -> String -> Either ParseError a+tryParse p = runParser p initState "webidl" -- | parse IDL source parseIDL :: String -> Either ParseError [Definition Tag]-parseIDL = testParse (pSpaces *> many1 (pDef <* pSpaces))+parseIDL = tryParse (pSpaces *> many1 (pDef <* pSpaces)) pDef :: MyParser (Definition Tag) pDef = try (DefInterface <$> pInterface)@@ -97,12 +100,12 @@ pTypedef :: MyParser (Typedef Tag) pTypedef = do tag <- getTag- string "typedef"+ _ <- string "typedef" pSpaces ty <- try pType pSpaces ident <- pIdent- semi+ _ <- semi return (Typedef tag ty ident) pImplementsStatement :: MyParser (ImplementsStatement Tag)@@ -224,12 +227,13 @@ pIntegerType :: MyParser IntegerType pIntegerType = IntegerType <$> pUnsigned <* pSpaces <*> pIntegerWidth+ where+ pIntegerWidth = string "short" *> return Short+ <|> Long . length <$> many1 (try (string "long" <* pSpaces)) pUnsigned :: MyParser (Maybe Unsigned) pUnsigned = optionMaybe (string "unsigned" *> return Unsigned) -pIntegerWidth = string "short" *> return Short- <|> Long . length <$> many1 (try (string "long" <* pSpaces)) pFloatType :: MyParser FloatType pFloatType = try (TyFloat <$> pModifier Unrestricted "unrestricted" <* spaces <* string "float")@@ -271,9 +275,6 @@ brackets = Tok.brackets lexer braces = Tok.braces lexer angles = Tok.angles lexer-reserved = Tok.reserved lexer-reservedOp = Tok.reservedOp lexer-whiteSpace = Tok.whiteSpace lexer pIdent = Ident <$> Tok.identifier lexer pInt = Tok.integer lexer pFloat = Tok.float lexer@@ -287,12 +288,12 @@ pComment = try pLineComment <|> pBlockComment pLineComment = do- string "//"+ _ <- string "//" comment <- manyTill anyChar (try newline) modifyState (\ps -> ParserState { _comments = _comments ps ++ [comment]}) pBlockComment = do- string "/*"+ _ <- string "/*" comment <- manyTill anyChar (try (string "*/")) modifyState (\ps -> ParserState { _comments = _comments ps ++ lines comment})