packages feed

language-webidl 0.1.0.0 → 0.1.1.0

raw patch · 7 files changed

+657/−645 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- AST: ArgAttribute :: ArgumentNameKeyword
- AST: ArgCallback :: ArgumentNameKeyword
- AST: ArgConst :: ArgumentNameKeyword
- AST: ArgCreator :: ArgumentNameKeyword
- AST: ArgDeleter :: ArgumentNameKeyword
- AST: ArgDictionary :: ArgumentNameKeyword
- AST: ArgEnum :: ArgumentNameKeyword
- AST: ArgException :: ArgumentNameKeyword
- AST: ArgGetter :: ArgumentNameKeyword
- AST: ArgIdent :: Ident -> ArgumentName
- AST: ArgImplements :: ArgumentNameKeyword
- AST: ArgInherit :: ArgumentNameKeyword
- AST: ArgInterface :: ArgumentNameKeyword
- AST: ArgKey :: ArgumentNameKeyword -> ArgumentName
- AST: ArgLegacycaller :: ArgumentNameKeyword
- AST: ArgNonOpt :: Type -> (Maybe Ellipsis) -> ArgumentName -> Argument
- AST: ArgOptional :: Type -> ArgumentName -> Default -> Argument
- AST: ArgPartial :: ArgumentNameKeyword
- AST: ArgSetter :: ArgumentNameKeyword
- AST: ArgStatic :: ArgumentNameKeyword
- AST: ArgStringifier :: ArgumentNameKeyword
- AST: ArgTypedef :: ArgumentNameKeyword
- AST: ArgUnrestricted :: ArgumentNameKeyword
- AST: Attribute :: a -> (Maybe Inherit) -> (Maybe ReadOnly) -> Type -> Ident -> Attribute a
- AST: Boolean :: PrimitiveType
- AST: Byte :: PrimitiveType
- AST: Ccreator :: Special
- AST: Const :: a -> ConstType -> Ident -> ConstValue -> Const a
- AST: ConstBooleanLiteral :: Bool -> ConstValue
- AST: ConstFloatLiteral :: Double -> ConstValue
- AST: ConstIdent :: Ident -> (Maybe Null) -> ConstType
- AST: ConstInteger :: Integer -> ConstValue
- AST: ConstNull :: ConstValue
- AST: ConstPrim :: PrimitiveType -> (Maybe Null) -> ConstType
- AST: DefDictionary :: (Dictionary a) -> Definition a
- AST: DefEnum :: (Enum a) -> Definition a
- AST: DefException :: (Exception a) -> Definition a
- AST: DefImplementsStatement :: (ImplementsStatement a) -> Definition a
- AST: DefInterface :: (Interface a) -> Definition a
- AST: DefPartial :: (Partial a) -> Definition a
- AST: DefTypedef :: (Typedef a) -> Definition a
- AST: DefaultString :: String -> Default
- AST: DefaultValue :: ConstValue -> Default
- AST: Deleter :: Special
- AST: Dictionary :: a -> Ident -> (Maybe Ident) -> [DictionaryMember a] -> Dictionary a
- AST: DictionaryMember :: a -> Type -> Ident -> (Maybe Default) -> DictionaryMember a
- AST: Ellipsis :: Ellipsis
- AST: Enum :: a -> Ident -> [EnumValue] -> Enum a
- AST: EnumValue :: String -> EnumValue
- AST: ExConst :: a -> (Const a) -> ExceptionMember a
- AST: ExField :: a -> Type -> Ident -> ExceptionMember a
- AST: Exception :: a -> Ident -> (Maybe Ident) -> [ExceptionMember a] -> Exception a
- AST: Getter :: Special
- AST: IMemAttribute :: (Attribute a) -> InterfaceMember a
- AST: IMemConst :: (Const a) -> InterfaceMember a
- AST: IMemOperation :: (Operation a) -> InterfaceMember a
- AST: Ident :: String -> Ident
- AST: ImplementsStatement :: a -> Ident -> Ident -> ImplementsStatement a
- AST: Inherit :: Inherit
- AST: IntegerType :: (Maybe Unsigned) -> IntegerWidth -> IntegerType
- AST: Interface :: a -> Ident -> (Maybe Ident) -> [InterfaceMember a] -> Interface a
- AST: Legacycaller :: Special
- AST: Long :: Int -> IntegerWidth
- AST: Null :: Null
- AST: Octet :: PrimitiveType
- AST: Operation :: a -> (Maybe Qualifier) -> ReturnType -> (Maybe Ident) -> [Argument] -> Operation a
- AST: PartialDictionary :: a -> Ident -> [DictionaryMember a] -> Partial a
- AST: PartialInterface :: a -> Ident -> [InterfaceMember a] -> Partial a
- AST: PrimFloatType :: FloatType -> PrimitiveType
- AST: PrimIntegerType :: IntegerType -> PrimitiveType
- AST: QSpecials :: [Special] -> Qualifier
- AST: QuaStatic :: Qualifier
- AST: ReadOnly :: ReadOnly
- AST: RetType :: Type -> ReturnType
- AST: RetVoid :: ReturnType
- AST: STyAny :: TypeSuffix -> SingleType
- AST: STyNonAny :: NonAnyType -> SingleType
- AST: Setter :: Special
- AST: Short :: IntegerWidth
- AST: TyDOMString :: TypeSuffix -> NonAnyType
- AST: TyDate :: TypeSuffix -> NonAnyType
- AST: TyDouble :: (Maybe Unrestricted) -> FloatType
- AST: TyFloat :: (Maybe Unrestricted) -> FloatType
- AST: TyIdent :: Ident -> TypeSuffix -> NonAnyType
- AST: TyObject :: TypeSuffix -> NonAnyType
- AST: TyPrim :: PrimitiveType -> TypeSuffix -> NonAnyType
- AST: TySequence :: Type -> (Maybe Null) -> NonAnyType
- AST: TySingleType :: SingleType -> Type
- AST: TyUnionType :: UnionType -> TypeSuffix -> Type
- AST: TypeSuffixArray :: TypeSuffix
- AST: TypeSuffixNone :: TypeSuffix
- AST: TypeSuffixNullable :: TypeSuffix
- AST: Typedef :: a -> Type -> Ident -> Typedef a
- AST: UnionTy :: UnionType -> TypeSuffix -> UnionMemberType
- AST: UnionTyAny :: TypeSuffix -> UnionMemberType
- AST: UnionTyNonAny :: NonAnyType -> UnionMemberType
- AST: Unrestricted :: Unrestricted
- AST: Unsigned :: Unsigned
- AST: data Argument
- AST: data ArgumentName
- AST: data ArgumentNameKeyword
- AST: data Attribute a
- AST: data Const a
- AST: data ConstType
- AST: data ConstValue
- AST: data Default
- AST: data Definition a
- AST: data Dictionary a
- AST: data DictionaryMember a
- AST: data Ellipsis
- AST: data Enum a
- AST: data Exception a
- AST: data ExceptionMember a
- AST: data FloatType
- AST: data ImplementsStatement a
- AST: data Inherit
- AST: data IntegerType
- AST: data IntegerWidth
- AST: data Interface a
- AST: data InterfaceMember a
- AST: data NonAnyType
- AST: data Null
- AST: data Operation a
- AST: data Partial a
- AST: data PrimitiveType
- AST: data Qualifier
- AST: data ReadOnly
- AST: data ReturnType
- AST: data SingleType
- AST: data Special
- AST: data Type
- AST: data TypeSuffix
- AST: data Typedef a
- AST: data UnionMemberType
- AST: data Unrestricted
- AST: data Unsigned
- AST: instance GHC.Show.Show AST.Argument
- AST: instance GHC.Show.Show AST.ArgumentName
- AST: instance GHC.Show.Show AST.ArgumentNameKeyword
- AST: instance GHC.Show.Show AST.ConstType
- AST: instance GHC.Show.Show AST.ConstValue
- AST: instance GHC.Show.Show AST.Default
- AST: instance GHC.Show.Show AST.Ellipsis
- AST: instance GHC.Show.Show AST.EnumValue
- AST: instance GHC.Show.Show AST.FloatType
- AST: instance GHC.Show.Show AST.Ident
- AST: instance GHC.Show.Show AST.Inherit
- AST: instance GHC.Show.Show AST.IntegerType
- AST: instance GHC.Show.Show AST.IntegerWidth
- AST: instance GHC.Show.Show AST.NonAnyType
- AST: instance GHC.Show.Show AST.Null
- AST: instance GHC.Show.Show AST.PrimitiveType
- AST: instance GHC.Show.Show AST.Qualifier
- AST: instance GHC.Show.Show AST.ReadOnly
- AST: instance GHC.Show.Show AST.ReturnType
- AST: instance GHC.Show.Show AST.SingleType
- AST: instance GHC.Show.Show AST.Special
- AST: instance GHC.Show.Show AST.Type
- AST: instance GHC.Show.Show AST.TypeSuffix
- AST: instance GHC.Show.Show AST.UnionMemberType
- AST: instance GHC.Show.Show AST.Unrestricted
- AST: instance GHC.Show.Show AST.Unsigned
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Attribute a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Const a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Definition a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Dictionary a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.DictionaryMember a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Enum a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Exception a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.ExceptionMember a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.ImplementsStatement a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Interface a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.InterfaceMember a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Operation a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Partial a)
- AST: instance GHC.Show.Show a => GHC.Show.Show (AST.Typedef a)
- AST: newtype EnumValue
- AST: newtype Ident
- AST: type UnionType = [UnionMemberType]
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Attribute a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Const a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Definition a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Dictionary a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.DictionaryMember a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Enum a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Exception a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.ExceptionMember a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.ImplementsStatement a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Interface a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.InterfaceMember a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Operation a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Partial a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty (AST.Typedef a)
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Argument
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.ArgumentName
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.ArgumentNameKeyword
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.ConstType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.ConstValue
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Default
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.EnumValue
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.FloatType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Ident
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Inherit
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.IntegerType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.IntegerWidth
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.NonAnyType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Null
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.PrimitiveType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Qualifier
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.ReadOnly
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.ReturnType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.SingleType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Special
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Type
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.TypeSuffix
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.UnionMemberType
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Unrestricted
- PPrint: instance Text.PrettyPrint.Leijen.Pretty AST.Unsigned
- PPrint: prettyDefault :: Pretty a => a -> Doc
- PPrint: prettyInherit :: Pretty a => Maybe a -> Doc
- PPrint: prettyMaybe :: Maybe t -> (t -> Doc) -> Doc
- Parser: ParserState :: [String] -> ParserState
- Parser: Tagging :: [String] -> SourcePos -> Tagging
- Parser: [_comment] :: Tagging -> [String]
- Parser: [_comments] :: ParserState -> [String]
- Parser: [_sourcePos] :: Tagging -> SourcePos
- Parser: angles :: ParsecT String u Identity a -> ParsecT String u Identity a
- Parser: braces :: ParsecT String u Identity a -> ParsecT String u Identity a
- Parser: data ParserState
- Parser: data Tagging
- Parser: getTag :: MyParser Tagging
- Parser: initState :: ParserState
- Parser: instance GHC.Show.Show Parser.Tagging
- Parser: lexer :: GenTokenParser String u Identity
- Parser: pArg :: MyParser Argument
- Parser: pArgumentName :: MyParser ArgumentName
- Parser: pArgumentNameKeyword :: MyParser ArgumentNameKeyword
- Parser: pAttribute :: MyParser (Attribute Tagging)
- Parser: pBlockComment :: ParsecT [Char] ParserState Identity ()
- Parser: pBool :: MyParser Bool
- Parser: pComment :: ParsecT [Char] ParserState Identity ()
- Parser: pConst :: MyParser (Const Tagging)
- Parser: pConstType :: MyParser ConstType
- Parser: pConstValue :: MyParser ConstValue
- Parser: pDef :: MyParser (Definition Tagging)
- Parser: pDefault :: MyParser Default
- Parser: pDictionary :: MyParser (Dictionary Tagging)
- Parser: pDictionaryMember :: MyParser (DictionaryMember Tagging)
- Parser: pEnum :: MyParser (Enum Tagging)
- Parser: pEnumValues :: MyParser [EnumValue]
- Parser: pEq :: ParsecT [Char] u Identity Char
- Parser: pException :: MyParser (Exception Tagging)
- Parser: pExceptionMember :: MyParser (ExceptionMember Tagging)
- Parser: pExtAttrs :: MyParser ()
- Parser: pFloat :: ParsecT String u Identity Double
- Parser: pFloatType :: MyParser FloatType
- Parser: pIdent :: ParsecT String u Identity Ident
- Parser: pImplementsStatement :: MyParser (ImplementsStatement Tagging)
- Parser: pInheritance :: MyParser (Maybe Ident)
- Parser: pInt :: ParsecT String u Identity Integer
- Parser: pIntegerType :: MyParser IntegerType
- Parser: pIntegerWidth :: ParsecT [Char] ParserState Identity IntegerWidth
- Parser: pInterface :: MyParser (Interface Tagging)
- Parser: pInterfaceMember :: MyParser (InterfaceMember Tagging)
- Parser: pLineComment :: ParsecT [Char] ParserState Identity ()
- Parser: pMaybeIdent :: MyParser (Maybe Ident)
- Parser: pModifier :: a -> String -> MyParser (Maybe a)
- Parser: pNonAnyType :: MyParser NonAnyType
- Parser: pNull :: MyParser (Maybe Null)
- Parser: pOperation :: MyParser (Operation Tagging)
- Parser: pPartial :: MyParser (Partial Tagging)
- Parser: pPrimTy :: MyParser PrimitiveType
- Parser: pQualifier :: MyParser (Maybe Qualifier)
- Parser: pReturnType :: MyParser ReturnType
- Parser: pSingleType :: MyParser SingleType
- Parser: pSpaces :: ParsecT [Char] ParserState Identity ()
- Parser: pSpecial :: MyParser Special
- Parser: pType :: MyParser Type
- Parser: pTypeSuffix :: MyParser TypeSuffix
- Parser: pTypedef :: MyParser (Typedef Tagging)
- Parser: pUnionMemberType :: MyParser UnionMemberType
- Parser: pUnionType :: MyParser UnionType
- Parser: pUnsigned :: MyParser (Maybe Unsigned)
- Parser: parens :: ParsecT String u Identity a -> ParsecT String u Identity a
- Parser: parseIDL :: String -> Either ParseError [Definition Tagging]
- Parser: reserved :: String -> ParsecT String u Identity ()
- Parser: reservedOp :: String -> ParsecT String u Identity ()
- Parser: semi :: ParsecT String u Identity String
- Parser: stringLit :: ParsecT String u Identity String
- Parser: testParse :: MyParser a -> String -> Either ParseError a
- Parser: type MyParser = CharParser ParserState
- Parser: whiteSpace :: ParsecT String u Identity ()
+ Language.WebIDL.AST: ArgAttribute :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgCallback :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgConst :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgCreator :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgDeleter :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgDictionary :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgEnum :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgException :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgGetter :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgIdent :: Ident -> ArgumentName
+ Language.WebIDL.AST: ArgImplements :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgInherit :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgInterface :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgKey :: ArgumentNameKeyword -> ArgumentName
+ Language.WebIDL.AST: ArgLegacycaller :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgNonOpt :: Type -> (Maybe Ellipsis) -> ArgumentName -> Argument
+ Language.WebIDL.AST: ArgOptional :: Type -> ArgumentName -> Default -> Argument
+ Language.WebIDL.AST: ArgPartial :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgSetter :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgStatic :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgStringifier :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgTypedef :: ArgumentNameKeyword
+ Language.WebIDL.AST: ArgUnrestricted :: ArgumentNameKeyword
+ Language.WebIDL.AST: Attribute :: a -> (Maybe Inherit) -> (Maybe ReadOnly) -> Type -> Ident -> Attribute a
+ Language.WebIDL.AST: Boolean :: PrimitiveType
+ Language.WebIDL.AST: Byte :: PrimitiveType
+ Language.WebIDL.AST: Ccreator :: Special
+ Language.WebIDL.AST: Const :: a -> ConstType -> Ident -> ConstValue -> Const a
+ Language.WebIDL.AST: ConstBooleanLiteral :: Bool -> ConstValue
+ Language.WebIDL.AST: ConstFloatLiteral :: Double -> ConstValue
+ Language.WebIDL.AST: ConstIdent :: Ident -> (Maybe Null) -> ConstType
+ Language.WebIDL.AST: ConstInteger :: Integer -> ConstValue
+ Language.WebIDL.AST: ConstNull :: ConstValue
+ Language.WebIDL.AST: ConstPrim :: PrimitiveType -> (Maybe Null) -> ConstType
+ Language.WebIDL.AST: DefDictionary :: (Dictionary a) -> Definition a
+ Language.WebIDL.AST: DefEnum :: (Enum a) -> Definition a
+ Language.WebIDL.AST: DefException :: (Exception a) -> Definition a
+ Language.WebIDL.AST: DefImplementsStatement :: (ImplementsStatement a) -> Definition a
+ Language.WebIDL.AST: DefInterface :: (Interface a) -> Definition a
+ Language.WebIDL.AST: DefPartial :: (Partial a) -> Definition a
+ Language.WebIDL.AST: DefTypedef :: (Typedef a) -> Definition a
+ Language.WebIDL.AST: DefaultString :: String -> Default
+ Language.WebIDL.AST: DefaultValue :: ConstValue -> Default
+ Language.WebIDL.AST: Deleter :: Special
+ Language.WebIDL.AST: Dictionary :: a -> Ident -> (Maybe Ident) -> [DictionaryMember a] -> Dictionary a
+ Language.WebIDL.AST: DictionaryMember :: a -> Type -> Ident -> (Maybe Default) -> DictionaryMember a
+ Language.WebIDL.AST: Ellipsis :: Ellipsis
+ Language.WebIDL.AST: Enum :: a -> Ident -> [EnumValue] -> Enum a
+ Language.WebIDL.AST: EnumValue :: String -> EnumValue
+ Language.WebIDL.AST: ExConst :: a -> (Const a) -> ExceptionMember a
+ Language.WebIDL.AST: ExField :: a -> Type -> Ident -> ExceptionMember a
+ Language.WebIDL.AST: Exception :: a -> Ident -> (Maybe Ident) -> [ExceptionMember a] -> Exception a
+ Language.WebIDL.AST: Getter :: Special
+ Language.WebIDL.AST: IMemAttribute :: (Attribute a) -> InterfaceMember a
+ Language.WebIDL.AST: IMemConst :: (Const a) -> InterfaceMember a
+ Language.WebIDL.AST: IMemOperation :: (Operation a) -> InterfaceMember a
+ Language.WebIDL.AST: Ident :: String -> Ident
+ Language.WebIDL.AST: ImplementsStatement :: a -> Ident -> Ident -> ImplementsStatement a
+ Language.WebIDL.AST: Inherit :: Inherit
+ Language.WebIDL.AST: IntegerType :: (Maybe Unsigned) -> IntegerWidth -> IntegerType
+ Language.WebIDL.AST: Interface :: a -> Ident -> (Maybe Ident) -> [InterfaceMember a] -> Interface a
+ Language.WebIDL.AST: Legacycaller :: Special
+ Language.WebIDL.AST: Long :: Int -> IntegerWidth
+ Language.WebIDL.AST: Null :: Null
+ Language.WebIDL.AST: Octet :: PrimitiveType
+ Language.WebIDL.AST: Operation :: a -> (Maybe Qualifier) -> ReturnType -> (Maybe Ident) -> [Argument] -> Operation a
+ Language.WebIDL.AST: PartialDictionary :: a -> Ident -> [DictionaryMember a] -> Partial a
+ Language.WebIDL.AST: PartialInterface :: a -> Ident -> [InterfaceMember a] -> Partial a
+ Language.WebIDL.AST: PrimFloatType :: FloatType -> PrimitiveType
+ Language.WebIDL.AST: PrimIntegerType :: IntegerType -> PrimitiveType
+ Language.WebIDL.AST: QSpecials :: [Special] -> Qualifier
+ Language.WebIDL.AST: QuaStatic :: Qualifier
+ Language.WebIDL.AST: ReadOnly :: ReadOnly
+ Language.WebIDL.AST: RetType :: Type -> ReturnType
+ Language.WebIDL.AST: RetVoid :: ReturnType
+ Language.WebIDL.AST: STyAny :: TypeSuffix -> SingleType
+ Language.WebIDL.AST: STyNonAny :: NonAnyType -> SingleType
+ Language.WebIDL.AST: Setter :: Special
+ Language.WebIDL.AST: Short :: IntegerWidth
+ Language.WebIDL.AST: TyDOMString :: TypeSuffix -> NonAnyType
+ Language.WebIDL.AST: TyDate :: TypeSuffix -> NonAnyType
+ Language.WebIDL.AST: TyDouble :: (Maybe Unrestricted) -> FloatType
+ Language.WebIDL.AST: TyFloat :: (Maybe Unrestricted) -> FloatType
+ Language.WebIDL.AST: TyIdent :: Ident -> TypeSuffix -> NonAnyType
+ Language.WebIDL.AST: TyObject :: TypeSuffix -> NonAnyType
+ Language.WebIDL.AST: TyPrim :: PrimitiveType -> TypeSuffix -> NonAnyType
+ Language.WebIDL.AST: TySequence :: Type -> (Maybe Null) -> NonAnyType
+ Language.WebIDL.AST: TySingleType :: SingleType -> Type
+ Language.WebIDL.AST: TyUnionType :: UnionType -> TypeSuffix -> Type
+ Language.WebIDL.AST: TypeSuffixArray :: TypeSuffix
+ Language.WebIDL.AST: TypeSuffixNone :: TypeSuffix
+ Language.WebIDL.AST: TypeSuffixNullable :: TypeSuffix
+ Language.WebIDL.AST: Typedef :: a -> Type -> Ident -> Typedef a
+ Language.WebIDL.AST: UnionTy :: UnionType -> TypeSuffix -> UnionMemberType
+ Language.WebIDL.AST: UnionTyAny :: TypeSuffix -> UnionMemberType
+ Language.WebIDL.AST: UnionTyNonAny :: NonAnyType -> UnionMemberType
+ Language.WebIDL.AST: Unrestricted :: Unrestricted
+ Language.WebIDL.AST: Unsigned :: Unsigned
+ Language.WebIDL.AST: data Argument
+ Language.WebIDL.AST: data ArgumentName
+ Language.WebIDL.AST: data ArgumentNameKeyword
+ Language.WebIDL.AST: data Attribute a
+ Language.WebIDL.AST: data Const a
+ Language.WebIDL.AST: data ConstType
+ Language.WebIDL.AST: data ConstValue
+ Language.WebIDL.AST: data Default
+ Language.WebIDL.AST: data Definition a
+ Language.WebIDL.AST: data Dictionary a
+ Language.WebIDL.AST: data DictionaryMember a
+ Language.WebIDL.AST: data Ellipsis
+ Language.WebIDL.AST: data Enum a
+ Language.WebIDL.AST: data Exception a
+ Language.WebIDL.AST: data ExceptionMember a
+ Language.WebIDL.AST: data FloatType
+ Language.WebIDL.AST: data ImplementsStatement a
+ Language.WebIDL.AST: data Inherit
+ Language.WebIDL.AST: data IntegerType
+ Language.WebIDL.AST: data IntegerWidth
+ Language.WebIDL.AST: data Interface a
+ Language.WebIDL.AST: data InterfaceMember a
+ Language.WebIDL.AST: data NonAnyType
+ Language.WebIDL.AST: data Null
+ Language.WebIDL.AST: data Operation a
+ Language.WebIDL.AST: data Partial a
+ Language.WebIDL.AST: data PrimitiveType
+ Language.WebIDL.AST: data Qualifier
+ Language.WebIDL.AST: data ReadOnly
+ Language.WebIDL.AST: data ReturnType
+ Language.WebIDL.AST: data SingleType
+ Language.WebIDL.AST: data Special
+ Language.WebIDL.AST: data Type
+ Language.WebIDL.AST: data TypeSuffix
+ Language.WebIDL.AST: data Typedef a
+ Language.WebIDL.AST: data UnionMemberType
+ Language.WebIDL.AST: data Unrestricted
+ Language.WebIDL.AST: data Unsigned
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Argument
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.ArgumentName
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.ArgumentNameKeyword
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.ConstType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.ConstValue
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Default
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Ellipsis
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.EnumValue
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.FloatType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Ident
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Inherit
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.IntegerType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.IntegerWidth
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.NonAnyType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Null
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.PrimitiveType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Qualifier
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.ReadOnly
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.ReturnType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.SingleType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Special
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Type
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.TypeSuffix
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.UnionMemberType
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Unrestricted
+ Language.WebIDL.AST: instance GHC.Classes.Eq Language.WebIDL.AST.Unsigned
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Attribute a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Const a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Definition a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Dictionary a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.DictionaryMember a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Enum a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Exception a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.ExceptionMember a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.ImplementsStatement a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Interface a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.InterfaceMember a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Operation a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Partial a)
+ Language.WebIDL.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.WebIDL.AST.Typedef a)
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Argument
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.ArgumentName
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.ArgumentNameKeyword
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.ConstType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.ConstValue
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Default
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Ellipsis
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.EnumValue
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.FloatType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Ident
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Inherit
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.IntegerType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.IntegerWidth
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.NonAnyType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Null
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.PrimitiveType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Qualifier
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.ReadOnly
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.ReturnType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.SingleType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Special
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Type
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.TypeSuffix
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.UnionMemberType
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Unrestricted
+ Language.WebIDL.AST: instance GHC.Show.Show Language.WebIDL.AST.Unsigned
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Attribute a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Const a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Definition a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Dictionary a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.DictionaryMember a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Enum a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Exception a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.ExceptionMember a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.ImplementsStatement a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Interface a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.InterfaceMember a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Operation a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Partial a)
+ Language.WebIDL.AST: instance GHC.Show.Show a => GHC.Show.Show (Language.WebIDL.AST.Typedef a)
+ Language.WebIDL.AST: newtype EnumValue
+ Language.WebIDL.AST: newtype Ident
+ Language.WebIDL.AST: type UnionType = [UnionMemberType]
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Attribute a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Const a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Definition a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Dictionary a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.DictionaryMember a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Enum a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Exception a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.ExceptionMember a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.ImplementsStatement a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Interface a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.InterfaceMember a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Operation a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Partial a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty (Language.WebIDL.AST.Typedef a)
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Argument
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.ArgumentName
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.ArgumentNameKeyword
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.ConstType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.ConstValue
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Default
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.EnumValue
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.FloatType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Ident
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Inherit
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.IntegerType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.IntegerWidth
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.NonAnyType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Null
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.PrimitiveType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Qualifier
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.ReadOnly
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.ReturnType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.SingleType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Special
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Type
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.TypeSuffix
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.UnionMemberType
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Unrestricted
+ Language.WebIDL.PPrint: instance Text.PrettyPrint.Leijen.Pretty Language.WebIDL.AST.Unsigned
+ Language.WebIDL.PPrint: prettyDefault :: Pretty a => a -> Doc
+ Language.WebIDL.PPrint: prettyInherit :: Pretty a => Maybe a -> Doc
+ Language.WebIDL.PPrint: prettyMaybe :: Maybe t -> (t -> Doc) -> Doc
+ Language.WebIDL.PPrint: printDef :: Definition a -> String
+ Language.WebIDL.PPrint: scope :: Pretty a => [a] -> Doc
+ Language.WebIDL.Parser: ParserState :: [String] -> ParserState
+ Language.WebIDL.Parser: Tagging :: [String] -> SourcePos -> Tagging
+ Language.WebIDL.Parser: [_comment] :: Tagging -> [String]
+ Language.WebIDL.Parser: [_comments] :: ParserState -> [String]
+ Language.WebIDL.Parser: [_sourcePos] :: Tagging -> SourcePos
+ Language.WebIDL.Parser: angles :: ParsecT String u Identity a -> ParsecT String u Identity a
+ Language.WebIDL.Parser: braces :: ParsecT String u Identity a -> ParsecT String u Identity a
+ Language.WebIDL.Parser: data ParserState
+ Language.WebIDL.Parser: data Tagging
+ Language.WebIDL.Parser: getTag :: MyParser Tagging
+ Language.WebIDL.Parser: initState :: ParserState
+ Language.WebIDL.Parser: instance GHC.Classes.Eq Language.WebIDL.Parser.Tagging
+ Language.WebIDL.Parser: instance GHC.Show.Show Language.WebIDL.Parser.Tagging
+ Language.WebIDL.Parser: lexer :: GenTokenParser String u Identity
+ Language.WebIDL.Parser: pArg :: MyParser Argument
+ Language.WebIDL.Parser: pArgumentName :: MyParser ArgumentName
+ Language.WebIDL.Parser: pArgumentNameKeyword :: MyParser ArgumentNameKeyword
+ Language.WebIDL.Parser: pAttribute :: MyParser (Attribute Tagging)
+ Language.WebIDL.Parser: pBlockComment :: ParsecT [Char] ParserState Identity ()
+ Language.WebIDL.Parser: pBool :: MyParser Bool
+ Language.WebIDL.Parser: pComment :: ParsecT [Char] ParserState Identity ()
+ Language.WebIDL.Parser: pConst :: MyParser (Const Tagging)
+ Language.WebIDL.Parser: pConstType :: MyParser ConstType
+ Language.WebIDL.Parser: pConstValue :: MyParser ConstValue
+ Language.WebIDL.Parser: pDef :: MyParser (Definition Tagging)
+ Language.WebIDL.Parser: pDefault :: MyParser Default
+ Language.WebIDL.Parser: pDictionary :: MyParser (Dictionary Tagging)
+ Language.WebIDL.Parser: pDictionaryMember :: MyParser (DictionaryMember Tagging)
+ Language.WebIDL.Parser: pEnum :: MyParser (Enum Tagging)
+ Language.WebIDL.Parser: pEnumValues :: MyParser [EnumValue]
+ Language.WebIDL.Parser: pEq :: ParsecT [Char] u Identity Char
+ Language.WebIDL.Parser: pException :: MyParser (Exception Tagging)
+ Language.WebIDL.Parser: pExceptionMember :: MyParser (ExceptionMember Tagging)
+ Language.WebIDL.Parser: pExtAttrs :: MyParser ()
+ Language.WebIDL.Parser: pFloat :: ParsecT String u Identity Double
+ Language.WebIDL.Parser: pFloatType :: MyParser FloatType
+ Language.WebIDL.Parser: pIdent :: ParsecT String u Identity Ident
+ Language.WebIDL.Parser: pImplementsStatement :: MyParser (ImplementsStatement Tagging)
+ Language.WebIDL.Parser: pInheritance :: MyParser (Maybe Ident)
+ Language.WebIDL.Parser: pInt :: ParsecT String u Identity Integer
+ Language.WebIDL.Parser: pIntegerType :: MyParser IntegerType
+ Language.WebIDL.Parser: pIntegerWidth :: ParsecT [Char] ParserState Identity IntegerWidth
+ Language.WebIDL.Parser: pInterface :: MyParser (Interface Tagging)
+ Language.WebIDL.Parser: pInterfaceMember :: MyParser (InterfaceMember Tagging)
+ Language.WebIDL.Parser: pLineComment :: ParsecT [Char] ParserState Identity ()
+ Language.WebIDL.Parser: pMaybeIdent :: MyParser (Maybe Ident)
+ Language.WebIDL.Parser: pModifier :: a -> String -> MyParser (Maybe a)
+ Language.WebIDL.Parser: pNonAnyType :: MyParser NonAnyType
+ Language.WebIDL.Parser: pNull :: MyParser (Maybe Null)
+ Language.WebIDL.Parser: pOperation :: MyParser (Operation Tagging)
+ Language.WebIDL.Parser: pPartial :: MyParser (Partial Tagging)
+ 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: pSpaces :: ParsecT [Char] ParserState Identity ()
+ Language.WebIDL.Parser: pSpecial :: MyParser Special
+ Language.WebIDL.Parser: pType :: MyParser Type
+ Language.WebIDL.Parser: pTypeSuffix :: MyParser TypeSuffix
+ Language.WebIDL.Parser: pTypedef :: MyParser (Typedef Tagging)
+ Language.WebIDL.Parser: pUnionMemberType :: MyParser UnionMemberType
+ Language.WebIDL.Parser: pUnionType :: MyParser UnionType
+ Language.WebIDL.Parser: pUnsigned :: MyParser (Maybe Unsigned)
+ Language.WebIDL.Parser: parens :: ParsecT String u Identity a -> ParsecT String u Identity a
+ Language.WebIDL.Parser: parseIDL :: String -> Either ParseError [Definition Tagging]
+ Language.WebIDL.Parser: reserved :: String -> ParsecT String u Identity ()
+ Language.WebIDL.Parser: reservedOp :: String -> ParsecT String u Identity ()
+ Language.WebIDL.Parser: semi :: ParsecT String u Identity String
+ Language.WebIDL.Parser: stringLit :: ParsecT String u Identity String
+ Language.WebIDL.Parser: testParse :: MyParser a -> String -> Either ParseError a
+ Language.WebIDL.Parser: type MyParser = CharParser ParserState
+ Language.WebIDL.Parser: whiteSpace :: ParsecT String u Identity ()

Files

language-webidl.cabal view
@@ -1,5 +1,5 @@ name:                language-webidl-version:             0.1.0.0+version:             0.1.1.0 synopsis:           Parser and Pretty Printer for WebIDL description:     It is intended to replace this package:@@ -18,7 +18,9 @@   location: https://github.com/izgzhen/language-webidl-hs  library-  exposed-modules:     AST, Parser, PPrint+  exposed-modules:     Language.WebIDL.AST+                       Language.WebIDL.Parser+                       Language.WebIDL.PPrint   build-depends:       base >=4.8 && <4.9, parsec, wl-pprint   hs-source-dirs:      src   default-language:    Haskell2010
− src/AST.hs
@@ -1,159 +0,0 @@-module AST where--import Prelude hiding (Enum)---- Definition-data Definition a = DefInterface (Interface a)-                  | DefPartial (Partial a)-                  | DefDictionary (Dictionary a)-                  | DefException (Exception a)-                  | DefEnum (Enum a)-                  | DefTypedef (Typedef a)-                  | DefImplementsStatement (ImplementsStatement a)-                  deriving (Show)---- Interface-data Interface a = Interface a Ident (Maybe Ident) [InterfaceMember a] deriving (Show)---- Partial-data Partial a = PartialInterface a Ident [InterfaceMember a]-               | PartialDictionary a Ident [DictionaryMember a]-               deriving (Show)---- Dictionary-data Dictionary a = Dictionary a Ident (Maybe Ident) [DictionaryMember a] deriving (Show)---- Exception-data Exception a = Exception a Ident (Maybe Ident) [ExceptionMember a] deriving (Show)---- Enum-data Enum a = Enum a Ident [EnumValue] deriving (Show)---- Typedef-data Typedef a = Typedef a Type Ident deriving (Show)---- Implements-data ImplementsStatement a = ImplementsStatement a Ident Ident deriving (Show)---- Fields-data InterfaceMember a = IMemConst (Const a)-                       | IMemAttribute (Attribute a)-                       | IMemOperation (Operation a)-                       deriving (Show)--data DictionaryMember a = DictionaryMember a Type Ident (Maybe Default) deriving (Show)--data ExceptionMember a = ExConst a (Const a)-                       | ExField a Type Ident-                       deriving (Show)--data Attribute a = Attribute a (Maybe Inherit) (Maybe ReadOnly) Type Ident deriving (Show)--data Operation a = Operation a (Maybe Qualifier) ReturnType (Maybe Ident) [Argument] deriving (Show)--data Argument = ArgOptional Type ArgumentName Default-              | ArgNonOpt Type (Maybe Ellipsis) ArgumentName-              deriving (Show)--newtype EnumValue = EnumValue String deriving (Show)--data ArgumentName = ArgKey ArgumentNameKeyword-                  | ArgIdent Ident-                  deriving (Show)---- Values-data Const a = Const a ConstType Ident ConstValue deriving (Show)--data Default = DefaultValue ConstValue-             | DefaultString String-             deriving (Show)--data ConstValue = ConstBooleanLiteral Bool-                | ConstFloatLiteral Double-                | ConstInteger Integer-                | ConstNull-                deriving (Show)----- Qualifers-data Qualifier = QuaStatic-               | QSpecials [Special]-               deriving (Show)--data Special = Getter -             | Setter -             | Ccreator -             | Deleter -             | Legacycaller-             deriving (Show)--data ArgumentNameKeyword = ArgAttribute    | ArgCallback    | ArgConst        | ArgCreator-                         | ArgDeleter      | ArgDictionary  | ArgEnum         | ArgException-                         | ArgGetter       | ArgImplements  | ArgInherit      | ArgInterface-                         | ArgLegacycaller | ArgPartial     | ArgSetter       | ArgStatic-                         | ArgStringifier  | ArgTypedef     | ArgUnrestricted-                         deriving (Show)---- Types-data Type = TySingleType SingleType | TyUnionType UnionType TypeSuffix deriving (Show)--data SingleType = STyNonAny NonAnyType-                | STyAny TypeSuffix-                deriving (Show)--data NonAnyType = TyPrim PrimitiveType TypeSuffix-                | TyDOMString TypeSuffix-                | TyIdent Ident TypeSuffix-                | TySequence Type (Maybe Null)-                | TyObject TypeSuffix-                | TyDate TypeSuffix-                deriving (Show)---data PrimitiveType = PrimIntegerType IntegerType-                   | PrimFloatType FloatType-                   | Boolean-                   | Byte-                   | Octet-                   deriving (Show)--data IntegerType = IntegerType (Maybe Unsigned) IntegerWidth deriving (Show)--data IntegerWidth = Short | Long Int deriving (Show)--data TypeSuffix = TypeSuffixArray-                | TypeSuffixNullable-                | TypeSuffixNone-                deriving (Show)--data FloatType = TyFloat (Maybe Unrestricted)-               | TyDouble (Maybe Unrestricted)-               deriving (Show)--type UnionType = [UnionMemberType]--data UnionMemberType = UnionTy UnionType TypeSuffix -                     | UnionTyNonAny NonAnyType-                     | UnionTyAny TypeSuffix-                     deriving (Show)--data ReturnType = RetType Type-                | RetVoid-                deriving (Show)---data ConstType = ConstPrim PrimitiveType (Maybe Null)-               | ConstIdent Ident (Maybe Null)-               deriving (Show)---- Markers--data Ellipsis = Ellipsis deriving (Show)-data ReadOnly = ReadOnly deriving (Show)-data Inherit = Inherit deriving (Show)-data Unrestricted = Unrestricted deriving (Show)-data Null = Null deriving (Show)-data Unsigned = Unsigned deriving (Show)---- Ident-newtype Ident = Ident String deriving (Show)
+ src/Language/WebIDL/AST.hs view
@@ -0,0 +1,159 @@+module Language.WebIDL.AST where++import Prelude hiding (Enum)++-- Definition+data Definition a = DefInterface (Interface a)+                  | DefPartial (Partial a)+                  | DefDictionary (Dictionary a)+                  | DefException (Exception a)+                  | DefEnum (Enum a)+                  | DefTypedef (Typedef a)+                  | DefImplementsStatement (ImplementsStatement a)+                  deriving (Show, Eq)++-- Interface+data Interface a = Interface a Ident (Maybe Ident) [InterfaceMember a] deriving (Show, Eq)++-- Partial+data Partial a = PartialInterface a Ident [InterfaceMember a]+               | PartialDictionary a Ident [DictionaryMember a]+               deriving (Show, Eq)++-- Dictionary+data Dictionary a = Dictionary a Ident (Maybe Ident) [DictionaryMember a] deriving (Show, Eq)++-- Exception+data Exception a = Exception a Ident (Maybe Ident) [ExceptionMember a] deriving (Show, Eq)++-- Enum+data Enum a = Enum a Ident [EnumValue] deriving (Show, Eq)++-- Typedef+data Typedef a = Typedef a Type Ident deriving (Show, Eq)++-- Implements+data ImplementsStatement a = ImplementsStatement a Ident Ident deriving (Show, Eq)++-- Fields+data InterfaceMember a = IMemConst (Const a)+                       | IMemAttribute (Attribute a)+                       | IMemOperation (Operation a)+                       deriving (Show, Eq)++data DictionaryMember a = DictionaryMember a Type Ident (Maybe Default) deriving (Show, Eq)++data ExceptionMember a = ExConst a (Const a)+                       | ExField a Type Ident+                       deriving (Show, Eq)++data Attribute a = Attribute a (Maybe Inherit) (Maybe ReadOnly) Type Ident deriving (Show, Eq)++data Operation a = Operation a (Maybe Qualifier) ReturnType (Maybe Ident) [Argument] deriving (Show, Eq)++data Argument = ArgOptional Type ArgumentName Default+              | ArgNonOpt Type (Maybe Ellipsis) ArgumentName+              deriving (Show, Eq)++newtype EnumValue = EnumValue String deriving (Show, Eq)++data ArgumentName = ArgKey ArgumentNameKeyword+                  | ArgIdent Ident+                  deriving (Show, Eq)++-- Values+data Const a = Const a ConstType Ident ConstValue deriving (Show, Eq)++data Default = DefaultValue ConstValue+             | DefaultString String+             deriving (Show, Eq)++data ConstValue = ConstBooleanLiteral Bool+                | ConstFloatLiteral Double+                | ConstInteger Integer+                | ConstNull+                deriving (Show, Eq)+++-- Qualifers+data Qualifier = QuaStatic+               | QSpecials [Special]+               deriving (Show, Eq)++data Special = Getter +             | Setter +             | Ccreator +             | Deleter +             | Legacycaller+             deriving (Show, Eq)++data ArgumentNameKeyword = ArgAttribute    | ArgCallback    | ArgConst        | ArgCreator+                         | ArgDeleter      | ArgDictionary  | ArgEnum         | ArgException+                         | ArgGetter       | ArgImplements  | ArgInherit      | ArgInterface+                         | ArgLegacycaller | ArgPartial     | ArgSetter       | ArgStatic+                         | ArgStringifier  | ArgTypedef     | ArgUnrestricted+                         deriving (Show, Eq)++-- Types+data Type = TySingleType SingleType | TyUnionType UnionType TypeSuffix deriving (Show, Eq)++data SingleType = STyNonAny NonAnyType+                | STyAny TypeSuffix+                deriving (Show, Eq)++data NonAnyType = TyPrim PrimitiveType TypeSuffix+                | TyDOMString TypeSuffix+                | TyIdent Ident TypeSuffix+                | TySequence Type (Maybe Null)+                | TyObject TypeSuffix+                | TyDate TypeSuffix+                deriving (Show, Eq)+++data PrimitiveType = PrimIntegerType IntegerType+                   | PrimFloatType FloatType+                   | Boolean+                   | Byte+                   | Octet+                   deriving (Show, Eq)++data IntegerType = IntegerType (Maybe Unsigned) IntegerWidth deriving (Show, Eq)++data IntegerWidth = Short | Long Int deriving (Show, Eq)++data TypeSuffix = TypeSuffixArray+                | TypeSuffixNullable+                | TypeSuffixNone+                deriving (Show, Eq)++data FloatType = TyFloat (Maybe Unrestricted)+               | TyDouble (Maybe Unrestricted)+               deriving (Show, Eq)++type UnionType = [UnionMemberType]++data UnionMemberType = UnionTy UnionType TypeSuffix +                     | UnionTyNonAny NonAnyType+                     | UnionTyAny TypeSuffix+                     deriving (Show, Eq)++data ReturnType = RetType Type+                | RetVoid+                deriving (Show, Eq)+++data ConstType = ConstPrim PrimitiveType (Maybe Null)+               | ConstIdent Ident (Maybe Null)+               deriving (Show, Eq)++-- Markers++data Ellipsis = Ellipsis deriving (Show, Eq)+data ReadOnly = ReadOnly deriving (Show, Eq)+data Inherit = Inherit deriving (Show, Eq)+data Unrestricted = Unrestricted deriving (Show, Eq)+data Null = Null deriving (Show, Eq)+data Unsigned = Unsigned deriving (Show, Eq)++-- Ident+newtype Ident = Ident String deriving (Show, Eq)
+ src/Language/WebIDL/PPrint.hs view
@@ -0,0 +1,207 @@+module Language.WebIDL.PPrint where++import Language.WebIDL.AST+import Prelude hiding (Enum)+import Text.PrettyPrint.Leijen++printDef :: Definition a -> String+printDef = show . pretty++instance Pretty (Definition a) where+    pretty (DefInterface x) = pretty x+    pretty (DefPartial x) = pretty x+    pretty (DefDictionary x) = pretty x+    pretty (DefException x) = pretty x+    pretty (DefEnum x) = pretty x+    pretty (DefTypedef x) = pretty x+    pretty (DefImplementsStatement x) = pretty x++instance Pretty (Interface a) where+    pretty (Interface _ x mInherit members) =+        text "interface" <+> pretty x <+> prettyInherit mInherit <+> scope members <> semi++prettyMaybe Nothing  _ = empty+prettyMaybe (Just x) f = f x++prettyInherit x = prettyMaybe x (\e -> colon <+> pretty e)++instance Pretty (Exception a) where+    pretty (Exception _ x mInherit members) =+        text "exception" <+> pretty x <+> prettyInherit mInherit <+> scope members <> semi++instance Pretty (Partial a) where+    pretty (PartialInterface _ x members) =+        text "interface" <+> pretty x <+> scope members <> semi+    pretty (PartialDictionary _ x members) =+        text "dictionary" <+> pretty x <+> braces (vsep $ map pretty members) <> semi++instance Pretty (Enum a) where+    pretty (Enum _ x enums) = text "enum" <+> pretty x <+> scope enums <> semi++instance Pretty (Dictionary a) where+    pretty (Dictionary _ x mInherit members) =+        text "dictionary" <+> pretty x <+> prettyInherit mInherit+                          <+> scope members <> semi++scope members = braces (line <> vsep (map (indent 4 . pretty) members) <> line)++instance Pretty (Typedef a) where+    pretty (Typedef _ ty ident) = text "typedef" <+> pretty ty <+> pretty ident <> semi++instance Pretty (ImplementsStatement a) where+    pretty (ImplementsStatement _ i1 i2) = pretty i1 <+> text "implements" <+> pretty i2 <> semi++instance Pretty Ident where+    pretty (Ident x) = text x++instance Pretty Type where+    pretty (TySingleType s) = pretty s+    pretty (TyUnionType ut suffix) = pretty ut <> pretty suffix++instance Pretty SingleType where+    pretty (STyNonAny t) = pretty t+    pretty (STyAny suffix) = text "any" <> pretty suffix++instance Pretty NonAnyType where+    pretty (TyPrim t suffix) = pretty t <> pretty suffix+    pretty (TyDOMString suffix) = text "DOMString" <> pretty suffix+    pretty (TyIdent ident suffix) = pretty ident <> pretty suffix+    pretty (TySequence t mNull) = text "sequence" <> angles (pretty t) <> prettyMaybe mNull pretty+    pretty (TyObject suffix) = text "object" <> pretty suffix+    pretty (TyDate suffix) = text "Date" <> pretty suffix+++instance Pretty (DictionaryMember a) where+    pretty (DictionaryMember _ t ident mDefault) =+        pretty t <+> pretty ident <> prettyMaybe mDefault prettyDefault <> semi++instance Pretty Default where+    pretty (DefaultValue cval) = pretty cval+    pretty (DefaultString s)   = text (show s)++instance Pretty ConstValue where+    pretty (ConstBooleanLiteral b) = if b then text "true" else text "false"+    pretty (ConstFloatLiteral d)   = pretty d+    pretty (ConstInteger i)        = pretty i+    pretty ConstNull               = text "null"++instance Pretty Null where+    pretty Null = text "?"++instance Pretty TypeSuffix where+    pretty TypeSuffixArray = text "[]"+    pretty TypeSuffixNullable = text "?"+    pretty TypeSuffixNone = empty++instance Pretty PrimitiveType where+    pretty (PrimIntegerType t) = pretty t+    pretty (PrimFloatType t)   = pretty t+    pretty Boolean             = text "boolean"+    pretty Byte                = text "byte"+    pretty Octet               = text "octet"++instance Pretty FloatType where+    pretty (TyFloat mUnres)  = prettyMaybe mUnres (\e -> pretty e <> space) <> text "float"+    pretty (TyDouble mUnres) = prettyMaybe mUnres (\e -> pretty e <> space) <> text "double"++instance Pretty Unrestricted where+    pretty Unrestricted = text "unrestricted"++instance Pretty IntegerType where+    pretty (IntegerType mUns width) = prettyMaybe mUns pretty <> pretty width++instance Pretty IntegerWidth where+    pretty Short = text "short"+    pretty (Long i) = hsep $ take i (repeat (text "long"))++instance Pretty Unsigned where+    pretty Unsigned = text "unsigned"++instance Pretty UnionMemberType where+    pretty (UnionTy ut suffix) = pretty ut <> pretty suffix+    pretty (UnionTyNonAny t) = pretty t+    pretty (UnionTyAny suffix) = text "any" <> pretty suffix++instance Pretty EnumValue where+    pretty (EnumValue s) = text s++instance Pretty (InterfaceMember a) where+    pretty (IMemConst c) = pretty c+    pretty (IMemAttribute attr) = pretty attr+    pretty (IMemOperation op) = pretty op++instance Pretty (Operation a) where+    pretty (Operation _ mQ retty mIdent args) =+        pretty mQ <> pretty retty <+> prettyMaybe mIdent (\e -> pretty e)+                  <> parens (hcat (punctuate (comma <> space) (map pretty args))) <> semi+++instance Pretty Argument where+    pretty (ArgOptional t name def) = text "optional" <+> pretty t <+> pretty name <> prettyDefault def+    pretty (ArgNonOpt t mElli name) = pretty t <> prettyMaybe mElli (\_ -> text "...") <+> pretty name++prettyDefault def = space <> equals <+> pretty def++instance Pretty ArgumentName where+    pretty (ArgKey key) = pretty key+    pretty (ArgIdent i) = pretty i++instance Pretty ArgumentNameKeyword where+    pretty ArgAttribute = text "attribute"+    pretty ArgCallback = text "callback"+    pretty ArgConst = text "const"+    pretty ArgCreator = text "creator"+    pretty ArgDeleter = text "deleter"+    pretty ArgDictionary = text "dictionary"+    pretty ArgEnum = text "enum"+    pretty ArgException   = text "exception"+    pretty ArgGetter = text "getter"+    pretty ArgImplements = text "implements"+    pretty ArgInherit = text "inherit"+    pretty ArgInterface   = text "interface"+    pretty ArgLegacycaller = text "legacycaller"+    pretty ArgPartial = text "partial"+    pretty ArgSetter = text "setter"+    pretty ArgStatic  = text "static"+    pretty ArgStringifier = text "stringifier"+    pretty ArgTypedef = text "typedef"+    pretty ArgUnrestricted = text "unrestricted"+++instance Pretty ReturnType where+    pretty (RetType t) = pretty t+    pretty RetVoid     = text "void"++instance Pretty Qualifier where+    pretty QuaStatic = text "static"+    pretty (QSpecials specials) = hsep $ map pretty specials++instance Pretty Special where+    pretty Getter = text "getter"+    pretty Setter = text "setter"+    pretty Ccreator = text "ccreator"+    pretty Deleter = text "deleter"+    pretty Legacycaller = text "legacycaller"+++instance Pretty (Attribute a) where+    pretty (Attribute _ mInherit mReadOnly t i) =+        prettyInherit mInherit <> prettyMaybe mReadOnly pretty+                               <> text "attribute" <+> pretty t <+> pretty i <> semi++instance Pretty ReadOnly where+    pretty ReadOnly = text "readonly" <> space++instance Pretty Inherit where+    pretty Inherit = text "inherit" <> space++instance Pretty (Const a) where+    pretty (Const _ t i v) = text "const" <+> pretty t <+> pretty i <+> equals <+> pretty v <> semi++instance Pretty ConstType where+    pretty (ConstPrim ty mNull) = pretty ty <> prettyMaybe mNull pretty+    pretty (ConstIdent i mNull) = pretty i <> prettyMaybe mNull pretty++instance Pretty (ExceptionMember a) where+    pretty (ExConst _ c) = pretty c+    pretty (ExField _ t i) = pretty t <+> pretty i <> semi
+ src/Language/WebIDL/Parser.hs view
@@ -0,0 +1,287 @@+module Language.WebIDL.Parser 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 {+  _comments :: [String]+}++data Tagging = Tagging {+  _comment :: [String],+  _sourcePos :: SourcePos+}++instance Eq Tagging where+  (==) _ _ = True++instance Show Tagging where+    show (Tagging comments pos) =+      let line = if length comments > 0 then take 5 (head comments) ++ "..., " else ""+      in  "(" ++ line ++ show (sourceLine pos) ++ ")"++initState :: ParserState+initState = ParserState []++type MyParser = CharParser ParserState++testParse :: MyParser a -> String -> Either ParseError a+testParse p = runParser p initState "webidl"++parseIDL :: String -> Either ParseError [Definition Tagging]+parseIDL = testParse (pSpaces *> many1 (pDef <* pSpaces))++pDef :: MyParser (Definition Tagging)+pDef = DefInterface <$> (pExtAttrs *> pInterface)+   <|> DefPartial <$> pPartial+   <|> DefDictionary <$> pDictionary+   <|> DefException <$> pException+   <|> DefEnum <$> pEnum+   <|> DefTypedef <$> pTypedef+   <|> DefImplementsStatement <$> pImplementsStatement++-- FIXME: currently we ignore extended attributes+pExtAttrs :: MyParser ()+pExtAttrs = pSpaces *> void (char '[' *> (manyTill anyChar (try (char ']')))) <* pSpaces+        <|> pSpaces++pPartial :: MyParser (Partial Tagging)+pPartial = string "partial" *> pSpaces *> p+  where+    p =   PartialInterface <$> getTag <*> (string "interface" *> pSpaces *> pIdent)+                              <*> braces (many pInterfaceMember) <* semi+      <|> PartialDictionary <$> getTag <*> (string "dictionary" *> pSpaces *> pIdent)+                               <*> braces (many pDictionaryMember) <* semi++pDictionary :: MyParser (Dictionary Tagging)+pDictionary = Dictionary <$> getTag <*> (string "dictionary" *> pSpaces *> pIdent)+                         <*> pInheritance <*> braces (many pDictionaryMember) <* semi++pInterface :: MyParser (Interface Tagging)+pInterface = Interface <$> getTag <*> (string "interface" *> pSpaces *> pIdent)+                          <*> pInheritance <*> braces (pSpaces *> many (pInterfaceMember <* pSpaces)) <* semi++pException :: MyParser (Exception Tagging)+pException = Exception <$> getTag <*> (string "exception" *> pSpaces *> pIdent)+                          <*> pInheritance <*> braces (many pExceptionMember)++pInheritance :: MyParser (Maybe Ident)+pInheritance = optionMaybe (spaces *> char ':'  *> spaces *> pIdent)++pEnum :: MyParser (Enum Tagging)+pEnum = Enum <$> getTag <*> (string "enum" *> pSpaces *> pIdent) <*> braces pEnumValues <* semi++pEnumValues :: MyParser [EnumValue]+pEnumValues = sepBy1 (EnumValue <$> stringLit) (char ',')+++pTypedef :: MyParser (Typedef Tagging)+pTypedef = do+  tag <- getTag+  string "typedef"+  pSpaces+  ty <- try pType+  pSpaces+  ident <- pIdent+  semi+  return (Typedef tag ty ident)++pImplementsStatement :: MyParser (ImplementsStatement Tagging)+pImplementsStatement = ImplementsStatement <$> getTag <*> pIdent <* pSpaces+                                              <*> (string "implements" *> pSpaces *> pIdent <* semi)++pDictionaryMember :: MyParser (DictionaryMember Tagging)+pDictionaryMember = DictionaryMember <$> getTag <*> pType <* pSpaces+                                     <*> pIdent <*> optionMaybe (spaces *> pEq *> spaces *> pDefault) <* semi++pExceptionMember :: MyParser (ExceptionMember Tagging)+pExceptionMember =  ExConst <$> getTag <*> pConst+                <|> ExField <$> getTag <*> pType <*> pIdent <* semi++pMaybeIdent :: MyParser (Maybe Ident)+pMaybeIdent = optionMaybe pIdent++pInterfaceMember :: MyParser (InterfaceMember Tagging)+pInterfaceMember =  try (IMemConst <$> pConst)+                <|> try (IMemAttribute <$> pAttribute)+                <|> IMemOperation <$> (pExtAttrs *> pOperation)++pConst :: MyParser (Const Tagging)+pConst = Const <$> getTag <*> (string "const" *> pSpaces *> pConstType <* pSpaces)+               <*> (pIdent <* pEq) <*> (pSpaces *> pConstValue <* semi)++pConstType :: MyParser ConstType+pConstType =  ConstPrim <$> pPrimTy <*> pNull+          <|> ConstIdent <$> pIdent <*> pNull++pAttribute :: MyParser (Attribute Tagging)+pAttribute = Attribute <$> getTag <*> pModifier Inherit "inherit"+                       <*> pModifier ReadOnly "readonly"+                       <*> (string "attribute" *> pSpaces *> pType) <*> (pSpaces *> pIdent <* semi)++pModifier :: a -> String -> MyParser (Maybe a)+pModifier m s = optionMaybe (string s *> pSpaces *> return m)++pOperation :: MyParser (Operation Tagging)+pOperation = Operation <$> getTag <*> pQualifier <* spaces+                       <*> pReturnType <* pSpaces+                       <*> pMaybeIdent <* pSpaces+                       <*> parens (pSpaces *> sepBy (pArg <* pSpaces) (char ',' <* pSpaces)) <* semi++pArg :: MyParser Argument+pArg =  ArgOptional <$> (string "optional" *> pType <* pSpaces) <*> pArgumentName <*> pDefault+    <|> ArgNonOpt   <$> (pType <* pSpaces) <*> (pModifier Ellipsis "...") <*> (pSpaces *> pArgumentName)++pArgumentName :: MyParser ArgumentName+pArgumentName = try (ArgKey <$> pArgumentNameKeyword)+            <|> ArgIdent <$> pIdent++pArgumentNameKeyword :: MyParser ArgumentNameKeyword+pArgumentNameKeyword =  string "attribute" *> return ArgAttribute+                    <|> string "callback" *> return ArgCallback+                    <|> string "const" *> return ArgConst+                    <|> string "creator" *> return ArgCreator+                    <|> string "deleter" *> return ArgDeleter+                    <|> string "dictionary" *> return ArgDictionary+                    <|> string "enum" *> return ArgEnum+                    <|> string "exception" *> return ArgException  +                    <|> string "getter" *> return ArgGetter+                    <|> string "implements" *> return ArgImplements+                    <|> string "inherit" *> return ArgInherit+                    <|> string "interface" *> return ArgInterface  +                    <|> string "legacycaller" *> return ArgLegacycaller+                    <|> string "partial" *> return ArgPartial+                    <|> string "setter" *> return ArgSetter+                    <|> string "static" *> return ArgStatic +                    <|> string "stringifier" *> return ArgStringifier+                    <|> string "typedef" *> return ArgTypedef+                    <|> string "unrestricted" *> return ArgUnrestricted++pDefault :: MyParser Default+pDefault =  DefaultValue <$> pConstValue+        <|> DefaultString <$> stringLit+++pQualifier :: MyParser (Maybe Qualifier)+pQualifier =  try (string "static" *> return (Just QuaStatic))+          <|> try (Just . QSpecials <$> many pSpecial)+          <|> return Nothing++pSpecial :: MyParser Special+pSpecial = string "getter" *> return Getter+       <|> string "setter" *> return Setter+       <|> string "ccreator" *> return Ccreator+       <|> string "deleter" *> return Deleter+       <|> string "legacycaller" *> return Legacycaller++pReturnType :: MyParser ReturnType+pReturnType = string "void" *> return RetVoid+          <|> RetType <$> pType++pConstValue :: MyParser ConstValue+pConstValue =  ConstBooleanLiteral <$> pBool+           <|> try (ConstFloatLiteral <$> pFloat)+           <|> ConstInteger <$> pInt+           <|> string "null" *> return ConstNull++pBool :: MyParser Bool+pBool =  string "true" *> return True+     <|> string "false" *> return False+++pNull :: MyParser (Maybe Null)+pNull = optionMaybe (char '?' *> return Null)++pPrimTy :: MyParser PrimitiveType+pPrimTy = try (string "boolean" *> return Boolean)+      <|> try (string "byte" *> return Byte)+      <|> try (string "octet" *> return Octet)+      <|> try (PrimIntegerType <$> pIntegerType)+      <|> PrimFloatType <$> pFloatType++pIntegerType :: MyParser IntegerType+pIntegerType = IntegerType <$> pUnsigned <* pSpaces <*> pIntegerWidth++pUnsigned :: MyParser (Maybe Unsigned)+pUnsigned = optionMaybe (string "unsigned" *> return Unsigned)++pIntegerWidth = string "short" *> return Short+             <|> Long . length <$> many1 (string "long" <* pSpaces)++pFloatType :: MyParser FloatType+pFloatType =  try (TyFloat <$> pModifier Unrestricted "unrestricted" <* spaces <* string "float")+          <|> TyDouble <$> pModifier Unrestricted "unrestricted" <* spaces <* string "double"++pType :: MyParser Type+pType =  TySingleType <$> pSingleType+     <|> TyUnionType <$> pUnionType <*> pTypeSuffix++pSingleType :: MyParser SingleType+pSingleType =  STyAny <$> (string "any" *> pTypeSuffix)+           <|> STyNonAny <$> pNonAnyType++pNonAnyType :: MyParser NonAnyType+pNonAnyType =  try (TyPrim <$> pPrimTy <*> pTypeSuffix)+           <|> TySequence <$> (string "sequence" *> pSpaces *> angles pType) <*> pNull+           <|> TyObject <$> (string "object" *> pTypeSuffix)+           <|> try (TyDOMString <$> (string "DOMString" *> pTypeSuffix))+           <|> TyDate <$> (string "Date" *> pTypeSuffix)+           <|> TyIdent <$> pIdent <*> pTypeSuffix++pTypeSuffix :: MyParser TypeSuffix+pTypeSuffix =  try (string "[]" *> return TypeSuffixArray)+           <|> try (char '?' *> return TypeSuffixNullable)+           <|> return TypeSuffixNone++-- FIXME: Not working correctly currently+pUnionType :: MyParser UnionType+pUnionType = parens (sepBy1 pUnionMemberType (string "or"))++pUnionMemberType :: MyParser UnionMemberType+pUnionMemberType =  UnionTy <$> pUnionType <*> pTypeSuffix+                <|> UnionTyNonAny <$> pNonAnyType+                <|> UnionTyAny <$> (string "any []" *> pTypeSuffix)++lexer = Tok.makeTokenParser emptyDef++parens     = Tok.parens 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+semi       = Tok.semi lexer+stringLit  = Tok.stringLiteral lexer+pEq        = char '='++pSpaces = try (skipMany (spaces *> pComment <* spaces) <* spaces)+      <|> spaces++pComment = try pLineComment <|> pBlockComment++pLineComment = do+  string "//"+  comment <- manyTill anyChar (try newline)+  modifyState (\ps -> ParserState { _comments = _comments ps ++ [comment]})++pBlockComment = do+  string "/*"+  comment <- manyTill anyChar (try (string "*/"))+  modifyState (\ps -> ParserState { _comments = _comments ps ++ lines comment})+++getTag :: MyParser Tagging+getTag = do+  pos <- getPosition+  ParserState comments <- getState+  putState $ ParserState []+  return $ Tagging comments pos+
− src/PPrint.hs
@@ -1,200 +0,0 @@-module PPrint where--import AST-import Prelude hiding (Enum)-import Text.PrettyPrint.Leijen--instance Pretty (Definition a) where-    pretty (DefInterface x) = pretty x-    pretty (DefPartial x) = pretty x-    pretty (DefDictionary x) = pretty x-    pretty (DefException x) = pretty x-    pretty (DefEnum x) = pretty x-    pretty (DefTypedef x) = pretty x-    pretty (DefImplementsStatement x) = pretty x--instance Pretty (Interface a) where-    pretty (Interface _ x mInherit members) =-        text "interface" <+> pretty x <+> prettyInherit mInherit <+> braces (prettyList members) <> semi--prettyMaybe Nothing  _ = empty-prettyMaybe (Just x) f = f x--prettyInherit x = prettyMaybe x (\e -> colon <+> pretty e)--instance Pretty (Exception a) where-    pretty (Exception _ x mInherit members) =-        text "exception" <+> pretty x <+> prettyInherit mInherit <+> braces (prettyList members) <> semi--instance Pretty (Partial a) where-    pretty (PartialInterface _ x members) =-        text "interface" <+> pretty x <+> braces (prettyList members) <> semi-    pretty (PartialDictionary _ x members) =-        text "dictionary" <+> pretty x <+> braces (prettyList members) <> semi--instance Pretty (Enum a) where-    pretty (Enum _ x enums) = text "enum" <+> pretty x <+> braces (prettyList enums) <> semi--instance Pretty (Dictionary a) where-    pretty (Dictionary _ x mInherit members) =-        text "dictionary" <+> pretty x <+> prettyInherit mInherit <+> braces (prettyList members) <> semi--instance Pretty (Typedef a) where-    pretty (Typedef _ ty ident) = text "typedef" <+> pretty ty <+> pretty ident <> semi--instance Pretty (ImplementsStatement a) where-    pretty (ImplementsStatement _ i1 i2) = pretty i1 <+> text "implements" <+> pretty i2 <> semi--instance Pretty Ident where-    pretty (Ident x) = text x--instance Pretty Type where-    pretty (TySingleType s) = pretty s-    pretty (TyUnionType ut suffix) = pretty ut <> pretty suffix--instance Pretty SingleType where-    pretty (STyNonAny t) = pretty t-    pretty (STyAny suffix) = text "any" <> pretty suffix--instance Pretty NonAnyType where-    pretty (TyPrim t suffix) = pretty t <> pretty suffix-    pretty (TyDOMString suffix) = text "DOMString" <> pretty suffix-    pretty (TyIdent ident suffix) = pretty ident <> pretty suffix-    pretty (TySequence t mNull) = pretty t <> prettyMaybe mNull pretty-    pretty (TyObject suffix) = text "object" <> pretty suffix-    pretty (TyDate suffix) = text "Date" <> pretty suffix---instance Pretty (DictionaryMember a) where-    pretty (DictionaryMember _ t ident mDefault) =-        pretty t <+> pretty ident <> prettyMaybe mDefault prettyDefault <> semi--instance Pretty Default where-    pretty (DefaultValue cval) = pretty cval-    pretty (DefaultString s)   = text (show s)--instance Pretty ConstValue where-    pretty (ConstBooleanLiteral b) = if b then text "true" else text "false"-    pretty (ConstFloatLiteral d)   = pretty d-    pretty (ConstInteger i)        = pretty i-    pretty ConstNull               = text "null"--instance Pretty Null where-    pretty Null = text "null"--instance Pretty TypeSuffix where-    pretty TypeSuffixArray = text "[]"-    pretty TypeSuffixNullable = text "?"-    pretty TypeSuffixNone = empty--instance Pretty PrimitiveType where-    pretty (PrimIntegerType t) = pretty t-    pretty (PrimFloatType t)   = pretty t-    pretty Boolean             = text "boolean"-    pretty Byte                = text "byte"-    pretty Octet               = text "octet"--instance Pretty FloatType where-    pretty (TyFloat mUnres)  = text "float" <> prettyMaybe mUnres (\e -> space <> pretty e)-    pretty (TyDouble mUnres) = text "double" <> prettyMaybe mUnres (\e -> space <> pretty e)--instance Pretty Unrestricted where-    pretty Unrestricted = text "unrestricted"--instance Pretty IntegerType where-    pretty (IntegerType mUns width) = prettyMaybe mUns (\e -> pretty e <> space) <> pretty width--instance Pretty IntegerWidth where-    pretty Short = text "short"-    pretty (Long i) = foldr (<+>) empty $ take i (repeat (text "long"))--instance Pretty Unsigned where-    pretty Unsigned = text "unsigned"--instance Pretty UnionMemberType where-    pretty (UnionTy ut suffix) = pretty ut <> pretty suffix-    pretty (UnionTyNonAny t) = pretty t-    pretty (UnionTyAny suffix) = text "any" <> pretty suffix--instance Pretty EnumValue where-    pretty (EnumValue s) = text s--instance Pretty (InterfaceMember a) where-    pretty (IMemConst c) = pretty c-    pretty (IMemAttribute attr) = pretty attr-    pretty (IMemOperation op) = pretty op--instance Pretty (Operation a) where-    pretty (Operation _ mQ retty mIdent args) =-        pretty mQ <> pretty retty <+> prettyMaybe mIdent (\e -> pretty e <> space)-                  <+> encloseSep lparen rparen (comma <> space) (map pretty args)---instance Pretty Argument where-    pretty (ArgOptional t name def) = text "optional" <+> pretty t <+> pretty name <> prettyDefault def-    pretty (ArgNonOpt t mElli name) = pretty t <> prettyMaybe mElli (\_ -> text "...") <+> pretty name--prettyDefault def = space <> equals <+> pretty def--instance Pretty ArgumentName where-    pretty (ArgKey key) = pretty key-    pretty (ArgIdent i) = pretty i--instance Pretty ArgumentNameKeyword where-    pretty ArgAttribute = text "attribute"-    pretty ArgCallback = text "callback"-    pretty ArgConst = text "const"-    pretty ArgCreator = text "creator"-    pretty ArgDeleter = text "deleter"-    pretty ArgDictionary = text "dictionary"-    pretty ArgEnum = text "enum"-    pretty ArgException   = text "exception"-    pretty ArgGetter = text "getter"-    pretty ArgImplements = text "implements"-    pretty ArgInherit = text "inherit"-    pretty ArgInterface   = text "interface"-    pretty ArgLegacycaller = text "legacycaller"-    pretty ArgPartial = text "partial"-    pretty ArgSetter = text "setter"-    pretty ArgStatic  = text "static"-    pretty ArgStringifier = text "stringifier"-    pretty ArgTypedef = text "typedef"-    pretty ArgUnrestricted = text "unrestricted"---instance Pretty ReturnType where-    pretty (RetType t) = pretty t-    pretty RetVoid     = text "void"--instance Pretty Qualifier where-    pretty QuaStatic = text "static"-    pretty (QSpecials specials) = prettyList specials--instance Pretty Special where-    pretty Getter = text "getter"-    pretty Setter = text "setter"-    pretty Ccreator = text "ccreator"-    pretty Deleter = text "deleter"-    pretty Legacycaller = text "legacycaller"---instance Pretty (Attribute a) where-    pretty (Attribute _ mInherit mReadOnly t i) =-        prettyInherit mInherit <+> prettyMaybe mReadOnly pretty <+> pretty t <+> pretty i--instance Pretty ReadOnly where-    pretty ReadOnly = text "readonly"--instance Pretty Inherit where-    pretty Inherit = text "inherit"--instance Pretty (Const a) where-    pretty (Const _ t i v) = pretty t <+> pretty i <+> equals <+> pretty v <> semi--instance Pretty ConstType where-    pretty (ConstPrim ty mNull) = pretty ty <> prettyMaybe mNull pretty-    pretty (ConstIdent i mNull) = pretty i <> prettyMaybe mNull pretty--instance Pretty (ExceptionMember a) where-    pretty (ExConst _ c) = pretty c-    pretty (ExField _ t i) = pretty t <+> pretty i <> semi
− src/Parser.hs
@@ -1,284 +0,0 @@-module Parser where--import 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 {-  _comments :: [String]-}--data Tagging = Tagging {-  _comment :: [String],-  _sourcePos :: SourcePos-}--instance Show Tagging where-    show (Tagging comments pos) =-      let line = if length comments > 0 then take 5 (head comments) ++ "..., " else ""-      in  "(" ++ line ++ show (sourceLine pos) ++ ")"--initState :: ParserState-initState = ParserState []--type MyParser = CharParser ParserState--testParse :: MyParser a -> String -> Either ParseError a-testParse p = runParser p initState "webidl"--parseIDL :: String -> Either ParseError [Definition Tagging]-parseIDL = testParse (pSpaces *> many1 (pDef <* pSpaces))--pDef :: MyParser (Definition Tagging)-pDef = DefInterface <$> (pExtAttrs *> pInterface)-   <|> DefPartial <$> pPartial-   <|> DefDictionary <$> pDictionary-   <|> DefException <$> pException-   <|> DefEnum <$> pEnum-   <|> DefTypedef <$> pTypedef-   <|> DefImplementsStatement <$> pImplementsStatement---- FIXME: currently we ignore extended attributes-pExtAttrs :: MyParser ()-pExtAttrs = pSpaces *> void (char '[' *> (manyTill anyChar (try (char ']')))) <* pSpaces-        <|> pSpaces--pPartial :: MyParser (Partial Tagging)-pPartial = string "partial" *> pSpaces *> p-  where-    p =   PartialInterface <$> getTag <*> (string "interface" *> pSpaces *> pIdent)-                              <*> braces (many pInterfaceMember) <* semi-      <|> PartialDictionary <$> getTag <*> (string "dictionary" *> pSpaces *> pIdent)-                               <*> braces (many pDictionaryMember) <* semi--pDictionary :: MyParser (Dictionary Tagging)-pDictionary = Dictionary <$> getTag <*> (string "dictionary" *> pSpaces *> pIdent)-                         <*> pInheritance <*> braces (many pDictionaryMember) <* semi--pInterface :: MyParser (Interface Tagging)-pInterface = Interface <$> getTag <*> (string "interface" *> pSpaces *> pIdent)-                          <*> pInheritance <*> braces (pSpaces *> many (pInterfaceMember <* pSpaces)) <* semi--pException :: MyParser (Exception Tagging)-pException = Exception <$> getTag <*> (string "exception" *> pSpaces *> pIdent)-                          <*> pInheritance <*> braces (many pExceptionMember)--pInheritance :: MyParser (Maybe Ident)-pInheritance = optionMaybe (spaces *> char ':'  *> spaces *> pIdent)--pEnum :: MyParser (Enum Tagging)-pEnum = Enum <$> getTag <*> (string "enum" *> pSpaces *> pIdent) <*> braces pEnumValues <* semi--pEnumValues :: MyParser [EnumValue]-pEnumValues = sepBy1 (EnumValue <$> stringLit) (char ',')---pTypedef :: MyParser (Typedef Tagging)-pTypedef = do-  tag <- getTag-  string "typedef"-  pSpaces-  ty <- try pType-  pSpaces-  ident <- pIdent-  semi-  return (Typedef tag ty ident)--pImplementsStatement :: MyParser (ImplementsStatement Tagging)-pImplementsStatement = ImplementsStatement <$> getTag <*> pIdent <* pSpaces-                                              <*> (string "implements" *> pSpaces *> pIdent <* semi)--pDictionaryMember :: MyParser (DictionaryMember Tagging)-pDictionaryMember = DictionaryMember <$> getTag <*> pType <* pSpaces-                                     <*> pIdent <*> optionMaybe (spaces *> pEq *> spaces *> pDefault) <* semi--pExceptionMember :: MyParser (ExceptionMember Tagging)-pExceptionMember =  ExConst <$> getTag <*> pConst-                <|> ExField <$> getTag <*> pType <*> pIdent <* semi--pMaybeIdent :: MyParser (Maybe Ident)-pMaybeIdent = optionMaybe pIdent--pInterfaceMember :: MyParser (InterfaceMember Tagging)-pInterfaceMember =  try (IMemConst <$> pConst)-                <|> try (IMemAttribute <$> pAttribute)-                <|> IMemOperation <$> (pExtAttrs *> pOperation)--pConst :: MyParser (Const Tagging)-pConst = Const <$> getTag <*> (string "const" *> pSpaces *> pConstType <* pSpaces)-               <*> (pIdent <* pEq) <*> (pSpaces *> pConstValue <* semi)--pConstType :: MyParser ConstType-pConstType =  ConstPrim <$> pPrimTy <*> pNull-          <|> ConstIdent <$> pIdent <*> pNull--pAttribute :: MyParser (Attribute Tagging)-pAttribute = Attribute <$> getTag <*> pModifier Inherit "inherit"-                       <*> pModifier ReadOnly "readonly"-                       <*> (string "attribute" *> pSpaces *> pType) <*> (pSpaces *> pIdent <* semi)--pModifier :: a -> String -> MyParser (Maybe a)-pModifier m s = optionMaybe (string s *> pSpaces *> return m)--pOperation :: MyParser (Operation Tagging)-pOperation = Operation <$> getTag <*> pQualifier <* spaces-                       <*> pReturnType <* pSpaces-                       <*> pMaybeIdent <* pSpaces-                       <*> parens (pSpaces *> sepBy (pArg <* pSpaces) (char ',' <* pSpaces)) <* semi--pArg :: MyParser Argument-pArg =  ArgOptional <$> (string "optional" *> pType <* pSpaces) <*> pArgumentName <*> pDefault-    <|> ArgNonOpt   <$> (pType <* pSpaces) <*> (pModifier Ellipsis "...") <*> (pSpaces *> pArgumentName)--pArgumentName :: MyParser ArgumentName-pArgumentName = try (ArgKey <$> pArgumentNameKeyword)-            <|> ArgIdent <$> pIdent--pArgumentNameKeyword :: MyParser ArgumentNameKeyword-pArgumentNameKeyword =  string "attribute" *> return ArgAttribute-                    <|> string "callback" *> return ArgCallback-                    <|> string "const" *> return ArgConst-                    <|> string "creator" *> return ArgCreator-                    <|> string "deleter" *> return ArgDeleter-                    <|> string "dictionary" *> return ArgDictionary-                    <|> string "enum" *> return ArgEnum-                    <|> string "exception" *> return ArgException  -                    <|> string "getter" *> return ArgGetter-                    <|> string "implements" *> return ArgImplements-                    <|> string "inherit" *> return ArgInherit-                    <|> string "interface" *> return ArgInterface  -                    <|> string "legacycaller" *> return ArgLegacycaller-                    <|> string "partial" *> return ArgPartial-                    <|> string "setter" *> return ArgSetter-                    <|> string "static" *> return ArgStatic -                    <|> string "stringifier" *> return ArgStringifier-                    <|> string "typedef" *> return ArgTypedef-                    <|> string "unrestricted" *> return ArgUnrestricted--pDefault :: MyParser Default-pDefault =  DefaultValue <$> pConstValue-        <|> DefaultString <$> stringLit---pQualifier :: MyParser (Maybe Qualifier)-pQualifier =  try (string "static" *> return (Just QuaStatic))-          <|> try (Just . QSpecials <$> many pSpecial)-          <|> return Nothing--pSpecial :: MyParser Special-pSpecial = string "getter" *> return Getter-       <|> string "setter" *> return Setter-       <|> string "ccreator" *> return Ccreator-       <|> string "deleter" *> return Deleter-       <|> string "legacycaller" *> return Legacycaller--pReturnType :: MyParser ReturnType-pReturnType = string "void" *> return RetVoid-          <|> RetType <$> pType--pConstValue :: MyParser ConstValue-pConstValue =  ConstBooleanLiteral <$> pBool-           <|> try (ConstFloatLiteral <$> pFloat)-           <|> ConstInteger <$> pInt-           <|> string "null" *> return ConstNull--pBool :: MyParser Bool-pBool =  string "true" *> return True-     <|> string "false" *> return False---pNull :: MyParser (Maybe Null)-pNull = optionMaybe (char '?' *> return Null)--pPrimTy :: MyParser PrimitiveType-pPrimTy = try (string "boolean" *> return Boolean)-      <|> try (string "byte" *> return Byte)-      <|> try (string "octet" *> return Octet)-      <|> try (PrimIntegerType <$> pIntegerType)-      <|> PrimFloatType <$> pFloatType--pIntegerType :: MyParser IntegerType-pIntegerType = IntegerType <$> pUnsigned <* pSpaces <*> pIntegerWidth--pUnsigned :: MyParser (Maybe Unsigned)-pUnsigned = optionMaybe (string "unsigned" *> return Unsigned)--pIntegerWidth = string "short" *> return Short-             <|> Long . length <$> many1 (string "long" <* pSpaces)--pFloatType :: MyParser FloatType-pFloatType =  try (TyFloat <$> pModifier Unrestricted "unrestricted" <* spaces <* string "float")-          <|> TyDouble <$> pModifier Unrestricted "unrestricted" <* spaces <* string "double"--pType :: MyParser Type-pType =  TySingleType <$> pSingleType-     <|> TyUnionType <$> pUnionType <*> pTypeSuffix--pSingleType :: MyParser SingleType-pSingleType =  STyAny <$> (string "any" *> pTypeSuffix)-           <|> STyNonAny <$> pNonAnyType--pNonAnyType :: MyParser NonAnyType-pNonAnyType =  try (TyPrim <$> pPrimTy <*> pTypeSuffix)-           <|> TySequence <$> (string "sequence" *> pSpaces *> angles pType) <*> pNull-           <|> TyObject <$> (string "object" *> pTypeSuffix)-           <|> try (TyDOMString <$> (string "DOMString" *> pTypeSuffix))-           <|> TyDate <$> (string "Date" *> pTypeSuffix)-           <|> TyIdent <$> pIdent <*> pTypeSuffix--pTypeSuffix :: MyParser TypeSuffix-pTypeSuffix =  try (string "[]" *> return TypeSuffixArray)-           <|> try (char '?' *> return TypeSuffixNullable)-           <|> return TypeSuffixNone---- FIXME: Not working correctly currently-pUnionType :: MyParser UnionType-pUnionType = parens (sepBy1 pUnionMemberType (string "or"))--pUnionMemberType :: MyParser UnionMemberType-pUnionMemberType =  UnionTy <$> pUnionType <*> pTypeSuffix-                <|> UnionTyNonAny <$> pNonAnyType-                <|> UnionTyAny <$> (string "any []" *> pTypeSuffix)--lexer = Tok.makeTokenParser emptyDef--parens     = Tok.parens 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-semi       = Tok.semi lexer-stringLit  = Tok.stringLiteral lexer-pEq        = char '='--pSpaces = try (skipMany (spaces *> pComment <* spaces) <* spaces)-      <|> spaces--pComment = try pLineComment <|> pBlockComment--pLineComment = do-  string "//"-  comment <- manyTill anyChar (try newline)-  modifyState (\ps -> ParserState { _comments = _comments ps ++ [comment]})--pBlockComment = do-  string "/*"-  comment <- manyTill anyChar (try (string "*/"))-  modifyState (\ps -> ParserState { _comments = _comments ps ++ lines comment})---getTag :: MyParser Tagging-getTag = do-  pos <- getPosition-  ParserState comments <- getState-  putState $ ParserState []-  return $ Tagging comments pos-