o aW@sdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z m Z mZmZmZmZmZgdZGdddeZGdd d eZGd d d eZdS) z pygments.lexers.hdl ~~~~~~~~~~~~~~~~~~~ Lexers for hardware descriptor languages. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N) RegexLexerbygroupsincludeusingthiswords) TextCommentOperatorKeywordNameStringNumber Punctuation Whitespace) VerilogLexerSystemVerilogLexer VhdlLexerc@seZdZdZdZddgZdgZdgZdZde j dfd e fd e e je fd e jfd e jfd efde dfde jfdejfdejfdejfdejfdejfdejfdefdejfdefdefdejfde e ejefde e ejedfedd d!efed"d#d d$e j fed%d&d d$ej fed'd d!ej!fd(ej"fd)efd*efgd+e d,fd-e jfd.e fd e e je fd/e fgd0e j fd1e jfd2e jd,fd3e j fd4e j fd5e d,fgd6ejd,fgd7Z#d8d9Z$d:S);rzZ For verilog source code with preprocessor directives. .. versionadded:: 1.4 verilogvz*.vztext/x-verilog(?:\s|//.*?\n|/[*].*?[*]/)+z ^\s*`definemacro\s+(\\)(\n)/(\\\n)?/(\n|(.|\n)*?[^\\]\n)/(\\\n)?[*](.|\n)*?[*](\\\n)?/[{}#@]L?"string4L?'(\\.|\\[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)qalways always_comb always_ff always_latchandassign automaticbeginbreakbufbufif0bufif1casecasexcasezcmosconstcontinuedeassigndefaultdefparamdisabledoedgeelseendendcase endfunction endgenerate endmodule endpackage endprimitive endspecifyendtableendtaskenumeventfinalforforceforeverforkfunctiongenerategenvarhighz0highz1ifinitialinoutinputintegerjoinlarge localparam macromodulemediummodulenandnegedgenmosnornotnotif0notif1oroutputpacked parameterpmosposedge primitivepull0pull1pulldownpulluprcmosrefreleaserepeatreturnrnmosrpmosrtranrtranif0rtranif1scalaredsignedsmallspecify specparamstrengthrstrong0strong1structtabletasktrantranif0tranif1typetypedefunsignedvarvectoredvoidwaitweak0weak1whilexnorxor\bsuffix) accelerateautoexpand_vectornets celldefinedefault_nettyper@elsif endcelldefineendif endprotect endprotectedexpand_vectornetsifdefifndefr noacceleratenoexpand_vectornetsnoremove_gatenamesnoremove_netnamesnounconnected_driveprotect protectedremove_gatenamesremove_netnamesresetall timescaleunconnected_driveundef`)prefixr)4bits bitstorealbitstoshortreal countdriversdisplayfclosefdisplayfinishfloorfmonitorfopenfstrobefwrite getpatternhistoryincsaverZitorkeylistlogmonitor monitoroff monitoronnokeynologprinttimescalerandomreadmembreadmemhrealtime realtobitsreset reset_count reset_valuerestartrtoisavescalescopeshortrealtobits showscopes showvariablesshowvars sreadmemb sreadmemhstimestopstrobetime timeformatwritez\$)byteshortintintlongintr[rbitlogicregsupply0supply1tritriandtriortri0tri1trireguwirewirewand worshortrealrealr[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:]+\*?rootrrr'cCs8d}d|vr |d7}d|vr|d7}d|vr|d7}|S)z`Verilog code will use one of reg/wire/assign for sure, and that is not common elsewhere.rrg?rr-)textresultr r 5/usr/lib/python3/dist-packages/pygments/lexers/hdl.py analyse_textszVerilogLexer.analyse_textN)%__name__ __module__ __qualname____doc__namealiases filenames mimetypes_wsr Preprocrrr EscapeSingle MultilinerCharrFloatHexBinIntegerOctr r Constantr NamespacerrBuiltinTypeLabeltokensrr r r rrs     N   brc @s<eZdZdZdZddgZddgZdgZdZgde e e j d fd e e e je fd e e e je d fd e fde eje fde jfde jfdefdedfdejfdejfdejfdejfdejfdejfdejfdefdejfdefeddd ejfd!efd"ejfed#dd e fd$e e j e ej!fd%e e j e ej!fd&e e j e ee ej!fed'dd e j"fed(dd e j fed)dd ej#fd*ej$fd+efd,efd-ed.fd/ejfd0efde eje fd1efgd2e j fd3e jfd4e jd.fd5e j fd6e j fd7e d.fgd8ejd.fgd9Z%d:S);rz Extends verilog lexer to recognise all SystemVerilog keywords from IEEE 1800-2009 standard. .. versionadded:: 1.5 systemverilogsvz*.svz*.svhztext/x-systemverilogrz^(\s*)(`define)rr%r&r'rrrrrrrrr 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")insidedistrrz[()\[\],.;\'$]r$) accept_onaliasr(r)r*r+r,assertr-assumer.beforer/bindbinsbinsofr0r1r2r3r4r5r6cellcheckerclockingr7config constraintcontextr9cover covergroup coverpointcrossr:r;r<designr=r>r?r@rArB endchecker endclocking endconfigrCrDendgroup endinterfacerErFrG endprogram endproperty endsequencerHrIrJrK eventuallyexpectexportexternrM first_matchrNrOforeachrPrQforkjoinrRrSrTglobalrUrVrWiffifnone ignore_bins illegal_binsimplies implementsr'incdirrrXrYrZinstance interconnect interface intersectr\join_any join_noner]letliblistlibrarylocalr^r_matchesr`modportrarbrcnettypenewnexttimerdrenoshowcancelledrfrgrhnullrirjpackagerkrlrmrnropriorityprogrampropertyrrprqrrrspulsestyle_ondetectpulsestyle_oneventpurerandrandcrandcase randsequencertru reject_onrvrwrestrictrxryrzr{r|r}s_always s_eventually s_nexttimes_until s_until_withr~sequence showcancelledrsoftsolverrstaticstrongrrrsupersync_accept_onsync_reject_onrtaggedrr throughout timeprecisiontimeunitrrrrunionuniqueunique0until until_withuntypeduservirtualr wait_orderweakrrrwildcardwithwithinrrz(class)(\s+)([a-zA-Z_]\w*)z(extends)(\s+)([a-zA-Z_]\w*)z,(endclass\b)(?:(\s*)(:)(\s*)([a-zA-Z_]\w*))?)!rrchandler8rLrr[rrrrrr shortrealrrrrrrrrrrrrrrrrrrwor)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 $dumpvarsrrrrrrrrrrz//.*?$rrr r r N)&rrrrrrrrrrrr rr r&r rrrrrrr r"r$r#r!r rWordr r% DeclarationClassr(r'r)r*r r r rrs     ")*NPRU  ajMN;<=@   rc@seZdZdZdZdgZddgZdgZej ej BZ de fde eje fdejfd ejfd efd ejfd efd efde ee ejfde ee efde ee ejefde ee ejfde ejejfedddejfde ee ejfde ee eje ee eje e fde ejee efde eee dfedededdefgeddejfde fded fged!ddejfged"ddefgd#ej fd$ej fd%ej!fd&ej"fd'ej#fd(ej$fgd)Z%d*S)+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*))stdieeeworkrrz"(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+)endblocktypeskeywordsnumbersz [a-z_]\w*;r)booleanr characterseverity_levelr[r delay_lengthnaturalpositiver bit_vectorfile_open_kindfile_open_status std_ulogicstd_ulogic_vector std_logicstd_logic_vectorrr)_absaccessafterr0allr, architecturearrayr1 attributer/blockbodybufferbusr4 component configurationconstant disconnectdowntor@rrAentityexitfilerNrRrSgenericgroupguardedrWimpureininertialrYislabelralinkageliteralloopmapmodrbrfnextrerfriofonopenriothersoutrjport postponed procedureprocessrprangerecordregisterrejectremrxrolrorselectseveritysignalsharedslasllsrasrlsubtypethento transportrunitsrrvariablerwhenrrrrz\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_]+")r rrrrN)&rrrrrrrrre MULTILINE IGNORECASEflagsrrr rr rrr r Attributerr r&rrrrrr(rr#r r!r$r"r*r r r rrus      &  r)rrpygments.lexerrrrrrrpygments.tokenrr r r r r rrr__all__rrrr r r rs ,~d