You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
346 lines
16 KiB
346 lines
16 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE language SYSTEM "language.dtd"
|
|
[
|
|
<!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#%@-]*">
|
|
<!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">
|
|
<!ENTITY bos "(|[^"-]*)\b"> <!-- bol or space following -->
|
|
<!-- <!ENTITY bos "^(|.*\s)">--> <!-- bol or space following -->
|
|
<!ENTITY eos "\b"> <!-- eol or space following -->
|
|
<!-- <!ENTITY eos "(?=($|\s))">--> <!-- eol or space following -->
|
|
<!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following -->
|
|
<!ENTITY label "((&varname;)\s*:\s*)?">
|
|
|
|
]>
|
|
<language name="VHDL" version="1.08" kateversion="2.3" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Jan Michel (jan@mueschelsoft.de)">
|
|
<highlighting>
|
|
<list name="keywordsToplevel">
|
|
<item> file </item>
|
|
<item> package </item>
|
|
<item> library </item>
|
|
<item> use </item>
|
|
<!--
|
|
<item> entity </item>
|
|
<item> architecture </item>
|
|
<item> of </item>
|
|
<item> configuration </item>
|
|
-->
|
|
</list>
|
|
<list name="keywords">
|
|
<item> access </item>
|
|
<item> after </item>
|
|
<item> alias </item>
|
|
<item> all </item>
|
|
<item> assert </item>
|
|
<item> begin </item>
|
|
<item> block </item>
|
|
<item> body </item>
|
|
<item> bus </item>
|
|
<item> component </item>
|
|
<item> constant </item>
|
|
<item> disconnect </item>
|
|
<item> downto </item>
|
|
<item> end </item>
|
|
<item> exit </item>
|
|
<item> function </item>
|
|
<item> generate </item>
|
|
<item> generic </item>
|
|
<item> group </item>
|
|
<item> guarded </item>
|
|
<item> impure </item>
|
|
<item> inertial </item>
|
|
<item> is </item>
|
|
<item> label </item>
|
|
<item> linkage </item>
|
|
<item> literal </item>
|
|
<item> map </item>
|
|
<item> new </item>
|
|
<item> next </item>
|
|
<item> null </item>
|
|
<item> on </item>
|
|
<item> open </item>
|
|
<item> others </item>
|
|
<item> port </item>
|
|
<item> postponed </item>
|
|
<item> procedure </item>
|
|
<item> process </item>
|
|
<item> pure </item>
|
|
<item> range </item>
|
|
<item> record </item>
|
|
<item> register </item>
|
|
<item> reject </item>
|
|
<item> report </item>
|
|
<item> return </item>
|
|
<item> select </item>
|
|
<item> severity </item>
|
|
<item> signal </item>
|
|
<item> shared </item>
|
|
<item> subtype </item>
|
|
<item> then </item>
|
|
<item> to </item>
|
|
<item> transport </item>
|
|
<item> type </item>
|
|
<item> unaffected </item>
|
|
<item> units </item>
|
|
<item> until </item>
|
|
<item> variable </item>
|
|
<item> wait </item>
|
|
<item> when </item>
|
|
<item> with </item>
|
|
<item> note </item>
|
|
<item> warning </item>
|
|
<item> error </item>
|
|
<item> failure </item>
|
|
<item> in </item>
|
|
<item> inout </item>
|
|
<item> out </item>
|
|
<item> buffer </item>
|
|
<item> and </item>
|
|
<item> or </item>
|
|
<item> xor </item>
|
|
<item> not </item>
|
|
</list>
|
|
|
|
<list name="if">
|
|
<item> else </item>
|
|
<item> elsif </item>
|
|
</list>
|
|
|
|
<list name="forOrWhile">
|
|
<item> loop </item>
|
|
</list>
|
|
|
|
<list name="directions">
|
|
<item> in </item>
|
|
<item> inout </item>
|
|
<item> out </item>
|
|
<item> buffer </item>
|
|
</list>
|
|
|
|
<list name="signals">
|
|
<item> signal </item>
|
|
<item> variable </item>
|
|
<item> constant </item>
|
|
<item> type </item>
|
|
</list>
|
|
<!-- <list name="logics">
|
|
<item> and </item>
|
|
<item> or </item>
|
|
<item> xor </item>
|
|
<item> not </item>
|
|
</list>
|
|
|
|
<list name="rangeDirection">
|
|
<item> to </item>
|
|
<item> downto </item>
|
|
</list>-->
|
|
|
|
<list name="types">
|
|
<item> bit </item>
|
|
<item> bit_vector </item>
|
|
<item> character </item>
|
|
<item> boolean </item>
|
|
<item> integer </item>
|
|
<item> real </item>
|
|
<item> time </item>
|
|
<item> string </item>
|
|
<item> severity_level </item>
|
|
<item> positive </item>
|
|
<item> natural </item>
|
|
<item> signed </item>
|
|
<item> unsigned </item>
|
|
<item> line </item>
|
|
<item> text </item>
|
|
<item> std_logic </item>
|
|
<item> std_logic_vector </item>
|
|
<item> std_ulogic </item>
|
|
<item> std_ulogic_vector </item>
|
|
<item> qsim_state </item>
|
|
<item> qsim_state_vector </item>
|
|
<item> qsim_12state </item>
|
|
<item> qsim_12state_vector </item>
|
|
<item> qsim_strength </item>
|
|
<item> mux_bit </item>
|
|
<item> mux_vector </item>
|
|
<item> reg_bit </item>
|
|
<item> reg_vector </item>
|
|
<item> wor_bit </item>
|
|
<item> wor_vector </item>
|
|
</list>
|
|
<contexts>
|
|
<!-- start / global environment -->
|
|
<context name="start" attribute="Normal Text" lineEndContext="#stay">
|
|
<RegExpr attribute="Normal Text" context="entity" String="&bos;(entity\s*(&varname;)\s*is)&eos;" beginRegion="EntityRegion1" lookAhead="true" insensitive="true" />
|
|
<RegExpr attribute="Normal Text" context="architecture" String="&bos;(architecture\s*(&varname;)\s*of\s*&varname;\s*is)&eos;" beginRegion="ArchitectureRegion1" lookAhead="true" insensitive="true" />
|
|
<Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
|
|
<keyword attribute="Keyword" context="#stay" String="keywordsToplevel"/>
|
|
</context>
|
|
|
|
<context name="preDetection" attribute="Normal Text" lineEndContext="#stay">
|
|
<Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
|
|
<DetectChar attribute="Vector" context="string" char=""" />
|
|
<AnyChar attribute="Operator" context="#stay" String="[&><=:+\-*\/|]().,;" />
|
|
<DetectChar attribute="Attribute" context="attribute" char="'" />
|
|
</context>
|
|
|
|
<!-- general keywords detection -->
|
|
<context name="generalDetection" attribute="Normal Text" lineEndContext="#stay">
|
|
<keyword attribute="Data Type" context="#stay" String="types"/>
|
|
<keyword attribute="Signal" context="#stay" String="signals"/>
|
|
<keyword attribute="Keyword" context="#stay" String="keywords"/>
|
|
<Int attribute="Integer" context="#stay" />
|
|
<HlCChar attribute="Bit" context="#stay" />
|
|
</context>
|
|
|
|
|
|
|
|
<!-- entity environment -->
|
|
<context name="entity" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Redirection" context="#stay" String="%2" dynamic="true" />
|
|
<IncludeRules context="preDetection" />
|
|
<RegExpr attribute="Redirection" context="#pop" String="^(|\s.*)end(\s*entity)?\s*(%3)?\s*;" dynamic="true" endRegion="EntityRegion1" insensitive="true" />
|
|
<!--<RegExpr attribute="Alert" context="generic" String="generic"/>-->
|
|
<IncludeRules context="generalDetection" />
|
|
</context>
|
|
<!-- <context name="generic" attribute="Normal Text" lineEndContext="#stay">
|
|
<DetectChar attribute="Operator" context="range" char="("/>
|
|
<Detect2Chars attribute="Alert" context="#pop" char=")" char1=";"/>
|
|
</context>
|
|
<context name="range" attribute="Normal Text" lineEndContext="#stay">
|
|
<keyword attribute="Keyword" context="#stay" String="rangeDirection"/>
|
|
<Int attribute="Integer" context="#stay" />
|
|
<HlCChar attribute="Bit" context="#stay" />
|
|
<DetectChar attribute="Vector" context="string" char=""" />
|
|
<DetectChar attribute="Operator" context="#pop" char=")"/>
|
|
</context>-->
|
|
|
|
<!-- architecture environment -->
|
|
<context name="architecture" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Redirection" context="#stay" String="%2" dynamic="true" />
|
|
<IncludeRules context="preDetection" />
|
|
<StringDetect attribute="Redirection" context="#stay" String="begin" insensitive="true" />
|
|
<RegExpr attribute="Redirection" context="#pop" String="&bos;end(\s+architecture)?(\s+%3)?\s*;" dynamic="true" endRegion="ArchitectureRegion1" insensitive="true" />
|
|
<RegExpr attribute="Normal Text" context="component" String="&bos;(component\s+(&varname;)(\s+is)?)&eos;" beginRegion="ComponentRegion1" lookAhead="true" insensitive="true" />
|
|
<RegExpr attribute="Normal Text" context="process1" String="^(|\s+)(&label;process)&eos;" beginRegion="ProcessRegion1" lookAhead="true" insensitive="true" />
|
|
<RegExpr attribute="Normal Text" context="generate1" String="^(|\s+)((&varname;)\s*:\s*((for\s+.+\s+in\s+.+)|(if\s+.+))\s+generate)&eos;" beginRegion="GenerateRegion1" lookAhead="true" insensitive="true" />
|
|
<RegExpr attribute="Normal Text" context="instance" String="^(|\s+)((&varname;)\s*:\s*(&varname;))&eos;" beginRegion="InstanceRegion1" lookAhead="true" insensitive="true" />
|
|
<IncludeRules context="generalDetection" />
|
|
</context>
|
|
<!-- <context name="architectureBeforeBegin" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Redirection" context="#stay" String="%1" dynamic="true" />
|
|
<RegExpr attribute="Redirection" context="#pop" String="end\s*%2\s*;" dynamic="true" endRegion="ArchitectureRegion1" />
|
|
<StringDetect attribute="Redirection" context="architectureAfterBegin" String="begin" />
|
|
<RegExpr attribute="Redirection" context="#pop#pop" String="end\s*%2\s*;" dynamic="true" endRegion="ArchitectureRegion1" />
|
|
<IncludeRules context="normal" />
|
|
</context>
|
|
<context name="architectureAfterBegin" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Redirection" context="#stay" String="%1" dynamic="true" />
|
|
<IncludeRules context="normal" />
|
|
</context>-->
|
|
|
|
<!-- component environment -->
|
|
<context name="component" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Redirection" context="" String="%2" dynamic="true" />
|
|
<IncludeRules context="preDetection" />
|
|
<RegExpr attribute="Redirection" context="#pop" String="&bos;end\s+component(\s+%3)?\s*;" dynamic="true" endRegion="ComponentRegion1" insensitive="true" />
|
|
<IncludeRules context="generalDetection" />
|
|
</context>
|
|
|
|
<!-- generate statement -->
|
|
<context name="generate1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Process" context="generate2" String="%2" dynamic="true" />
|
|
</context>
|
|
<context name="generate2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<IncludeRules context="architecture" />
|
|
<RegExpr attribute="Process" context="#pop#pop" String="^(|\s.*)end\s+generate(?:\s+%3)?\s*;" dynamic="true" endRegion="GenerateRegion1" insensitive="true" />
|
|
</context>
|
|
|
|
<context name="instance" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Redirection" context="#stay" String="%2" dynamic="true" />
|
|
<Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
|
|
<DetectChar attribute="Vector" context="string" char=""" />
|
|
<Detect2Chars attribute="Normal Text" context="#pop" char=")" char1=";" endRegion="InstanceRegion1" />
|
|
<IncludeRules context="generalDetection" />
|
|
<AnyChar attribute="Operator" context="#stay" String="[&><=:+\-*\/|]().,;" />
|
|
<DetectChar attribute="Attribute" context="attribute" char="'" />
|
|
</context>
|
|
|
|
<!-- process environment -->
|
|
<context name="process1" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<StringDetect attribute="Process" context="process2" String="%2" dynamic="true" />
|
|
<RegExpr attribute="Process" context="#pop" String="^(|\s.*)end\s+process(\s+%4)?\s*;" endRegion="ProcessRegion1" insensitive="true" dynamic="true" />
|
|
</context>
|
|
<context name="process2" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
|
|
<RegExpr attribute="Process" context="#pop" String="^(|\s.*)end\s+process" insensitive="true" lookAhead="true" />
|
|
<StringDetect attribute="Process" context="#stay" String="begin" insensitive="true" />
|
|
<IncludeRules context="processContext" />
|
|
</context>
|
|
|
|
<context name="processContext" attribute="Normal Text" lineEndContext="#stay">
|
|
<IncludeRules context="preDetection" />
|
|
<RegExpr attribute="Control" context="case1" String="&bos;&label;(case)&eos;" beginRegion="CaseRegion1" insensitive="true" />
|
|
<RegExpr attribute="Control" context="if" String="&bos;&label;(if)&eos;" beginRegion="IfRegion1" insensitive="true" />
|
|
<RegExpr attribute="Control" context="forOrWhile" String="&bos;&label;((for|while)\s+.+\s+)?loop&eos;" beginRegion="ForOrWhileRegion1" insensitive="true" />
|
|
<IncludeRules context="generalDetection" />
|
|
</context>
|
|
<context name="case1" attribute="Normal Text" lineEndContext="#stay">
|
|
<StringDetect attribute="Keyword" context="case2" String="is" insensitive="true" />
|
|
</context>
|
|
<context name="case2" attribute="Normal Text" lineEndContext="#stay">
|
|
<RegExpr attribute="Control" context="#pop#pop" String="&bos;end\s+case(\s+&varname;)?\s*;" endRegion="CaseRegion1" insensitive="true" />
|
|
<RegExpr attribute="Control" context="caseWhen" String="&bos;when&eos;" beginRegion="CaseWhenRegion1" insensitive="true" />
|
|
<IncludeRules context="processContext" />
|
|
</context>
|
|
<context name="caseWhen" attribute="Normal Text" lineEndContext="#stay">
|
|
<RegExpr attribute="Control" context="#pop" String="&bos;when&eos;" endRegion="CaseWhenRegion1" lookAhead="true" insensitive="true" />
|
|
<RegExpr attribute="Control" context="#pop" String="&bos;end\s+case(\s+&varname;)?\s*;" endRegion="CaseWhenRegion1" lookAhead="true" insensitive="true" />
|
|
<IncludeRules context="process2" />
|
|
</context>
|
|
<context name="if" attribute="Normal Text" lineEndContext="#stay">
|
|
<RegExpr attribute="Control" context="#pop" String="&bos;end\s+if(\s+&varname;)?\s*;" endRegion="IfRegion1" insensitive="true" />
|
|
<keyword attribute="Control" context="#stay" String="if"/>
|
|
<IncludeRules context="processContext" />
|
|
</context>
|
|
<context name="forOrWhile" attribute="Normal Text" lineEndContext="#stay">
|
|
<RegExpr attribute="Control" context="#pop" String="&bos;end\s+loop(\s+&varname;)?\s*;" endRegion="ForOrWhileRegion1" insensitive="true" />
|
|
<keyword attribute="Control" context="#stay" String="forOrWhile"/>
|
|
<IncludeRules context="processContext" />
|
|
</context>
|
|
|
|
<!-- other environments -->
|
|
<context name="comment" attribute="Comment" lineEndContext="#pop" />
|
|
<context name="string" attribute="Vector" lineEndContext="#stay" >
|
|
<DetectChar attribute="Vector" context="#pop" char=""" />
|
|
</context>
|
|
<context name="attribute" attribute="Attribute" lineEndContext="#pop">
|
|
<DetectChar attribute="Attribute" context="quot in att" char=""" />
|
|
<DetectChar attribute="Normal Text" context="#pop" char=" " />
|
|
<AnyChar attribute="Attribute" context="#pop" String=")=<>" />
|
|
</context>
|
|
<context name="quot in att" attribute="Attribute" lineEndContext="#stay">
|
|
<DetectChar attribute="Attribute" context="#pop" char=""" />
|
|
</context>
|
|
</contexts>
|
|
<itemDatas>
|
|
<itemData name="Normal Text" defStyleNum="dsNormal" />
|
|
<itemData name="Keyword" defStyleNum="dsKeyword" />
|
|
<itemData name="Data Type" defStyleNum="dsDataType" />
|
|
<itemData name="Comment" defStyleNum="dsComment" />
|
|
<itemData name="Integer" defStyleNum="dsDecVal" />
|
|
<itemData name="Bit" defStyleNum="dsChar" />
|
|
<itemData name="Vector" defStyleNum="dsString" />
|
|
<itemData name="Operator" defStyleNum="dsOthers" />
|
|
<itemData name="Attribute" defStyleNum="dsBaseN" />
|
|
<itemData name="Region Marker" defStyleNum="dsRegionMarker" />
|
|
<itemData name="Signal" defStyleNum="dsOthers"/>
|
|
<itemData name="Redirection" defStyleNum="dsKeyword" color="#238" />
|
|
<itemData name="Process" defStyleNum="dsKeyword" color="#09A" />
|
|
<itemData name="Control" defStyleNum="dsKeyword" color="#008" />
|
|
</itemDatas>
|
|
</highlighting>
|
|
<general>
|
|
<comments>
|
|
<comment name="singleLine" start="--" />
|
|
</comments>
|
|
<keywords casesensitive="0" />
|
|
</general>
|
|
</language> |