<?xml version="1.0"?>
<!DOCTYPE MODE SYSTEM "xmode.dtd">
<!-- Catalog entry:
	<MODE NAME="behavior-test" FILE="behavior-test.xml" FILE_NAME_GLOB="*.{bt,bdt,behavior,btest}" />
-->
<MODE>
   <PROPS>
      <PROPERTY NAME="commentStart" VALUE="/*" />
      <PROPERTY NAME="commentEnd" VALUE="*/" />
      <PROPERTY NAME="lineComment" VALUE="//" />
   </PROPS>
   <RULES IGNORE_CASE="FALSE">
      <!-- Key DSL keywords: Given or If, When, Then, Where, and Expect -->
      <SEQ_REGEXP HASH_CHARS="gG" TYPE="KEYWORD1">[gG][iI][vV][eE][nN]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="iI" TYPE="KEYWORD1">[iI][fF]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="wW" TYPE="KEYWORD1">[wW][hH][eE][nN]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="tT" TYPE="KEYWORD1">[tT][hH][eE][nN]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="wW" TYPE="KEYWORD1">[wW][hH][eE][rR][eE]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="eE" TYPE="KEYWORD1">[eE][xX][pP][eE][cC][tT]</SEQ_REGEXP>
      
      <!-- Secondary keywords: and, but, should, ensure -->
      <SEQ_REGEXP HASH_CHARS="aA" TYPE="KEYWORD2">[aA][nN][dD]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="bB" TYPE="KEYWORD2">[bB][uU][tT]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="sS" TYPE="KEYWORD2">[sS][hH][oO][uU][lL][dD]</SEQ_REGEXP>
      <SEQ_REGEXP HASH_CHARS="eE" TYPE="KEYWORD2">[eE][nN][sS][uU][rR][eE]</SEQ_REGEXP>
      
      <!-- Variable recognition - any word starting with $ -->
      <SPAN TYPE="KEYWORD3" ESCAPE="\" NO_LINE_BREAK="TRUE">
         <BEGIN>${</BEGIN>
         <END>}</END>
      </SPAN>
                                                 
      <!-- Entity recognition - any word starting with a capital letter -->
      <SEQ_REGEXP HASH_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZ" TYPE="LABEL">[A-Z]\w+</SEQ_REGEXP>

      <!-- Strings, and quotes -->
      <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
         <BEGIN>"</BEGIN>
         <END>"</END>
      </SPAN>
      <SPAN TYPE="LITERAL2" ESCAPE="\" NO_LINE_BREAK="TRUE">
         <BEGIN>'</BEGIN>
         <END>'</END>
      </SPAN>
      
      <!-- Potential data -->
      <SPAN TYPE="MARKUP" ESCAPE="\" NO_LINE_BREAK="FALSE" DELEGATE="markup">
         <BEGIN>(</BEGIN>
         <END>)</END>
      </SPAN>
      <SPAN TYPE="MARKUP" ESCAPE="\" NO_LINE_BREAK="FALSE" DELEGATE="markup">
         <BEGIN>[</BEGIN>
         <END>]</END>
      </SPAN>
      
      <!-- Comments -->
      <SPAN TYPE="COMMENT1" ESCAPE="\" NO_LINE_BREAK="FALSE">
         <BEGIN>/**</BEGIN>
         <END>*/</END>
      </SPAN>
      <SPAN TYPE="COMMENT2" ESCAPE="\" NO_LINE_BREAK="FALSE">
         <BEGIN>/*</BEGIN>
         <END>*/</END>
      </SPAN>
      <EOL_SPAN TYPE="COMMENT3">//</EOL_SPAN>
      <EOL_SPAN TYPE="COMMENT3">!</EOL_SPAN>
      <EOL_SPAN TYPE="COMMENT4">::</EOL_SPAN>
      
      <!-- mark numbers as DIGIT -->
      <SEQ_REGEXP HASH_CHARS="-0123456789." TYPE="DIGIT">[-]?\d+([.]\d*)?([eE][+-]?\d+)?</SEQ_REGEXP>
   </RULES>
   <RULES SET="markup">
      <!-- Table Headers - Anything between '|=' and '=' -->
      <SPAN ESCAPE="\" MATCH_TYPE="OPERATOR" NO_LINE_BREAK="TRUE" TYPE="KEYWORD3">
         <BEGIN>|=</BEGIN>
         <END>=</END>
      </SPAN>     
      <!-- Key value pairs -->
      <SEQ TYPE="OPERATOR">,</SEQ>
      <SEQ TYPE="OPERATOR">|</SEQ>
      <SEQ TYPE="OPERATOR">+</SEQ>
      <SEQ TYPE="OPERATOR">-</SEQ>
      <MARK_PREVIOUS AT_WHITESPACE_END="TRUE" MATCH_TYPE="OPERATOR" TYPE="KEYWORD3">=</MARK_PREVIOUS>
      
      
      <!-- Strings, and quotes -->
      <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
         <BEGIN>"</BEGIN>
         <END>"</END>
      </SPAN>
      <SPAN TYPE="LITERAL2" ESCAPE="\" NO_LINE_BREAK="TRUE">
         <BEGIN>'</BEGIN>
         <END>'</END>
      </SPAN>
      <!-- mark numbers as DIGIT -->
      <SEQ_REGEXP HASH_CHARS="-0123456789." TYPE="DIGIT">[-]?\d+([.]\d*)?([eE][+-]?\d+)?</SEQ_REGEXP>
   </RULES>
</MODE>
<!-- ::mode=xml:noTabs=true:: -->

