<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language _name="Scala" version="1.0" _section="Sources" mimetypes="text/x-scala">

	<escape-char>\</escape-char>

	<string _name = "String" style = "String" end-at-line-end = "TRUE">
		<start-regex>&quot;</start-regex>
		<end-regex>&quot;</end-regex>
	</string>

	<pattern-item _name = "Character" style = "String" end-at-line-end = "TRUE">
		<regex>&apos;(\\(.|[0-7]+|u[0-9a-fA-F]+)|.)&apos;</regex>
	</pattern-item>

	<pattern-item _name = "Symbol" style = "Others" end-at-line-end = "TRUE">
		<regex>&apos;[^&apos;;,\.\) \t\n]*</regex>
	</pattern-item>

	<pattern-item _name = "Annotation" style = "Others">
		<regex>@[^\() \t\n]+</regex>
	</pattern-item>

	<line-comment _name = "Line Comment" style= "Comment">
		<start-regex>//</start-regex>
	</line-comment>

	<block-comment _name = "Block Comment" style = "Comment">
		<start-regex>/\*</start-regex>
        	<end-regex>\*/</end-regex>
	</block-comment>

	<keyword-list _name = "Declarations" style = "Keyword" case-sensitive="TRUE">
		<keyword>class</keyword>
		<keyword>def</keyword>
		<keyword>extends</keyword>
		<keyword>forSome</keyword>
		<keyword>import</keyword>
		<keyword>mixin</keyword>
		<keyword>object</keyword>
		<keyword>package</keyword>
		<keyword>trait</keyword>
		<keyword>type</keyword>
		<keyword>val</keyword>
		<keyword>var</keyword>
		<keyword>with</keyword>
	</keyword-list>

	<keyword-list _name = "Primitives" style = "Data Type" case-sensitive="TRUE">
		<keyword>boolean</keyword>
		<keyword>byte</keyword>
		<keyword>char</keyword>
		<keyword>double</keyword>
		<keyword>float</keyword>
		<keyword>int</keyword>
		<keyword>long</keyword>
		<keyword>short</keyword>
	</keyword-list>

	<keyword-list _name = "Flow" style = "Keyword" case-sensitive="TRUE">
		<keyword>case</keyword>
		<keyword>catch</keyword>
		<keyword>do</keyword>
      		<keyword>else</keyword>
                <keyword>finally</keyword>
		<keyword>for</keyword>
		<keyword>if</keyword>
		<keyword>match</keyword>
		<keyword>requires</keyword>
		<keyword>return</keyword>
                <keyword>throw</keyword>
		<keyword>try</keyword>
		<keyword>while</keyword>
		<keyword>yield</keyword>
	</keyword-list>

	<keyword-list _name = "Modifiers" style = "Keyword" case-sensitive="TRUE">
		<keyword>abstract</keyword>
		<keyword>final</keyword>
		<keyword>implicit</keyword>
		<keyword>lazy</keyword>
		<keyword>override</keyword>
		<keyword>private</keyword>
		<keyword>protected</keyword>
		<keyword>sealed</keyword>
	</keyword-list>

	<keyword-list _name = "Memory" style = "Others" case-sensitive="TRUE">
		<keyword>false</keyword>
		<keyword>new</keyword>
		<keyword>null</keyword>
		<keyword>super</keyword>
		<keyword>this</keyword>
		<keyword>true</keyword>
	</keyword-list>

	<pattern-item _name = "Numeric" style = "Decimal">
		<regex>(\b([0-9]+|0[xX][0-9a-fA-F]+)[Ll]?\b|\b(([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFdD]?|[0-9]+[FfDd]))</regex>
	</pattern-item>

</language>
