3 \9@sVdZddlZejdjZejdjZejdZejdZejdZ[Gdd d Z dS) zShared support for scanning document type declarations in HTML and XHTML. This module is used as a foundation for the html.parser module. It has no documented public API and should not be used directly. Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z ]\s*]\s*>z]\s*>c@seZdZdZddZddZddZdd Zd d Zd Z d dZ d#ddZ d$ddZ ddZ ddZddZddZddZddZd d!Zd"S)% ParserBaseziParser base class which provides some common support methods used by the SGML/HTML and XHTML parsers.cCs|jtkrtddS)Nz)_markupbase.ParserBase must be subclassed) __class__r RuntimeError)selfr#/usr/lib64/python3.6/_markupbase.py__init__s zParserBase.__init__cCs tddS)Nz.subclasses of ParserBase must override error())NotImplementedError)rmessagerrrerror szParserBase.errorcCsd|_d|_dS)Nr)linenooffset)rrrrreset$szParserBase.resetcCs |j|jfS)z&Return current line number and offset.)r r)rrrrgetpos(szParserBase.getposcCsb||kr |S|j}|jd||}|rN|j||_|jd||}||d|_n|j|||_|S)N r )rawdatacountr rindexr)rijrZnlinesposrrr updatepos0s zParserBase.updateposc Cs|j}|d}|||dks&td|||ddkrB|dS|||ddkrZdSt|}|||ddkr|j|S||d kr|j|S|j||\}}|d kr|S|d krd|_x||kr||}|dkr||d|}|d kr|j|n |j||dS|d kr@t ||}|s6dS|j }n|d kr\|j||\} }nt||jkrr|d}n^|d kr|d kr|j |d|}n$|dkr|j d|n |j dn|j d|||d kr|SqWdS)Nz-rz--[rZdoctypez"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZattlistlinktypelinkelementz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)rrr">rrr r!r") rAssertionErrorlen parse_commentparse_marked_section _scan_name_decl_othercharsZ handle_decl unknown_decl_declstringlit_matchend_parse_doctype_subsetr ) rrrrnZdecltypecdatamnamerrrparse_declaration@sZ                  zParserBase.parse_declarationr cCs|j}|||ddks"td|j|d|\}}|dkrB|S|dkr\tj||d}n4|dkrvtj||d}n|jd ||d||sdS|r|jd}|j||d||j dS)Nzr4r5r6r7r8>r;r9r:r") rr#r'_markedsectionclosesearch_msmarkedsectioncloser startr)r+)rrreportrZsectNamermatchrrrr&s  zParserBase.parse_marked_sectioncCsj|j}|||ddkr$|jdtj||d}|srErrFr!r"r"r")rr$rr r%r'getattrisspace) rr declstartposrr-rr.sr1methrrrr,sn                 z ParserBase._parse_doctype_subsetcCsF|j||\}}|dkrdS|j}d||dkrB|jd|dSdS)Nr rr"r"r")r'rfind)rrrLr1rrrrr_parse_doctype_elementsz!ParserBase._parse_doctype_elementcCs|j}|j||\}}|||d}|dkr2d S|dkrB|dSxv|j||\}}|dkrb|S|||d}|dkr~d S|dkrd||dkr|jd|d}nd Sx |||djr|d}qW||dsd Sn|j||\}}|||d}|s d S|dkrLt||}|r.|j}ndS|||d}|sLdS|dkr||ddkrldS|j|d|\}}|dkr|S|||d}|sdS|dkrF|dSqFWdS)Nr rrr()z'"#r"r"r"r"r"r"r"r"r")rr'rOrKr*r+)rrrLrr1rr.r0rrr_parse_doctype_attlistsZ       z!ParserBase._parse_doctype_attlistcCs|j||\}}|dkr|S|j}xl|||d}|srrrrrs