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 +4/−2
- src/AST.hs +0/−159
- src/Language/WebIDL/AST.hs +159/−0
- src/Language/WebIDL/PPrint.hs +207/−0
- src/Language/WebIDL/Parser.hs +287/−0
- src/PPrint.hs +0/−200
- src/Parser.hs +0/−284
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-