<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="B-Method" version="1" kateversion="5.0" section="Scientific" extensions="*.mch;*.imp;*.ref" author="Ivo Anjo (knuckles@gmail.com)" license="LGPL">

<highlighting>
	<list name="sections">
		<item> MACHINE </item>
		<item> SETS </item>
		<item> CONSTANTS </item>
		<item> PROPERTIES </item>
		<item> PROMOTES </item>
		<item> INCLUDES </item>
		<item> USES </item>
		<item> SEES </item>
		<item> VARIABLES </item>
		<item> INVARIANT </item>
		<item> INITIALISATION </item>
		<item> REFINEMENT </item>
		<item> REFINES </item>
		<item> CONSTRAINTS </item>
		<item> IMPLEMENTATION </item>
		<item> IMPORTS </item>
	</list>
	<list name="sectionsBlockStart">
		<item> OPERATIONS </item>
	</list>
	<list name="sectionsBlockEnd">
		<item> END </item>
	</list>
	<list name="operationSections">
		<item> THEN </item>
		<item> WHEN </item>
		<item> ELSE </item>
		<item> OR </item>
		<item> WHERE </item>
		<item> INVARIANT </item>
		<item> DO </item>
		<item> VARIANT </item>
		<item> IN </item>
		<item> ELSIF </item>
	</list>
	<list name="operationSectionsBlockStart">
		<item> PRE </item>
		<item> IF </item>
		<item> ANY </item>
		<item> LET </item>
		<item> CHOICE </item>
		<item> CASE </item>
		<item> SELECT </item>
		<item> VAR </item>
		<item> WHILE </item>
		<item> BEGIN </item>
	</list>
	<list name="operationSectionsBlockEnd">
		<item> END </item>
	</list>
	<list name="types">
		<item> NAT </item>
		<item> NAT1 </item>
	</list>
	<contexts>
		<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
			<keyword attribute="SectionKeyword" context="#stay" String="sections" column="0"/>
			<keyword attribute="SectionKeyword" context="#stay" String="sectionsBlockStart" column="0" beginRegion="sectionsBlock"/>
			<keyword attribute="SectionKeyword" context="#stay" String="sectionsBlockEnd" column="0" endRegion="sectionsBlock"/>
			<keyword attribute="Data Type" context="#stay" String="types"/>
			<Int attribute="Decimal" context="#stay"/>
			<Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="Comment"/>
			<keyword attribute="OperationKeyword" context="#stay" String="operationSections"/>
			<keyword attribute="OperationKeyword" context="#stay" String="operationSectionsBlockStart" beginRegion="CodeBlock"/>
			<keyword attribute="OperationKeyword" context="#stay" String="operationSectionsBlockEnd" endRegion="CodeBlock"/>
		</context>
		
		<context attribute="Comment" lineEndContext="#stay" name="Comment">
			<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
			<IncludeRules context="##Alerts"/>
      		</context>
	</contexts>
	<itemDatas>
		<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
		<itemData name="SectionKeyword" defStyleNum="dsBuiltIn" spellChecking="0"/>
		<itemData name="OperationKeyword" defStyleNum="dsControlFlow" spellChecking="0"/>
		<itemData name="Comment" defStyleNum="dsComment"/>
		<itemData name="Data Type" defStyleNum="dsDataType" spellChecking="0"/>
		<itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="0"/>
	</itemDatas>
</highlighting>

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

</language>
