<?xml version="1.0"?>

<!DOCTYPE MODE SYSTEM "xmode.dtd">

<MODE>
	<PROPS>
		<PROPERTY NAME="indentNextLine" VALUE="\s*(((ANY|ASSERT|CASE|CHOICE|IF|LET|PRE|SELECT|VAR|WHILE|WHEN)\s*\(|ELSE|ELSEIF|EITHER|OR|VARIANT|INVARIANT)[^;]*|for\s*\(.*)" />
		<PROPERTY NAME="commentStart" VALUE="/*" />
		<PROPERTY NAME="commentEnd" VALUE="*/" />
		<PROPERTY NAME="lineComment" VALUE="//" />
	</PROPS>
	<RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE">
		<!-- B style comment -->
		<SPAN TYPE="COMMENT2">
			<BEGIN>/*?</BEGIN>
			<END>?*/</END>
		</SPAN>
		
		<SPAN TYPE="COMMENT1">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>
				
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>

		
		<EOL_SPAN TYPE="COMMENT1">//</EOL_SPAN>
		<SEQ TYPE="OPERATOR">!</SEQ>
		<SEQ TYPE="OPERATOR">#</SEQ>
		<SEQ TYPE="OPERATOR">$0</SEQ>
		<SEQ TYPE="OPERATOR">%</SEQ>
		<SEQ TYPE="OPERATOR">=</SEQ>
		<!-- pour le & -->
		<SEQ TYPE="OPERATOR">&amp;</SEQ>
		<!-- pour le < et  > -->
		<SEQ TYPE="OPERATOR">&gt;</SEQ>
		<SEQ TYPE="OPERATOR">&lt;</SEQ>

		<SEQ TYPE="OPERATOR">*</SEQ>

		<SEQ TYPE="OPERATOR">+</SEQ>
		<SEQ TYPE="OPERATOR">/</SEQ>
		<SEQ TYPE="OPERATOR">\</SEQ>
		<SEQ TYPE="OPERATOR">~</SEQ>
		<SEQ TYPE="OPERATOR">:</SEQ>
		<SEQ TYPE="OPERATOR">;</SEQ>
		<SEQ TYPE="OPERATOR">|</SEQ>
		<SEQ TYPE="OPERATOR">-</SEQ>
		
		<SEQ TYPE="OPERATOR">^</SEQ>
		
		<SEQ TYPE="OPERATOR">.</SEQ>
		<SEQ TYPE="OPERATOR">,</SEQ>
		<SEQ TYPE="OPERATOR">(</SEQ>
		<SEQ TYPE="OPERATOR">)</SEQ>
		<SEQ TYPE="OPERATOR">}</SEQ>
		<SEQ TYPE="OPERATOR">{</SEQ>
		<SEQ TYPE="OPERATOR">]</SEQ>
		<SEQ TYPE="OPERATOR">[</SEQ>

		<KEYWORDS>
		
			<!-- clauses -->
			<KEYWORD2>ABSTRACT_CONSTANTS</KEYWORD2>
			<KEYWORD2>ABSTRACT_VARIABLES</KEYWORD2>
			<KEYWORD2>CONCRETE_CONSTANTS</KEYWORD2>
			<KEYWORD2>CONCRETE_VARIABLES</KEYWORD2>
			<KEYWORD2>CONSTANTS</KEYWORD2>
			<KEYWORD2>VARIABLES</KEYWORD2>
			<KEYWORD2>ASSERTIONS</KEYWORD2>
			<KEYWORD2>CONSTRAINTS</KEYWORD2>
			<KEYWORD2>DEFINITIONS</KEYWORD2>
			<KEYWORD2>EXTENDS</KEYWORD2>
			<KEYWORD2>IMPLEMENTATION</KEYWORD2>
			<KEYWORD2>IMPORTS</KEYWORD2>
			<KEYWORD2>INCLUDES</KEYWORD2>
			<KEYWORD2>INITIALISATION</KEYWORD2>
			<KEYWORD2>INVARIANT</KEYWORD2>
			<KEYWORD2>LOCAL_OPERATIONS</KEYWORD2>
			<KEYWORD2>MACHINE</KEYWORD2>
			<KEYWORD2>OPERATIONS</KEYWORD2>
			<KEYWORD2>PROMOTES</KEYWORD2>
			<KEYWORD2>PROPERTIES</KEYWORD2>
			<KEYWORD2>REFINES</KEYWORD2>
			<KEYWORD2>REFINEMENT</KEYWORD2>
			<KEYWORD2>SEES</KEYWORD2>
			<KEYWORD2>SETS</KEYWORD2>
			<KEYWORD2>USES</KEYWORD2>
			<KEYWORD2>VALUES</KEYWORD2>

	
			<!-- substitutions -->
			<KEYWORD2>ANY</KEYWORD2>
			<KEYWORD2>ASSERT</KEYWORD2>
			<KEYWORD2>BE</KEYWORD2>
			<KEYWORD2>BEGIN</KEYWORD2>
			<KEYWORD2>CASE</KEYWORD2>
			<KEYWORD2>CHOICE</KEYWORD2>
			<KEYWORD2>DO</KEYWORD2>
			<KEYWORD2>EITHER</KEYWORD2>
			<KEYWORD2>ELSE</KEYWORD2>
			<KEYWORD2>ELSIF</KEYWORD2>
			<!-- voir pour le end -->
			<KEYWORD2>END</KEYWORD2>
			<KEYWORD2>IF</KEYWORD2>
			<KEYWORD2>IN</KEYWORD2>
			<KEYWORD2>LET</KEYWORD2>
			<KEYWORD2>OF</KEYWORD2>
			<KEYWORD2>OR</KEYWORD2>
			<KEYWORD2>PRE</KEYWORD2>
			<KEYWORD2>SELECT</KEYWORD2>
			<KEYWORD2>THEN</KEYWORD2>
			<KEYWORD2>VAR</KEYWORD2>
			<KEYWORD2>VARIANT</KEYWORD2>
			<KEYWORD2>WHEN</KEYWORD2>
			<KEYWORD2>WHERE</KEYWORD2>
			<KEYWORD2>WHILE</KEYWORD2>
			
			
			<KEYWORD3>FIN</KEYWORD3>
			<KEYWORD3>FIN1</KEYWORD3>
			<KEYWORD3>INT</KEYWORD3>
			<KEYWORD3>INTEGER</KEYWORD3>
			<KEYWORD3>INTER</KEYWORD3>
			<KEYWORD3>MAXINT</KEYWORD3>
			<KEYWORD3>MININT</KEYWORD3>
			<KEYWORD3>NAT</KEYWORD3>
			<KEYWORD3>NAT1</KEYWORD3>
			<KEYWORD3>NATURAL</KEYWORD3>
			<KEYWORD3>NATURAL1</KEYWORD3>
			<KEYWORD3>PI</KEYWORD3>
			<KEYWORD3>POW</KEYWORD3>
			<KEYWORD3>POW1</KEYWORD3>
			<KEYWORD3>SIGMA</KEYWORD3>
			<KEYWORD3>UNION</KEYWORD3>

			<FUNCTION>arity</FUNCTION>
			<FUNCTION>bin</FUNCTION>
			<FUNCTION>bool</FUNCTION>
			<FUNCTION>btree</FUNCTION>
			<FUNCTION>card</FUNCTION>
			<FUNCTION>closure</FUNCTION>
			<FUNCTION>closure1</FUNCTION>
			<FUNCTION>conc</FUNCTION>
			<FUNCTION>const</FUNCTION>
			<FUNCTION>dom</FUNCTION>
			<FUNCTION>father</FUNCTION>
			<FUNCTION>first</FUNCTION>
			<FUNCTION>fnc</FUNCTION>
			<FUNCTION>front</FUNCTION>
			<FUNCTION>id</FUNCTION>
			<FUNCTION>infix</FUNCTION>
			<FUNCTION>inter</FUNCTION>
			<FUNCTION>iseq</FUNCTION>
			<FUNCTION>iseq1</FUNCTION>
			<FUNCTION>iterate</FUNCTION>
			<FUNCTION>last</FUNCTION>
			<FUNCTION>left</FUNCTION>
			<FUNCTION>max</FUNCTION>
			<FUNCTION>min</FUNCTION>
			<FUNCTION>mirror</FUNCTION>
			<FUNCTION>mod</FUNCTION>
			<FUNCTION>not</FUNCTION>
			<FUNCTION>or</FUNCTION>
			<FUNCTION>perm</FUNCTION>
			<FUNCTION>postfix</FUNCTION>
			<FUNCTION>pred</FUNCTION>
			<FUNCTION>prefix</FUNCTION>
			<FUNCTION>prj1</FUNCTION>
			<FUNCTION>prj2</FUNCTION>
			<FUNCTION>r~</FUNCTION>
			<FUNCTION>ran</FUNCTION>
			<FUNCTION>rank</FUNCTION>
			<FUNCTION>rec</FUNCTION>
			<FUNCTION>rel</FUNCTION>
			<FUNCTION>rev</FUNCTION>
			<FUNCTION>right</FUNCTION>
			<FUNCTION>seq</FUNCTION>
			<FUNCTION>seq1</FUNCTION>
			<FUNCTION>size</FUNCTION>
			<FUNCTION>sizet</FUNCTION>
			<FUNCTION>skip</FUNCTION>
			<FUNCTION>son</FUNCTION>
			<FUNCTION>sons</FUNCTION>
			<FUNCTION>struct</FUNCTION>
			<FUNCTION>subtree</FUNCTION>
			<FUNCTION>succ</FUNCTION>
			<FUNCTION>tail</FUNCTION>
			<FUNCTION>top</FUNCTION>
			<FUNCTION>tree</FUNCTION>
			<FUNCTION>union</FUNCTION>

		</KEYWORDS>

	</RULES>
</MODE>
