<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!--
Eiffel syntax highlighting for Kate and Kwrite editors

Change log:
2003-12-16 	Revised existing version by adding several missing keywords. Added predefined
				entities as a separate word list. Moved from numeric to named contexts.
				Changed version to 1.02.

Author of version 1.02: Sebastian Vuorinen
-->
<language name="Eiffel" version="1.02" kateversion="2.3" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
	<highlighting>
		<list name="keywords">
			<item> agent </item>
			<item> alias </item>
			<item> all </item>
			<item> and </item>
			<item> as </item>
			<item> assign </item>
			<item> class </item>
			<item> convert </item>
			<item> create </item>
			<item> creation </item>
			<item> debug </item>
			<item> deferred </item>
			<item> do </item>
			<item> else </item>
			<item> elseif </item>
			<item> end </item>
			<item> expanded </item>
			<item> export </item>
			<item> external </item>
			<item> feature </item>
			<item> from </item>
			<item> frozen </item>
			<item> if </item>
			<item> implies </item>
			<item> indexing </item>
			<item> infix </item>
			<item> inherit </item>
			<item> inspect </item>
			<item> is </item>
			<item> like </item>
			<item> local </item>
			<item> loop </item>
			<item> not </item>
			<item> obsolete </item>
			<item> old </item>
			<item> once </item>
			<item> or </item>
			<item> prefix </item>
			<item> pure </item>
			<item> redefine </item>
			<item> reference </item>
			<item> rename </item>
			<item> rescue </item>
			<item> retry </item>
			<item> separate </item>
			<item> then </item>
			<item> undefine </item>
		</list>

		<list name="predefined-entities">
			<item> Current </item>
			<item> False </item>
			<item> Precursor </item>
			<item> Result </item>
			<item> True </item>
			<item> TUPLE </item>
		</list>

		<list name="assertions">
			<item> check </item>
			<item> ensure </item>
			<item> require </item>
			<item> variant </item>
			<item> invariant </item>
		</list>

		<contexts>
			<context name = "Normal" attribute = "Normal Text" lineEndContext="#stay">
				<keyword attribute = "Keyword" String = "keywords" context="#stay" />
				<keyword attribute = "Predefined entities" String = "predefined-entities" context="#stay" />
				<keyword attribute = "Assertions" String = "assertions" context="#stay" />

				<Int attribute = "Decimal" context="#stay" />
				<Float attribute = "Float" context="#stay" />
				<HlCChar attribute = "Char" context="#stay" />
				<DetectChar attribute = "String" char = "&quot;" context="Quoted String" />

				<Detect2Chars attribute = "Comment" char = "-" char1 = "-" context="Documentation" />
			</context>

			<context name = "Quoted String" attribute = "String" lineEndContext="#pop">
				<DetectChar attribute = "String" char = "&quot;" context="#pop" />
			</context>

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

		<itemDatas>
			<itemData name="Normal Text" defStyleNum="dsNormal" />

			<itemData name="Keyword"     defStyleNum="dsKeyword" />
			<itemData name="Predefined entities" defStyleNum="dsOthers" />
			<itemData name="Assertions"  defStyleNum="dsOthers" />

			<itemData name="Decimal"     defStyleNum="dsDecVal" />
			<itemData name="Float"       defStyleNum="dsFloat" />
			<itemData name="Char"        defStyleNum="dsChar" />
			<itemData name="String"      defStyleNum="dsString" />

			<itemData name="Comment"     defStyleNum="dsComment" />
		</itemDatas>
	</highlighting>

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