<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="VIP" version="0.01" kateversion="2.1" section="Sources" extensions="*.vs" mimetype="text/x-VIP">

  <highlighting>

	<list name="constants">
		<item> ec </item>
		<item> pi </item>
		<item> nl </item>
		<item> tab </item>
		<item> stdin </item>
		<item> stdout </item>
		<item> stderr </item>
	</list>

	<list name="functions">
		<item> file </item>
		<item> mdate </item>
		<item> count </item>
		<item> index </item>
		<item> name </item>
		<item> random </item>
		<item> abs </item>
		<item> sign </item>
		<item> int </item>
		<item> fract </item>
		<item> round </item>
		<item> min </item>
		<item> max </item>
		<item> cos </item>
		<item> sin </item>
		<item> tan </item>
		<item> acos </item>
		<item> asin </item>
		<item> atan </item>
		<item> cosh </item>
		<item> sinh </item>
		<item> tanh </item>
		<item> logn </item>
		<item> log2 </item>
		<item> loge </item>
		<item> log10 </item>
		<item> exp </item>
		<item> exp2 </item>
		<item> expe </item>
		<item> exp10 </item>
		<item> square </item>
		<item> sqrt </item>
		<item> istext </item>
		<item> isnumber </item>
		<item> islist </item>
		<item> isproc </item>
		<item> isfile </item>
		<item> isdir </item>
		<item> exists </item>
		<item> string </item>
		<item> upperstr </item>
		<item> lowerstr </item>
		<item> charstr </item>
		<item> charcode </item>
		<item> hexstr </item>
		<item> binstr </item>
		<item> substr </item>
		<item> midstr </item>
		<item> leftstr </item>
		<item> rightstr </item>
		<item> datestr </item>
		<item> now </item>
		<item> dateval </item>
		<item> find </item>
		<item> rfind </item>
		<item> env </item>
		<item> match </item>
		<item> fullpath </item>
	</list>

	<list name="instructions">
		<item> new </item>
		<item> del </item>
		<item> swap </item>
		<item> var </item>
		<item> freeze </item>
		<item> melt </item>
		<item> put </item>
		<item> log </item>
		<item> get </item>
		<item> edit </item>
		<item> getchar </item>
		<item> write </item>
		<item> read </item>
		<item> ioctl </item>
		<item> eval </item>
		<item> call </item>
		<item> sys </item>
		<item> include </item>
		<item> dir </item>
		<item> wait </item>
		<item> info </item>
		<item> sort </item>
		<item> rsort </item>
		<item> split </item>
		<item> convert </item>
		<item> replace </item>
		<item> open </item>
		<item> openin </item>
		<item> openout </item>
		<item> close </item>
		<item> rename </item>
		<item> cd </item>
		<item> pwd </item>
		<item> words </item>
		<item> globals </item>
		<item> ; </item>
	</list>

	<list name="flowcontrol">
		<item> proc </item>
		<item> return </item>
		<item> end </item>
		<item> do </item>
		<item> then </item>
		<item> if </item>
		<item> else </item>
		<item> elif </item>
		<item> try </item>
		<item> while </item>
		<item> until </item>
		<item> exit </item>
		<item> next </item>
		<item> loop </item>
	</list>

	<list name="do">
		<item> do </item>
	</list>
	<list name="loop">
		<item> loop </item>
	</list>
	<list name="if">
		<item> if </item>
		<item> try </item>
	</list>
	<list name="then">
		<item> then </item>
	</list>

    <contexts>

	  <context attribute="0" lineEndContext="#stay" name="normal_text">
		<keyword attribute="3" context="#stay" String="constants"/>
		<keyword attribute="4" context="#stay" String="functions"/>
		<keyword attribute="5" context="#stay" String="instructions"/>

		<keyword attribute="6" context="#stay" String="do"   beginRegion="DoLoop" />
		<keyword attribute="6" context="#stay" String="loop" endRegion="DoLoop"   />

		<keyword attribute="6" context="#stay" String="if"   beginRegion="IfThen" />
		<keyword attribute="6" context="#stay" String="then" endRegion="IfThen"   />

		<keyword attribute="6" context="#stay" String="flowcontrol"/>

        <Detect2Chars attribute="9" context="block_comment" char="/" char1="*" beginRegion="Comment" />
        <Detect2Chars attribute="9" context="line_comment" char="/" char1="/" />

		<DetectChar attribute="1" context="#stay" char="{" beginRegion="Braces" />
		<DetectChar attribute="1" context="#stay" char="}" endRegion="Braces" />

		<AnyChar attribute="1" context="#stay" String=",()[]"/>

		<AnyChar attribute="2" context="#stay" String="+-!~@=-*/%#|^.&lt;&gt;&amp;"/>

		<DetectChar attribute="8" context="string_literal" char="&quot;"/>

		<DetectChar attribute="7" context="hex_digit" char="$" />

		<Float attribute="7" context="#stay"/>
		<Int attribute="7" context="#stay"/>

	  </context>

	  <context attribute="7" lineEndContext="#pop" name="dec_digits">
		<AnyChar attribute="7" context="#stay" String="1234567890"/>
	  </context>

	  <context attribute="7" lineEndContext="#pop" name="bin_digits">
		<AnyChar attribute="7" context="#stay" String="01"/>
	  </context>

	  <context attribute="7" lineEndContext="#pop" name = "hex_digits">
		<AnyChar attribute="7" context="#stay" String="1234567890abcdefABCDEF"/>
	  </context>

      <context attribute="8" lineEndContext="#pop" name="string_literal">
        <LineContinue attribute="8" context="#stay"/>
        <HlCStringChar attribute="8" context="#stay"/>
        <DetectChar attribute="8" context="#pop" char="&quot;"/>
      </context>

      <context attribute="9" lineEndContext="#stay" name="block_comment">
		<RegExpr attribute="10" context="#stay" String="(FIXME|TODO|NIMP)" />
		<Detect2Chars attribute="9" context="#pop" char="*" char1="/" endRegion="Comment" />
      </context>

      <context attribute="9" lineEndContext="#pop" name="line_comment">
		<RegExpr attribute="10" context="#stay" String="(FIXME|TODO|NIMP)" />
      </context>

	</contexts>

	<itemDatas>
      <itemData name="0Normal Text"  defStyleNum="dsNormal"/>
      <itemData name="1Separators"   defStyleNum="dsOthers"/>
      <itemData name="2Operators"    defStyleNum="dsOthers"/>
      <itemData name="3Constants"    defStyleNum="dsKeyword"/>
      <itemData name="4Functions"    defStyleNum="dsKeyword"/>
      <itemData name="5Instructions" defStyleNum="dsKeyword"/>
      <itemData name="6Flow Control" defStyleNum="dsKeyword"/>
      <itemData name="7Number"		 defStyleNum="dsDecVal"/>
      <itemData name="8String"		 defStyleNum="dsString"/>
      <itemData name="9Comment"  	 defStyleNum="dsComment"/>
      <itemData name="10ALERT"  	 defStyleNum="dsKeyword"/>
    </itemDatas>

  </highlighting>

  <general>
    <comments>
      <comment name="multiLine" start="/*" end="*/" />
      <comment name="singleLine" start="//" />
    </comments>
    <keywords casesensitive="1" />
  </general>

</language>
