a DOg9@sVdZddlZedjZedjZedZedZedZ[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|jturtddS)Nz)_markupbase.ParserBase must be subclassed) __class__r RuntimeErrorselfr#/usr/lib64/python3.9/_markupbase.py__init__s zParserBase.__init__cCs tddS)Nz.subclasses of ParserBase must override error())NotImplementedError)rmessagerrrerror szParserBase.errorcCsd|_d|_dS)Nrlinenooffsetrrrrreset$szParserBase.resetcCs |j|jfS)z&Return current line number and offset.rrrrrgetpos(szParserBase.getposcCsb||kr |S|j}|d||}|rN|j||_|d||}||d|_n|j|||_|S)N r )rawdatacountrrindexr)rijrZnlinesposrrr updatepos0s zParserBase.updateposc Cs|j}|d}|||ddkr*|dS|||ddvrBdSt|}|||ddkrh||S||dkr~||S|||\}}|dkr|S|d krd |_||kr||}|dkr||d|}|d kr||n |||dS|d vr t||}|sdS| }n|d vr<|||\} }nt||jvrR|d}n^|dkr|d krx| |d|}n$|d vr| d|n | dn| d|||dkr|SqdS)Nr >)-rz--[rZdoctyperz"'Z4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>linkZlinktypeelementattlistz&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration) rlen 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}||d|\}}|dkr&|S|dvr@t||d}n8|dvrZt||d}n|d||d|d}|sdS|r|d}|||d||dS)Nr>ZincludeZcdataignoreZtempZrcdata>elseifZendifz+unknown status keyword %r in marked sectionr) rr'_markedsectionclosesearch_msmarkedsectioncloser startr)r+)rrreportrZsectNamermatchrrrr&s  zParserBase.parse_marked_sectioncCsj|j}|||ddkr$|dt||d}|sr)r;>Zentityr"r#Znotationz)unknown declaration %r in internal subsetZ_parse_doctype_%;]rz%unexpected char after internal subsetz%unexpected char %r in internal subset)rr$rr r%r'getattrisspace) rr declstartposrr-rr.sr1methrrrr,sp                  z ParserBase._parse_doctype_subsetcCsF|||\}}|dkrdS|j}d||dvrB|d|dSdS)Nrrr )r'rfind)rrrFr1rrrrr_parse_doctype_elementsz!ParserBase._parse_doctype_elementcCs|j}|||\}}|||d}|dkr2dS|dkrB|dS|||\}}|dkr^|S|||d}|dkrzdS|dkrd||dvr|d|d}ndS|||dr|d}q||dsdSn|||\}}|||d}|sdS|dvrDt||}|r&|}ndS|||d}|sDdS|d kr||dd krddS||d|\}}|dkr|S|||d}|sdS|dkrB|dSqBdS) Nr rrrr()'"#)rr'rIrEr*r+)rrrFrr1rr.r0rrr_parse_doctype_attlistsX       z!ParserBase._parse_doctype_attlistcCs|||\}}|dkr|S|j}|||d}|s:dS|dkrJ|dS|dvrnt||}|sddS|}q"|||\}}|dkr"|Sq"dS)Nrr rrrM)r'rr*r+)rrrFr1rrr.r0rrr_parse_doctype_notation>s"  z"ParserBase._parse_doctype_notationcCs|j}|||ddkrR|d}|||d}|s:dS|rP|d}q"qVq"n|}|||\}}|dkrr|S|j||d}|sdS|dvrt||}|r|}qdSqr|dkr|dS|||\}}|dkrr|SqrdS)Nr rArrrMr)rrEr'r*r+)rrrFrrr.r1r0rrr_parse_doctype_entityUs4   z ParserBase._parse_doctype_entitycCs|j}t|}||krdSt||}|r\|}|}|t||krLdS||fS||||d|||ddS)N)Nrzexpected name token at %r) rr$_declname_matchgroupstriplowerr+rr )rrrFrr-r0rGr1rrrr'ys  zParserBase._scan_namecCsdS)Nr)rr/rrrr)szParserBase.unknown_declN)r )r )__name__ __module__ __qualname____doc__r r rrrr(r2r&r%r,rJrOrPrQr'r)rrrrrs" R  C 9$r) rZrecompiler<rSr*r?r7r9rrrrrs