tartrazine/lexers/verilog.xml

159 lines
6.1 KiB
XML
Raw Permalink Normal View History

2024-08-02 20:03:49 +00:00
<lexer>
<config>
<name>verilog</name>
<alias>verilog</alias>
<alias>v</alias>
<filename>*.v</filename>
<mime_type>text/x-verilog</mime_type>
<ensure_nl>true</ensure_nl>
</config>
<rules>
<state name="root">
<rule pattern="^\s*`define">
<token type="CommentPreproc"/>
<push state="macro"/>
</rule>
<rule pattern="\n">
<token type="Text"/>
</rule>
<rule pattern="\s+">
<token type="Text"/>
</rule>
<rule pattern="\\\n">
<token type="Text"/>
</rule>
<rule pattern="/(\\\n)?/(\n|(.|\n)*?[^\\]\n)">
<token type="CommentSingle"/>
</rule>
<rule pattern="/(\\\n)?[*](.|\n)*?[*](\\\n)?/">
<token type="CommentMultiline"/>
</rule>
<rule pattern="[{}#@]">
<token type="Punctuation"/>
</rule>
<rule pattern="L?&#34;">
<token type="LiteralString"/>
<push state="string"/>
</rule>
<rule pattern="L?&#39;(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\&#39;\n])&#39;">
<token type="LiteralStringChar"/>
</rule>
<rule pattern="(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[lL]?">
<token type="LiteralNumberFloat"/>
</rule>
<rule pattern="(\d+\.\d*|\.\d+|\d+[fF])[fF]?">
<token type="LiteralNumberFloat"/>
</rule>
<rule pattern="([0-9]+)|(\&#39;h)[0-9a-fA-F]+">
<token type="LiteralNumberHex"/>
</rule>
<rule pattern="([0-9]+)|(\&#39;b)[01]+">
<token type="LiteralNumberBin"/>
</rule>
<rule pattern="([0-9]+)|(\&#39;d)[0-9]+">
<token type="LiteralNumberInteger"/>
</rule>
<rule pattern="([0-9]+)|(\&#39;o)[0-7]+">
<token type="LiteralNumberOct"/>
</rule>
<rule pattern="\&#39;[01xz]">
<token type="LiteralNumber"/>
</rule>
<rule pattern="\d+[Ll]?">
<token type="LiteralNumberInteger"/>
</rule>
<rule pattern="\*/">
<token type="Error"/>
</rule>
<rule pattern="[~!%^&amp;*+=|?:&lt;&gt;/-]">
<token type="Operator"/>
</rule>
<rule pattern="[()\[\],.;\&#39;]">
<token type="Punctuation"/>
</rule>
<rule pattern="`[a-zA-Z_]\w*">
<token type="NameConstant"/>
</rule>
<rule pattern="^(\s*)(package)(\s+)">
<bygroups>
<token type="Text"/>
<token type="KeywordNamespace"/>
<token type="Text"/>
</bygroups>
</rule>
<rule pattern="^(\s*)(import)(\s+)">
<bygroups>
<token type="Text"/>
<token type="KeywordNamespace"/>
<token type="Text"/>
</bygroups>
<push state="import"/>
</rule>
<rule pattern="(endprimitive|always_latch|macromodule|always_comb|endgenerate|endfunction|endpackage|endspecify|localparam|parameter|primitive|always_ff|automatic|specparam|endmodule|rtranif1|scalared|continue|deassign|endtable|defparam|function|strength|generate|pulldown|vectored|rtranif0|unsigned|specify|endcase|negedge|strong0|disable|default|endtask|posedge|strong1|typedef|tranif1|integer|forever|release|initial|tranif0|highz0|genvar|highz1|pullup|notif0|bufif1|bufif0|repeat|medium|return|struct|assign|signed|module|packed|string|output|notif1|always|final|casex|while|table|const|large|break|begin|input|pull0|pull1|inout|weak1|rcmos|weak0|casez|force|small|rnmos|rpmos|rtran|event|type|void|enum|wait|fork|join|else|edge|pmos|nand|cmos|nmos|task|xnor|case|tran|buf|ref|end|var|and|xor|for|nor|not|do|if|or)\b">
<token type="Keyword"/>
</rule>
<rule pattern="`(autoexpand_vectornets|nounconnected_drive|noexpand_vectornets|noremove_gatenames|unconnected_drive|noremove_netnames|expand_vectornets|remove_gatenames|default_nettype|remove_netnames|endcelldefine|noaccelerate|endprotected|accelerate|celldefine|endprotect|protected|timescale|resetall|protect|include|ifndef|ifdef|endif|elsif|undef|else)\b">
<token type="CommentPreproc"/>
</rule>
<rule pattern="\$(shortrealtobits|bitstoshortreal|printtimescale|showvariables|countdrivers|reset_value|reset_count|getpattern|showscopes|realtobits|bitstoreal|monitoroff|timeformat|sreadmemh|monitoron|sreadmemb|fmonitor|showvars|fdisplay|realtime|readmemb|readmemh|monitor|history|fstrobe|display|restart|incsave|strobe|fwrite|finish|random|fclose|stime|nokey|fopen|floor|nolog|scale|scope|input|reset|write|rtoi|bits|list|stop|itor|time|save|key|log)\b">
<token type="NameBuiltin"/>
</rule>
<rule pattern="(woshortreal|shortint|realtime|longint|integer|supply0|supply1|triand|trireg|uwire|logic|trior|byte|wand|tri0|tri1|time|real|wire|reg|bit|int|tri)\b">
<token type="KeywordType"/>
</rule>
<rule pattern="[a-zA-Z_]\w*:(?!:)">
<token type="NameLabel"/>
</rule>
<rule pattern="\$?[a-zA-Z_]\w*">
<token type="Name"/>
</rule>
</state>
<state name="string">
<rule pattern="&#34;">
<token type="LiteralString"/>
<pop depth="1"/>
</rule>
<rule pattern="\\([\\abfnrtv&#34;\&#39;]|x[a-fA-F0-9]{2,4}|[0-7]{1,3})">
<token type="LiteralStringEscape"/>
</rule>
<rule pattern="[^\\&#34;\n]+">
<token type="LiteralString"/>
</rule>
<rule pattern="\\\n">
<token type="LiteralString"/>
</rule>
<rule pattern="\\">
<token type="LiteralString"/>
</rule>
</state>
<state name="macro">
<rule pattern="[^/\n]+">
<token type="CommentPreproc"/>
</rule>
<rule pattern="/[*](.|\n)*?[*]/">
<token type="CommentMultiline"/>
</rule>
<rule pattern="//.*?\n">
<token type="CommentSingle"/>
<pop depth="1"/>
</rule>
<rule pattern="/">
<token type="CommentPreproc"/>
</rule>
<rule pattern="(?&lt;=\\)\n">
<token type="CommentPreproc"/>
</rule>
<rule pattern="\n">
<token type="CommentPreproc"/>
<pop depth="1"/>
</rule>
</state>
<state name="import">
<rule pattern="[\w:]+\*?">
<token type="NameNamespace"/>
<pop depth="1"/>
</rule>
</state>
</rules>
2024-08-26 23:18:28 +00:00
</lexer>