Ë  s-ðrt;ãó¦—dZddlZddlmZmZmZmZmZmZddl m Z m Z m Z m Z mZmZmZmZmZgd¢ZGd„de«ZGd„d e«ZGd „d e«Zy) zÔ pygments.lexers.hdl ~~~~~~~~~~~~~~~~~~~ Lexers for hardware descriptor languages. :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. éN)Ú RegexLexerÚbygroupsÚincludeÚusingÚthisÚwords) ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚ PunctuationÚ Whitespace)Ú VerilogLexerÚSystemVerilogLexerÚ VhdlLexercóÚ—eZdZdZdZddgZdgZdgZdZde jdfd e fd e e je «fd e jfd e j fd efde dfde j$fdej(fdej(fdej*fdej,fdej.fdej0fdefdej.fdefdefdej6fde e ej:e«fde e ej:e«dfedd ¬!«efed"d#d ¬$«e jfed%d&d ¬$«ej@fed'd ¬!«ejBfd(ejDfd)efd*efgd+e d,fd-e jfd.e fd e e je «fd/e fgd0e jfd1e j fd2e jd,fd3e jfd4e jfd5e d,fgd6ej:d,fgd7œZ#d8„Z$y9):rzZ For verilog source code with preprocessor directives. .. versionadded:: 1.4 ÚverilogÚvz*.vztext/x-verilogú(?:\s|//.*?\n|/[*].*?[*]/)+z ^\s*`defineÚmacroú\s+ú(\\)(\n)ú/(\\\n)?/(\n|(.|\n)*?[^\\]\n)ú/(\\\n)?[*](.|\n)*?[*](\\\n)?/ú[{}#@]úL?"Ústringú4L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])'ú%(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?ú(\d+\.\d*|\.\d+|\d+[fF])[fF]?z([0-9]+)|(\'h)[0-9a-fA-F]+z([0-9]+)|(\'b)[01]+z([0-9]+)|(\'d)[0-9]+z([0-9]+)|(\'o)[0-7]+z\'[01xz]z\d+[Ll]?ú[~!%^&*+=|?:<>/-]ú [()\[\],.;\']ú `[a-zA-Z_]\w*ú^(\s*)(package)(\s+)ú^(\s*)(import)(\s+)Úimport)qÚalwaysÚ always_combÚ always_ffÚ always_latchÚandÚassignÚ automaticÚbeginÚbreakÚbufÚbufif0Úbufif1ÚcaseÚcasexÚcasezÚcmosÚconstÚcontinueÚdeassignÚdefaultÚdefparamÚdisableÚdoÚedgeÚelseÚendÚendcaseÚ endfunctionÚ endgenerateÚ endmoduleÚ endpackageÚ endprimitiveÚ endspecifyÚendtableÚendtaskÚenumÚeventÚfinalÚforÚforceÚforeverÚforkÚfunctionÚgenerateÚgenvarÚhighz0Úhighz1ÚifÚinitialÚinoutÚinputÚintegerÚjoinÚlargeÚ localparamÚ macromoduleÚmediumÚmoduleÚnandÚnegedgeÚnmosÚnorÚnotÚnotif0Únotif1ÚorÚoutputÚpackedÚ parameterÚpmosÚposedgeÚ primitiveÚpull0Úpull1ÚpulldownÚpullupÚrcmosÚrefÚreleaseÚrepeatÚreturnÚrnmosÚrpmosÚrtranÚrtranif0Úrtranif1ÚscalaredÚsignedÚsmallÚspecifyÚ specparamÚstrengthr Ústrong0Ústrong1ÚstructÚtableÚtaskÚtranÚtranif0Útranif1ÚtypeÚtypedefÚunsignedÚvarÚvectoredÚvoidÚwaitÚweak0Úweak1ÚwhileÚxnorÚxorú\b©Úsuffix)Ú accelerateÚautoexpand_vectornetsÚ celldefineÚdefault_nettyperBÚelsifÚ endcelldefineÚendifÚ endprotectÚ endprotectedÚexpand_vectornetsÚifdefÚifndefrÚ noaccelerateÚnoexpand_vectornetsÚnoremove_gatenamesÚnoremove_netnamesÚnounconnected_driveÚprotectÚ protectedÚremove_gatenamesÚremove_netnamesÚresetallÚ timescaleÚunconnected_driveÚundefÚ`)Úprefixrœ)4ÚbitsÚ bitstorealÚbitstoshortrealÚ countdriversÚdisplayÚfcloseÚfdisplayÚfinishÚfloorÚfmonitorÚfopenÚfstrobeÚfwriteÚ getpatternÚhistoryÚincsaver\ÚitorÚkeyÚlistÚlogÚmonitorÚ monitoroffÚ monitoronÚnokeyÚnologÚprinttimescaleÚrandomÚreadmembÚreadmemhÚrealtimeÚ realtobitsÚresetÚ reset_countÚ reset_valueÚrestartÚrtoiÚsaveÚscaleÚscopeÚshortrealtobitsÚ showscopesÚ showvariablesÚshowvarsÚ sreadmembÚ sreadmemhÚstimeÚstopÚstrobeÚtimeÚ timeformatÚwritez\$)ÚbyteÚshortintÚintÚlongintr]rèÚbitÚlogicÚregÚsupply0Úsupply1ÚtriÚtriandÚtriorÚtri0Útri1ÚtriregÚuwireÚwireÚwandÚ worshortrealÚrealrÕú[a-zA-Z_]\w*:(?!:)ú\$?[a-zA-Z_]\w*ú\\(\S+)Ú"ú#popú/\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})ú [^\\"\n]+ú\\ú[^/\n]+ú/[*](.|\n)*?[*]/z//.*?\nÚ/ú (?<=\\)\nú\nú [\w:]+\*?©Úrootr rr)có@—d}d|vr|dz }d|vr|dz }d|vr|dz }|S)z`Verilog code will use one of reg/wire/assign for sure, and that is not common elsewhere.rrñgš™™™™™¹?rûr/©)ÚtextÚresults ú8/usr/lib/python3.12/site-packages/pygments/lexers/hdl.pyÚ analyse_textzVerilogLexer.analyse_text„s?€ðˆØ �D‰=Ø �c‰MˆFØ �T‰>Ø �c‰MˆFØ �tÑ Ø �c‰MˆFàˆ óN)%Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚnameÚaliasesÚ filenamesÚ mimetypesÚ_wsr ÚPreprocrrrÚEscapeÚSingleÚ MultilinerÚCharrÚFloatÚHexÚBinÚIntegerÚOctr r ÚConstantr Ú Namespacer rÚBuiltinÚTypeÚLabelÚtokensrrrrrrs£„ñð €Dؘ#ЀGØ�€IØ!Ð"€Ið )€Cð˜WŸ_™_¨gÐ 6Ø �ZÐ Ø ™( 6§=¡=°*Ó=Ð >Ø -¨w¯~©~Ð >Ø .°×0AÑ0AÐ BØ ˜ Ð $Ø �V˜XÐ &Ø DÀfÇkÁkÐ RØ 5°v·|±|Ð DØ -¨v¯|©|Ð <Ø *¨F¯J©JÐ 7Ø # V§Z¡ZÐ 0Ø $ f§n¡nÐ 5Ø $ f§j¡jÐ 1Ø ˜&Ð !Ø ˜&Ÿ.™.Ð )Ø ! 8Ð ,Ø ˜{Ð +Ø ˜tŸ}™}Ð -à $¡h¨z¸7×;LÑ;LÈdÓ&SÐ TØ #¡X¨j¸'×:KÑ:KÈTÓ%RØ ð ñð:ð"CHô#Ið$ð% ñ(ðð"&¨eô5ð�_‰_ð ñðWð Uô ,ð�\‰\ð ñð1ð:?ô @ð �\‰\ð  ð # D§J¡JÐ /Ø  Ð &Ø ˜Ð ðWL ð\�6˜6Ð "Ø ?ÀÇÁÐ OØ ˜6Ð "Ø ™( 6§=¡=°*Ó=Ð >Ø �FˆOð  𘟙Р)Ø  '×"3Ñ"3Ð 4Ø ˜Ÿ™¨Ð 0Ø �7—?‘?Ð #Ø ˜7Ÿ?™?Ð +Ø �J Ð 'ð  ð˜4Ÿ>™>¨6Ð 2ð ñ{`€FóD rrc ó—eZdZdZdZddgZddgZdgZdZgde e e j«d f‘d e e e je «f‘d e e e je «d f‘d e f‘de ej e «f‘de j"f‘de j$f‘def‘dedf‘dej(f‘dej,f‘dej,f‘dej.f‘dej0f‘dej2f‘dej4f‘def‘dej2f‘def‘edd¬ «ej:f‘d!ef‘d"ej>f‘ed#d¬ «e f‘d$e e j@e ejB«f‘d%e e j@e ejB«f‘d&e e j@e ee ejB«f‘ed'd¬ «e jDf‘ed(d¬ «e jf‘ed)d¬ «ejFf‘d*ejHf‘d+ef‘d,ef‘d-ed.fd/ej fd0efde ej e «fd1efgd2e jfd3e j$fd4e j"d.fd5e jfd6e jfd7e d.fgd8ejd.fgd9œZ%y:);rz„ Extends verilog lexer to recognise all SystemVerilog keywords from IEEE 1800-2009 standard. .. versionadded:: 1.5 Ú systemverilogÚsvz*.svz*.svhztext/x-systemverilogrz^(\s*)(`define)rr'r(r)rrrrrrr r!r"r#z4([1-9][_0-9]*)?\s*\'[sS]?[bB]\s*[xXzZ?01][_xXzZ?01]*z6([1-9][_0-9]*)?\s*\'[sS]?[oO]\s*[xXzZ?0-7][_xXzZ?0-7]*z6([1-9][_0-9]*)?\s*\'[sS]?[dD]\s*[xXzZ?0-9][_xXzZ?0-9]*zB([1-9][_0-9]*)?\s*\'[sS]?[hH]\s*[xXzZ?0-9a-fA-F][_xXzZ?0-9a-fA-F]*z \'[01xXzZ]z [0-9][_0-9]*r$)ÚinsideÚdistršr›z[()\[\],.;\'$]r&)ÒÚ accept_onÚaliasr*r+r,r-r.Úassertr/Úassumer0Úbeforer1ÚbindÚbinsÚbinsofr2r3r4r5r6r7r8ÚcellÚcheckerÚclockingr9ÚconfigÚ constraintÚcontextr;ÚcoverÚ covergroupÚ coverpointÚcrossr<r=r>Údesignr?r@rArBrCrDÚ endcheckerÚ endclockingÚ endconfigrErFÚendgroupÚ endinterfacerGrHrIÚ endprogramÚ endpropertyÚ endsequencerJrKrLrMÚ eventuallyÚexpectÚexportÚexternrOÚ first_matchrPrQÚforeachrRrSÚforkjoinrTrUrVÚglobalrWrXrYÚiffÚifnoneÚ ignore_binsÚ illegal_binsÚimpliesÚ implementsr)ÚincdirrrZr[r\ÚinstanceÚ interconnectÚ interfaceÚ intersectr^Újoin_anyÚ join_noner_ÚletÚliblistÚlibraryÚlocalr`raÚmatchesrbÚmodportrcrdreÚnettypeÚnewÚnexttimerfrgÚnoshowcancelledrhrirjÚnullrkrlÚpackagermrnrorprqÚpriorityÚprogramÚpropertyr¯rrrsrtruÚpulsestyle_ondetectÚpulsestyle_oneventÚpureÚrandÚrandcÚrandcaseÚ randsequencervrwÚ reject_onrxryÚrestrictrzr{r|r}r~rÚs_alwaysÚ s_eventuallyÚ s_nexttimeÚs_untilÚ s_until_withr€ÚsequenceÚ showcancelledr‚ÚsoftÚsolverƒr„ÚstaticÚstrongr†r‡rˆÚsuperÚsync_accept_onÚsync_reject_onr‰ÚtaggedrŠrÚ throughoutÚ timeprecisionÚtimeunitr‹rŒr�r�ÚunionÚuniqueÚunique0ÚuntilÚ until_withÚuntypedÚuser’Úvirtualr”Ú wait_orderÚweakr•r–r—ÚwildcardÚwithÚwithinr˜r™z(class)(\s+)([a-zA-Z_]\w*)z(extends)(\s+)([a-zA-Z_]\w*)z,(endclass\b)(?:(\s*)(:)(\s*)([a-zA-Z_]\w*))?)!rïrëÚchandler:rNrír]rðrîrþrÕrñrìÚ shortrealr�r rèrŽr�r‘r“ròrórôrõrörùr÷rørúrürûÚwor)z `__FILE__z `__LINE__z`begin_keywordsz `celldefinez`default_nettypez`definez`elsez`elsifz `end_keywordsz`endcelldefinez`endifz`ifdefz`ifndefz`includez`linez`nounconnected_drivez`pragmaz `resetallz `timescalez`unconnected_drivez`undefz `undefineall)Äz$exitz$finishz$stopz $realtimez$stimez$timez$printtimescalez $timeformatz $bitstorealz$bitstoshortrealz$castz$itorz $realtobitsz$rtoiz$shortrealtobitsz$signedz $unsignedz$bitsz $isunboundedz $typenamez $dimensionsz$highz $incrementz$leftz$lowz$rightz$sizez$unpacked_dimensionsz$acosz$acoshz$asinz$asinhz$atanz$atan2z$atanhz$ceilz$clog2z$cosz$coshz$expz$floorz$hypotz$lnz$log10z$powz$sinz$sinhz$sqrtz$tanz$tanhz $countbitsz $countonesz $isunknownz$onehotz$onehot0z$infoz$errorz$fatalz$warningz$assertcontrolz$assertfailoffz $assertfailonz $assertkillz$assertnonvacuousonz $assertoffz $assertonz$assertpassoffz $assertpassonz$assertvacuousoffz$changedz $changed_gclkz$changing_gclkz $falling_gclkz$fellz $fell_gclkz $future_gclkz$pastz $past_gclkz $rising_gclkz$rosez $rose_gclkz$sampledz$stablez $stable_gclkz $steady_gclkz$coverage_controlz $coverage_getz$coverage_get_maxz$coverage_mergez$coverage_savez $get_coveragez$load_coverage_dbz$set_coverage_db_namez$dist_chi_squarez $dist_erlangz$dist_exponentialz $dist_normalz $dist_poissonz$dist_tz $dist_uniformz$randomz$q_addz$q_examz$q_fullz $q_initializez $q_removez$async$and$arrayz$async$and$planez$async$nand$arrayz$async$nand$planez$async$nor$arrayz$async$nor$planez$async$or$arrayz$async$or$planez$sync$and$arrayz$sync$and$planez$sync$nand$arrayz$sync$nand$planez$sync$nor$arrayz$sync$nor$planez$sync$or$arrayz$sync$or$planez$systemz$displayz $displaybz $displayhz $displayoz$monitorz $monitorbz $monitorhz $monitoroz $monitoroffz $monitoronz$strobez$strobebz$strobehz$strobeoz$writez$writebz$writehz$writeoz$fclosez $fdisplayz $fdisplaybz $fdisplayhz $fdisplayoz$feofz$ferrorz$fflushz$fgetcz$fgetsz $fmonitorz $fmonitorbz $fmonitorhz $fmonitoroz$fopenz$freadz$fscanfz$fseekz$fstrobez $fstrobebz $fstrobehz $fstrobeoz$ftellz$fwritez$fwritebz$fwritehz$fwriteoz$rewindz$sformatz $sformatfz$sscanfz$swritez$swritebz$swritehz$swriteoz$ungetcz $readmembz $readmemhz $writemembz $writememhz$test$plusargsz$value$plusargsz$dumpallz $dumpfilez $dumpflushz $dumplimitz$dumpoffz$dumponz $dumpportsz $dumpportsallz$dumpportsflushz$dumpportslimitz $dumpportsoffz $dumpportsonz $dumpvarsrÿrrrrrrrrrz//.*?$r r r r r N)&rrrrrrrrrrrr rr r*rr r!r"rr#rr$r&r(r'r%r rÚWordr r)Ú DeclarationÚClassr,r+r-r.rrrrr’s7„ñð €DØ Ð%€GؘÐ!€IØ'Ð(€Ið )€Cð} Ø ¡¨*°g·o±oÓ!FÈÐ Pð} à $¡h¨z¸7×;LÑ;LÈjÓ&YÐ Zð} ð$¡X¨j¸'×:KÑ:KÈZÓ%XÐZbÐ cð} ð �ZÐ ð } ð ™( 6§=¡=°*Ó=Ð >ð } ð.¨w¯~©~Ð >ð} ð/°×0AÑ0AÐ Bð} ð˜ Ð $ð} ð�V˜XÐ &ð} ðEÀfÇkÁkÐ Rð} ð6°v·|±|Ð Dð} ð.¨v¯|©|Ð <ð} ð EØ �Z‰Zð ð!} ð$GØ �Z‰Zð ð%} ð(GØ �^‰^ð ð)} ð,SØ �Z‰Zð ð-} ð2˜FÐ #ð3} ð4˜fŸn™nÐ -ð5} ð8" 8Ð ,ð9} ñ:Ð%¨eÔ 4°h·m±mÐ Dð;} ð>  Ð ,ð?} ð@˜tŸ}™}Ð -ðA} ñDð(ðRôS)ðTðU* ðE} ð\+Ù �g×)Ñ)¨:°t·z±zÓ Bð Dð]} ð`-Ù �g×)Ñ)¨:°t·z±zÓ Bð Dða} ðd=Ù �g×)Ñ)¨:°{ÀJÐPT×PZÑPZÓ [ð ]ðe} ñjð@ðô ð�\‰\ð ðk} ñBðNð ô ð�_‰_ð ðC} ñTðMðZ ô[M!ð\�\‰\ð]N ðU} ðt# D§J¡JÐ /ðu} ðv  Ð &ðw} ðx˜Ð ðy} ð~�6˜6Ð "Ø ?ÀÇÁÐ OØ ˜6Ð "Ø ™( 6§=¡=°*Ó=Ð >Ø �FˆOð  𘟙Р)Ø  '×"3Ñ"3Ð 4Ø ˜Ÿ™¨Ð /Ø �7—?‘?Ð #Ø ˜7Ÿ?™?Ð +Ø �J Ð 'ð  ð˜4Ÿ>™>¨6Ð 2ð ñ]Q�Frrcóø—eZdZdZdZdgZddgZdgZejejzZ de fde eje «fdej"fd ej$fd efd ej*fd efd efde ee ej0«fde ee e«fde ee ej0e«fde ee ej0«fde ej0ej0«fedd¬«ej0fde ee ej4«fde ee ej4e ee ej4e e« fde ej4ee e«fde ee«e «dfed«ed«ed«defged«dej4fde fded fged!d¬«ej<fged"d¬«efgd#ej@fd$ej@fd%ejBfd&ejDfd'ejFfd(ejHfgd)œZ%y*)+rz: For VHDL source code. .. versionadded:: 1.5 Úvhdlz*.vhdlz*.vhdz text/x-vhdlrrz--.*?$z'(U|X|0|1|Z|W|L|H|-)'r$z '[a-z_]\w*r%z "[^\n\\"]*"z(library)(\s+)([a-z_]\w*)z(use)(\s+)(entity)z(use)(\s+)([a-z_][\w.]*\.)(all)z(use)(\s+)([a-z_][\w.]*)z(std|ieee)(\.[a-z_]\w*))ÚstdÚieeeÚworkršr›z"(entity|component)(\s+)([a-z_]\w*)zN(architecture|configuration)(\s+)([a-z_]\w*)(\s+)(of)(\s+)([a-z_]\w*)(\s+)(is)z ([a-z_]\w*)(:)(\s+)(process|for)z (end)(\s+)ÚendblockÚtypesÚkeywordsÚnumbersz [a-z_]\w*Ú;r)ÚbooleanrïÚ characterÚseverity_levelr]rèÚ delay_lengthÚnaturalÚpositiver Ú bit_vectorÚfile_open_kindÚfile_open_statusÚ std_ulogicÚstd_ulogic_vectorÚ std_logicÚstd_logic_vectorr�r�)_ÚabsÚaccessÚafterr5Úallr.Ú architectureÚarrayr6Ú attributer1ÚblockÚbodyÚbufferÚbusr6Ú componentÚ configurationÚconstantÚ disconnectÚdowntorBr¡rCÚentityÚexitÚfilerPrTrUÚgenericÚgroupÚguardedrYÚimpureÚinÚinertialr[ÚisÚlabelrfÚlinkageÚliteralÚloopÚmapÚmodrdrkÚnextrgrhrnÚofÚonÚopenrkÚothersÚoutroÚportÚ postponedÚ procedureÚprocessruÚrangeÚrecordÚregisterÚrejectÚremrzÚrolÚrorÚselectÚseverityÚsignalÚsharedÚslaÚsllÚsraÚsrlÚsubtypeÚthenÚtoÚ transportrŽÚunitsr‘r”Úvariabler”Úwhenr—r™r˜r™z\d{1,2}#[0-9a-f_]+#?z\d+z(\d+\.\d*|\.\d+|\d+)E[+-]?\d+z X"[0-9a-f_]+"z O"[0-7_]+"z B"[01_]+")rr¦r§r¨r©N)&rrrrrrrrÚreÚ MULTILINEÚ IGNORECASEÚflagsrrrr r r!r#r r Ú Attributerr r*rr rrrr,rr'r$r%r(r&r.rrrrrus�„ñð €D؈h€Gؘ7Ð#€IØ�€IØ �L‰L˜2Ÿ=™=Ñ (€Eð�ZÐ Ø ™( 6§=¡=°*Ó=Ð >Ø ˜Ÿ™Ð 'Ø % v§{¡{Ð 3Ø ! 8Ð ,Ø ˜DŸN™NÐ +Ø ˜{Ð +Ø ˜VÐ $à )Ù �g˜z¨4¯>©>Ó :ð <à "¡H¨W°jÀ'Ó$JÐ KØ /Ù �g˜z¨4¯>©>¸7Ó Cð Eà (Ù �g˜z¨4¯>©>Ó :ð <à 'Ù �d—n‘n d§n¡nÓ 5ð 7á Ð*°5Ô 9Ø �^‰^ð à 2Ù �g˜z¨4¯:©:Ó 6ð 8ð.á �g˜z¨4¯:©:°zÀ7ÈJØ—j‘j *¨gó7ð 8ð1Ù �d—j‘j (¨J¸Ó @ð Bà ™H¡U¨4£[°*Ó=¸zÐ Já �GÓ Ù �JÓ Ù �IÓ à ˜4Ð ðG$ ñL �JÓ Ø ˜4Ÿ:™:Ð &Ø �ZÐ Ø �; Ð 'ð  ñðGðPUô Vð �\‰\ð  ð ñð0ð 9>ô!?ð"ð# ð ð*% f§n¡nÐ 5Ø �V—^‘^Ð $Ø -¨v¯|©|Ð <Ø ˜vŸz™zÐ *Ø ˜FŸJ™JÐ 'Ø ˜6Ÿ:™:Ð &ð  ñQP�Frr)rrøÚpygments.lexerrrrrrrÚpygments.tokenr r r r r rrrrÚ__all__rrrrrrÚrsWðñó çL×L÷$÷$õ$ò >€ô{�:ô{ô|`˜ô`ôF\� õ\r