<?xml version="1.0"?>
<!DOCTYPE MODE SYSTEM "xmode.dtd">

<!--
	jEdit mode for the 'leg' syntax of the peg/leg parser generator.
	
	by Ali Rantakari - http://hasseg.org
-->
<MODE>
	<RULES ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="FALSE">
		<PROPS>
			<PROPERTY NAME="lineComment" VALUE="#" />
		</PROPS>
		
		<SPAN DELEGATE="c::MAIN" AT_LINE_START="FALSE" MATCH_TYPE="MARKUP">
			<BEGIN>%{</BEGIN>
			<END>%}</END>
		</SPAN>
		
		<SPAN DELEGATE="c::MAIN" AT_LINE_START="FALSE" MATCH_TYPE="MARKUP">
			<BEGIN>%%</BEGIN>
			<END>•°å§§°</END> <!-- should make this span continue till the end -->
		</SPAN>
		
		<EOL_SPAN TYPE="COMMENT1" AT_LINE_START="FALSE">#</EOL_SPAN>
		
		<SEQ TYPE="OPERATOR" DELEGATE="ACTIONS">{</SEQ>
		
		<SPAN TYPE="LITERAL1" AT_LINE_START="FALSE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>
		
		<SPAN TYPE="LITERAL2" AT_LINE_START="FALSE">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>
		
		<SPAN TYPE="LITERAL2" MATCH_TYPE="OPERATOR" AT_LINE_START="FALSE">
			<BEGIN>[</BEGIN>
			<END>]</END>
		</SPAN>
		
		<MARK_PREVIOUS AT_WHITESPACE_END="FALSE" AT_WORD_START="TRUE"
			TYPE="LABEL" MATCH_TYPE="OPERATOR">:</MARK_PREVIOUS>
		
		<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">&amp;</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">&lt;</SEQ>
		<SEQ TYPE="OPERATOR">&gt;</SEQ>
		
	</RULES>
	
	<!--
	We use the following delegates to implement support for two levels of
	nested curly braces within actions:
	-->
	
	<RULES SET="ACTIONS_ACTUAL" ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="FALSE">
		<!-- This is where you set how actions are highlighted: -->
		<SEQ_REGEXP TYPE="COMMENT4">[^{}]*</SEQ_REGEXP>
		<!--<SEQ_REGEXP DELEGATE="c::MAIN">[^{}]*</SEQ_REGEXP>-->
	</RULES>
	
	<RULES SET="ACTIONS" ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="FALSE">
		<SEQ TYPE="COMMENT4" DELEGATE="ACTIONS2">{</SEQ>
		<SEQ TYPE="OPERATOR" DELEGATE="MAIN">}</SEQ>
		<IMPORT DELEGATE="ACTIONS_ACTUAL" />
	</RULES>
	
	<RULES SET="ACTIONS2" ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="FALSE">
		<SEQ TYPE="COMMENT4" DELEGATE="ACTIONS3">{</SEQ>
		<SEQ TYPE="COMMENT4" DELEGATE="ACTIONS">}</SEQ>
		<IMPORT DELEGATE="ACTIONS_ACTUAL" />
	</RULES>
	
	<RULES SET="ACTIONS3" ESCAPE="\" IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="FALSE">
		<SEQ TYPE="COMMENT4" DELEGATE="ACTIONS2">}</SEQ>
		<IMPORT DELEGATE="ACTIONS_ACTUAL" />
	</RULES>
	
</MODE>

