<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="E Language" version="0.22" kateversion="2.3" section="Sources" extensions="*.e" mimetype="text/x-e-src">
    <highlighting>
        <list name="Type">
            <item> FALSE </item>
            <item> MAX_INT </item>
            <item> MIN_INT </item>
            <item> NULL </item>
            <item> TRUE </item>
            <item> UNDEF </item>
            <item> bit </item>
            <item> bits </item>
            <item> body </item>
            <item> bool </item>
            <item> byte </item>
            <item> byte_array </item>
            <item> continue </item>
            <item> copy </item>
            <item> default </item>
            <item> external_pointer </item>
            <item> files </item>
            <item> file </item>
            <item> form </item>
            <item> global </item>
            <item> index </item>
            <item> init </item>
            <item> int </item>
            <item> it </item>
            <item> list </item>
            <item> load </item>
            <item> long </item>
            <item> me </item>
            <item> method </item>
            <item> module </item>
            <item> ntv </item>
            <item> of </item>
            <item> pat </item>
            <item> print </item>
            <item> result </item>
            <item> source_ref </item>
            <item> string </item>
            <item> symtab </item>
            <item> sys </item>
            <item> test </item>
            <item> uint </item>
            <item> untyped </item>
            <item> vec </item>
         </list>
        <list name="Function">
            <item> run </item>
            <item> init </item>
            <item> pre_generate </item>
            <item> dut_error </item>
            <item> pack </item>
            <item> unpack </item>
            <item> post_generate </item>
            <item> pre_generate </item>
            <item> set_config </item>
            <item> hex </item>
            <item> stop_run </item>
            <item> append </item>
            <item> size </item>
            <item> delete </item>
            <item> is_empty </item>
            <item> deep_compare </item>
            <item> deep_compare_physical </item>
            <item> clear </item>
            <item> pop0 </item>
            <item> setup </item>
            <item> crc_32 </item>
        </list>
        <list name="Statement">
            <item> chars </item>
            <item> define </item>
            <item> extend </item>
            <item> event </item>
            <item> ECHO </item>
            <item> DOECHO </item>
            <item> import </item>
            <item> initialize </item>
            <item> non_terminal </item>
            <item> struct </item>
            <item> unit </item>
            <item> script </item>
            <item> testgroup </item>
            <item> type </item>
         </list>
        <list name="Action">
            <item> C </item>
            <item> add </item>
            <item> also </item>
            <item> and </item>
            <item> as </item>
            <item> as_a </item>
            <item> break </item>
            <item> code </item>
            <item> compute </item>
            <item> computed </item>
            <item> delayed </item>
            <item> do </item>
            <item> else </item>
            <item> each </item>
            <item> emit </item>
            <item> empty </item>
            <item> end </item>
            <item> exit </item>
            <item> finish </item>
            <item> for </item>
            <item> from </item>
            <item> if </item>
            <item> in </item>
            <item> is </item>
            <item> like </item>
            <item> log </item>
            <item> new </item>
            <item> no </item>
            <item> not </item>
            <item> only </item>
            <item> or </item>
            <item> out </item>
            <item> read </item>
            <item> repeat </item>
            <item> return </item>
            <item> reverse </item>
            <item> routine </item>
            <item> step </item>
            <item> then </item>
            <item> to </item>
            <item> traceable </item>
            <item> untraceable </item>
            <item> var </item>
            <item> when </item>
            <item> while </item>
            <item> with </item>
            <item> write </item>
            <item> xor </item>
         </list>
        <list name="Generation">
            <item> before </item>
            <item> by </item>
            <item> choose </item>
            <item> gen </item>
            <item> keep </item>
            <item> keeping </item>
            <item> matches </item>
            <item> next </item>
            <item> select </item>
            <item> sequence </item>
            <item> soft </item>
            <item> using </item>
	</list>
        <list name="Cover">
            <item> address </item>
            <item> cover </item>
            <item> error </item>
            <item> events </item>
            <item> event </item>
            <item> length </item>
            <item> kind </item>
            <item> ranges </item>
            <item> range </item>
            <item> sample </item>
            <item> text </item>
            <item> value </item>
            <item> item </item>
            <item> transition </item>
            <item> illegal </item>
         </list>
        <list name="Simulator">
            <item> always </item>
            <item> all </item>
            <item> basic </item>
            <item> call </item>
            <item> cycles </item>
            <item> cycle </item>
            <item> clock </item>
            <item> change </item>
            <item> check </item>
            <item> expect </item>
            <item> fall </item>
            <item> first </item>
            <item> forever </item>
            <item> idle </item>
            <item> initial </item>
            <item> negedge </item>
            <item> others </item>
            <item> on </item>
            <item> posedge </item>
            <item> rise </item>
            <item> start </item>
            <item> that </item>
            <item> time </item>
            <item> task </item>
            <item> until </item>
            <item> verilog </item>
            <item> vhdl </item>
            <item> wait </item>
            <item> within </item>
         </list>
        <contexts>

	          <context name="out_comment" attribute="OutSide E code"  lineEndContext="#stay">
                <Detect2Chars attribute="code_begin" context="normal" char="&lt;" char1="'" />
	          </context>

            <context name="normal" attribute="Normal Text" lineEndContext="#stay">
              	<DetectChar attribute="Operators" context="#stay" char="{" beginRegion="Region1"/>
              	<DetectChar attribute="Operators" context="#stay" char="}" endRegion="Region1"/>
                <HlCHex attribute="Integer" context="#stay" />
                <HlCOct attribute="Integer" context="#stay" />
                <Int attribute="Integer" context="#stay" />
                <Detect2Chars attribute="code_end" context="out_comment" char="'" char1="&gt;" />
                <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
                <Detect2Chars attribute="Comment" context="comment" char="/" char1="/" />
                <DetectChar attribute="Vector" context="string" char="&quot;" />
                <AnyChar attribute="Operators" context="#stay" String="'[&amp;&gt;&lt;=:+\-*\|].,;" />
                <keyword attribute="Data Type" context="#stay"  String="Type"/>
                <keyword attribute="Function" context="#stay"  String="Function"/>
            		<keyword attribute="Statement" context="#stay"  String="Statement"/>
                <keyword attribute="Action" context="#stay"  String="Action"/>
                <keyword attribute="Keyword" context="#stay"  String="Generation"/>
                <keyword attribute="Keyword" context="#stay"  String="Cover"/>
                <keyword attribute="Keyword" context="#stay"  String="Simulator"/>

            </context>


            <context name="comment" attribute="Comment" lineEndContext="#pop" />

            <context name="string" attribute="Vector" lineEndContext="#stay" >
                <DetectChar attribute="Vector" context="#pop" char="&quot;" />
            </context>

	</contexts>

        <itemDatas>
	          <itemData name="OutSide E code" defStyleNum="dsComment"/>
            <itemData name="Normal Text" defStyleNum="dsNormal" />
            <itemData name="Keyword" defStyleNum="dsKeyword" />
            <itemData name="Function" defStyleNum="dsFunction" bold="1"/>
            <itemData name="Statement" defStyleNum="dsNormal" color="#8080FF" selColor="#00ff00" bold="1" italic="0" />
            <itemData name="Action" defStyleNum="dsNormal" color="#FF8080" selColor="#00ff00" bold="1" italic="0" />
            <itemData name="Data Type" defStyleNum="dsDataType" />
            <itemData name="Comment" defStyleNum="dsComment" />
            <itemData name="Integer" defStyleNum="dsDecVal" />
            <itemData name="Bit" defStyleNum="dsDecVal" />
            <itemData name="Vector" defStyleNum="dsString" />
            <itemData name="Operators" defStyleNum="dsNormal" color="#404000" selColor="#00ff00" bold="0" italic="0" />
        </itemDatas>

    </highlighting>
  <general>
    <comments>
      <comment name="singleLine" start="//" />
    </comments>
    <keywords casesensitive="1" />
  </general>
</language>