diff options
Diffstat (limited to 'kate/data/vhdl.xml')
-rw-r--r-- | kate/data/vhdl.xml | 433 |
1 files changed, 301 insertions, 132 deletions
diff --git a/kate/data/vhdl.xml b/kate/data/vhdl.xml index 5b1b69494..c2ff48999 100644 --- a/kate/data/vhdl.xml +++ b/kate/data/vhdl.xml @@ -1,21 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE language SYSTEM "language.dtd" -[ +<!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 varname "\b(?!(?:process|constant|signal|variable))([A-Za-z_][A-Za-z0-9_]*)\b"> + <!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)"> + +<language name="VHDL" version="1.10" kateversion="2.3" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de)"> <highlighting> <list name="keywordsToplevel"> <item> file </item> - <item> package </item> +<!-- <item> package </item>--> <item> library </item> <item> use </item> <!-- @@ -24,23 +24,35 @@ <item> of </item> <item> configuration </item> --> + + </list> <list name="keywords"> <item> access </item> <item> after </item> <item> alias </item> <item> all </item> + <item> array </item> <item> assert </item> + <item> assume </item> + <item> assume_guarantee </item> + <item> attribute </item> <item> begin </item> <item> block </item> <item> body </item> <item> bus </item> <item> component </item> <item> constant </item> + <item> context </item> + <item> cover </item> + <item> default </item> <item> disconnect </item> <item> downto </item> <item> end </item> <item> exit </item> + <item> fairness </item> + <item> file </item> + <item> force </item> <item> function </item> <item> generate </item> <item> generic </item> @@ -56,26 +68,32 @@ <item> new </item> <item> next </item> <item> null </item> + <item> of </item> <item> on </item> <item> open </item> <item> others </item> + <item> parameter </item> <item> port </item> <item> postponed </item> <item> procedure </item> <item> process </item> + <item> property </item> + <item> protected </item> <item> pure </item> <item> range </item> <item> record </item> <item> register </item> <item> reject </item> + <item> release </item> <item> report </item> <item> return </item> <item> select </item> + <item> sequence </item> <item> severity </item> <item> signal </item> <item> shared </item> + <item> strong </item> <item> subtype </item> - <item> then </item> <item> to </item> <item> transport </item> <item> type </item> @@ -83,6 +101,9 @@ <item> units </item> <item> until </item> <item> variable </item> + <item> vmode </item> + <item> vprop </item> + <item> vunit </item> <item> wait </item> <item> when </item> <item> with </item> @@ -95,65 +116,101 @@ <item> out </item> <item> buffer </item> <item> and </item> + <item> abs </item> <item> or </item> <item> xor </item> + <item> xnor </item> <item> not </item> + <item> mod </item> + <item> nand </item> + <item> nor </item> + <item> rem </item> + <item> rol </item> + <item> ror </item> + <item> sla </item> + <item> sra </item> + <item> sll </item> + <item> srl </item> </list> - + <list name="if"> + <item> if </item> <item> else </item> <item> elsif </item> + <item> then </item> </list> - + <list name="forOrWhile"> <item> loop </item> </list> - + <list name="directions"> <item> in </item> <item> inout </item> <item> out </item> <item> buffer </item> + <item> linkage </item> </list> - + <list name="signals"> <item> signal </item> <item> variable </item> <item> constant </item> - <item> type </item> + <item> type </item> </list> <!-- <list name="logics"> <item> and </item> <item> or </item> <item> xor </item> <item> not </item> - </list> - - <list name="rangeDirection"> + </list>--> + + <list name="range"> <item> to </item> <item> downto </item> - </list>--> - + <item> others </item> + </list> + + <list name="case"> + <item> case </item> + <item> when </item> + </list> + <list name="types"> <item> bit </item> <item> bit_vector </item> <item> character </item> <item> boolean </item> + <item> boolean_vector </item> <item> integer </item> + <item> integer_vector </item> <item> real </item> + <item> real_vector </item> <item> time </item> + <item> time_vector </item> + <item> delay_length </item> <item> string </item> <item> severity_level </item> <item> positive </item> <item> natural </item> + <item> file_open_kind </item> + <item> file_open_status </item> <item> signed </item> <item> unsigned </item> + <item> unresolved_unsigned </item> + <item> unresolved_signed </item> <item> line </item> <item> text </item> + <item> side </item> + <item> width </item> <item> std_logic </item> <item> std_logic_vector </item> <item> std_ulogic </item> <item> std_ulogic_vector </item> + <item> x01 </item> + <item> x01z </item> + <item> ux01 </item> + <item> ux01z </item> <item> qsim_state </item> <item> qsim_state_vector </item> <item> qsim_12state </item> @@ -166,159 +223,268 @@ <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="-" /> + +<!-- start / global environment --> + <context name="start" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="preDetection" /> + + <RegExpr attribute="Control" context="architecture_main" insensitive="true" dynamic="true" lookAhead="true" + String="architecture\s+(&varname;)" /> + <StringDetect attribute="Control" context="entity" String="entity" /> + <RegExpr attribute="Normal Text" context="package" insensitive="true" lookAhead="true" beginRegion="PackageRegion1" + String="&bos;(package\s+(&varname;)\s+is)&eos;"/> + <RegExpr attribute="Normal Text" context="packagebody" lookAhead="true" insensitive="true" beginRegion="PackageBodyRegion1" + String="&bos;(package\s+body\s+(&varname;)\s+is)&eos;"/> + <!-- <StringDetect attribute="Control" context="arch_decl" String="package" />temporary--> + <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"> + + <context name="package" 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"/>--> + <StringDetect attribute="Redirection" context="#stay" String="begin" insensitive="true" /> + <RegExpr attribute="Redirection" context="#pop" String="&bos;end(\s+package)?(\s+%3)?\s*;" dynamic="true" endRegion="PackageRegion1" insensitive="true" /> <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"> + <!-- package body environment --> + + <context name="packagebody" 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" /> + <RegExpr attribute="Redirection" context="#pop" String="&bos;end(\s+package)?(\s+%3)?\s*;" dynamic="true" endRegion="PackageBodyRegion1" 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" /> + +<!--====ARCHITECTURE ===============--> + <context name="architecture_main" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Control" context="arch_decl" insensitive="true" beginRegion="ArchitectureRegion1" + String="architecture\s+(&varname;)\s+of\s+(&varname;)\s+is" /> + <RegExpr attribute="Control" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ArchitectureRegion1" + String="&bos;end(\s+architecture)?(\s+%1)?\s*;" /> + <RegExpr attribute="Error" context="#pop#pop" insensitive="true" dynamic="true" endRegion="ArchitectureRegion1" + String="&bos;end(\s+architecture)?(\s+&varname;)\s*;" /> + <IncludeRules context="detect_arch_parts" /> </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" /> + +<!-- architecture environment "before begin" --> + <context name="arch_decl" attribute="Normal Text" lineEndContext="#stay" > + <IncludeRules context="preDetection" /> + <keyword attribute="Signal" context="signal" insensitive="true" String="signals"/> + <StringDetect attribute="Control" context="entity" insensitive="true" String="component"/> + <StringDetect attribute="Control" context="#pop" insensitive="true" String="begin"/> + <IncludeRules context="generalDetection" /> </context> - <!-- generate statement --> +<!-- parts of architecture body --> + <context name="detect_arch_parts" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Normal Text" context="generate1" lookAhead="true" insensitive="true" dynamic="true" + String="&bos;((&varname;)\s*:\s*)(if|for).*\s+generate&eos;" /> + <RegExpr attribute="Normal Text" context="process1" lookAhead="true" insensitive="true" dynamic="true" + String="&bos;((&varname;)\s*:\s*)?process&eos;" /> + <RegExpr attribute="Normal Text" context="instance" lookAhead="true" insensitive="true" dynamic="true" beginRegion="InstanceRegion1" + String="\b(&varname;)\s*:\s*(&varname;)" /> + + <IncludeRules context="generalDetection" /> + </context> + +<!--====generate ===============--> <context name="generate1" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> - <StringDetect attribute="Process" context="generate2" String="%2" dynamic="true" /> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Control" context="generate2" insensitive="true" beginRegion="GenerateRegion" + String="&bos;generate&eos;" /> + <RegExpr attribute="Name" context="#stay" dynamic="true" insensitive="true" + String="&bos;%3&eos;" /> + <StringDetect attribute="Control" context="#stay" insensitive="true" String="for"/> + <StringDetect attribute="Control" context="#stay" insensitive="true" String="if"/> + <IncludeRules context="generalDetection" /> </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" /> + <IncludeRules context="preDetection" /> + <StringDetect attribute="Control" context="#stay" insensitive="true" + String="begin"/> + <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="GenerateRegion" + String="&bos;end\s+generate(\s+&varname;)?\s*;"/> + <IncludeRules context="detect_arch_parts" /> </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 --> + +<!--====process ===============--> +<!-- 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" /> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Process" context="#pop" insensitive="true" dynamic="true" endRegion="RegionProcess" + String="end\s+process(\s+%3)?\s*;" /> + <RegExpr attribute="Error" context="#pop" insensitive="true" dynamic="true" endRegion="RegionProcess" + String="end\s+process(\s+&varname;)?" /> + <StringDetect attribute="Process" context="#stay" insensitive="true" beginRegion="RegionProcess" + String="process" /> + <StringDetect attribute="Process" context="#stay" insensitive="true" + String="begin" /> + + + <IncludeRules context="proc_rules" /> </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 name="proc_rules" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <RegExpr attribute="Name" context="#stay" insensitive="true" + String="&bos;&varname;(?=\s*:(?!=))" /> + <RegExpr attribute="Control" context="if_start" insensitive="true" + String="&bos;(if)&eos;" /> + <RegExpr attribute="Control" context="case1" lookAhead="true" insensitive="true" dynamic="true" beginRegion="CaseRegion1" + String="&bos;(case)&eos;" /> + <RegExpr attribute="Control" context="forOrWhile" insensitive="true" beginRegion="ForOrWhileRegion1" + String="&bos;&label;((for|while)\s+.+\s+)?loop&eos;"/> + <IncludeRules context="generalDetection" /> </context> - <context name="processContext" attribute="Normal Text" lineEndContext="#stay"> + + + +<!--====instance =============== --> + + <context name="instance" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> <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" /> + <RegExpr attribute="Name" context="#stay" String="\b%1\b" dynamic="true" /> + <RegExpr attribute="Name" context="#stay" String="\b%2\b" dynamic="true" /> + <Detect2Chars attribute="Normal Text" context="#pop" char=")" char1=";" endRegion="InstanceRegion1" /> + <!-- <DetectChar attribute="Error" context="#stay" char=";" />--> + <IncludeRules context="generalDetection" /> </context> + +<!--====loop ===============--> + <context name="forOrWhile" attribute="Normal Text" lineEndContext="#stay"> + <RegExpr attribute="Control" context="#pop" endRegion="ForOrWhileRegion1" insensitive="true" + String="&bos;end\s+loop(\s+&varname;)?\s*;"/> + <keyword attribute="Control" context="#stay" String="forOrWhile"/> + <IncludeRules context="proc_rules" /> + </context> + +<!--====if ===============--> + <context name="if_start" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="preDetection" /> + <StringDetect attribute="Control" context="if" insensitive="true" beginRegion="IfRegion1" + String="then" /> + <IncludeRules context="generalDetection" /> + </context> + + <context name="if" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="IfRegion1" + String="&bos;end\s+if(\s+&varname;)?\s*;"/> + <IncludeRules context="proc_rules" /> + <keyword attribute="Control" context="#stay" insensitive="true" + String="if"/> + </context> + + +<!--====case ===============--> <context name="case1" attribute="Normal Text" lineEndContext="#stay"> - <StringDetect attribute="Keyword" context="case2" String="is" insensitive="true" /> + <IncludeRules context="preDetection" /> + <StringDetect attribute="Keyword" context="case2" insensitive="true" + String="is"/> + <keyword attribute="Control" context="#stay" insensitive="true" + String="case"/> </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" /> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Control" context="#pop#pop" insensitive="true" endRegion="CaseRegion1" + String="&bos;end\s+case(\s+&varname;)?\s*;"/> + <StringDetect attribute="Control" context="caseWhen" insensitive="true" beginRegion="CaseWhenRegion1" + String="when"/> + <IncludeRules context="proc_rules" /> </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" /> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Control" context="#pop" lookAhead="true" insensitive="true" endRegion="CaseWhenRegion1" + String="&bos;when&eos;" /> + <RegExpr attribute="Control" context="#pop" lookAhead="true" insensitive="true" endRegion="CaseWhenRegion1" + String="&bos;end\s+case(\s+&varname;)?\s*;"/> + <IncludeRules context="proc_rules" /> </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" /> + + + + + +<!--====ENTITY ===============--> +<!-- entity environment --> + + <context name="entity" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Name" context="entity_main" beginRegion="EntityRegion1" insensitive="true" String="(&varname;)" /> + <IncludeRules context="generalDetection" /> </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 name="entity_main" attribute="Normal Text" lineEndContext="#stay" dynamic="true"> + <IncludeRules context="preDetection" /> + <RegExpr attribute="Control" context="#pop#pop" dynamic="true" insensitive="true" endRegion="EntityRegion1" + String="&bos;end(\s+(entity|component))?(\s+%1)?\s*;" /> + <RegExpr attribute="Error" context="#pop#pop" dynamic="true" insensitive="true" endRegion="EntityRegion1" + String="&bos;end(\s+(entity|component))?(\s+&varname;)?\s*;" /> + <RegExpr attribute="Control" context="#stay" String="generic"/> + <RegExpr attribute="Control" context="#stay" String="port"/> + <IncludeRules context="generalDetection" /> </context> - - <!-- other environments --> + + + +<!--====Basic Stuff ===============--> +<!-- basic rules --> + <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 detection --> + <context name="generalDetection" attribute="Normal Text" lineEndContext="#stay"> + <keyword attribute="Data Type" context="#stay" String="types"/> + <keyword attribute="Signal" context="signal" String="signals" beginRegion="sig"/> + <keyword attribute="Range" context="#stay" String="range"/> + <keyword attribute="Keyword" context="#stay" String="keywords"/> + <Int attribute="Integer" context="#stay" /> + <HlCChar attribute="Bit" context="#stay" /> + <DetectSpaces attribute="Normal Text" context="#stay" /> + </context> + +<!-- other environments --> <context name="comment" attribute="Comment" lineEndContext="#pop" /> + <context name="string" attribute="Vector" lineEndContext="#stay" > - <DetectChar attribute="Vector" context="#pop" char=""" /> + <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=")=<>" /> + <DetectChar attribute="Attribute" context="quot in att" char=""" /> + <DetectChar attribute="Normal Text" context="#pop" char=" " /> + <DetectChar attribute="Attribute" 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=""" /> + <DetectChar attribute="Attribute" context="#pop" char=""" /> </context> + + <context name="signal" attribute="Normal Text" lineEndContext="#stay"> + <IncludeRules context="preDetection" /> + <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="sig" /> + <IncludeRules context="generalDetection" /> + </context> + + </contexts> <itemDatas> <itemData name="Normal Text" defStyleNum="dsNormal" /> @@ -327,14 +493,17 @@ <itemData name="Comment" defStyleNum="dsComment" /> <itemData name="Integer" defStyleNum="dsDecVal" /> <itemData name="Bit" defStyleNum="dsChar" /> + <itemData name="Error" defStyleNum="dsError" color="#f00" bold="1" /> <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="Range" defStyleNum="dsOthers"/> <itemData name="Redirection" defStyleNum="dsKeyword" color="#238" /> <itemData name="Process" defStyleNum="dsKeyword" color="#09A" /> - <itemData name="Control" defStyleNum="dsKeyword" color="#008" /> + <itemData name="Control" defStyleNum="dsKeyword" color="#238" /> + <itemData name="Name" defStyleNum="dsKeyword" color="#b60" bold="1" /> </itemDatas> </highlighting> <general> |