<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language _name="Graal" version="1.0" _section="Sources" mimetypes="text/x-graalscript">
	
	<string _name = "String" style = "String" end-at-line-end = "FALSE">
		<start-regex>&quot;</start-regex>
		<end-regex>&quot;</end-regex>
	</string>

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

	<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>

	<pattern-item _name="Punctuators" style="Others 3">
		<regex>[{}();:,.]</regex>		
	</pattern-item>

	<pattern-item _name="Operators" style="Function">
		<regex>[-~^@/%|=+*!?&amp;&lt;&gt;]</regex>
	</pattern-item>
	
	<pattern-item _name="Array Operators" style="Function">
		<regex>(\[|\])</regex>
	</pattern-item>

        <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>

	<keyword-list _name = "Declarations" style = "Keyword" case-sensitive="TRUE">
		<keyword>class</keyword>
		<keyword>extends</keyword>
		<keyword>implements</keyword>
		<keyword>import</keyword>
		<keyword>instanceof</keyword>
		<keyword>interface</keyword>
		<keyword>native</keyword>
		<keyword>package</keyword>
		<keyword>volatile</keyword>
		<keyword>throws</keyword>
	</keyword-list>

	<keyword-list _name = "Flow" style = "Keyword" case-sensitive="TRUE">
		<keyword>break</keyword>
		<keyword>case</keyword>
		<keyword>continue</keyword>
		<keyword>default</keyword>
		<keyword>do</keyword>
		<keyword>else</keyword>
		<keyword>elseif</keyword>
		<keyword>for</keyword>
		<keyword>function</keyword>
		<keyword>if</keyword>
		<keyword>in</keyword>
		<keyword>return</keyword>
		<keyword>switch</keyword>
		<keyword>while</keyword>
		<keyword>with</keyword>
		<keyword>xor</keyword>
	</keyword-list>

	<keyword-list _name = "Modifiers" style = "Keyword" case-sensitive="TRUE">
		<keyword>public</keyword>
		<keyword>const</keyword>
		<keyword>enum</keyword>
	</keyword-list>

	<keyword-list _name = "Memory" style = "Others" case-sensitive="TRUE">
		<keyword>new</keyword>
		<keyword>datablock</keyword>
	</keyword-list>

	<keyword-list _name = "Builtin Variables" style = "Others" case-sensitive="FALSE">
		<keyword>true</keyword>
		<keyword>false</keyword>
		<keyword>nil</keyword>
		<keyword>null</keyword>
		<keyword>NULL</keyword>
		<keyword>pi</keyword>
	</keyword-list>

	<keyword-list _name="GS1 Commands" style="Function" case-sensitive="TRUE">
		<keyword>say2</keyword>
		<keyword>setani</keyword>
		<keyword>setcharani</keyword>
		<keyword>setcharprop</keyword>
		<keyword>setplayerprop</keyword>
		<keyword>setshape</keyword>
		<keyword>setshape2</keyword>
		<keyword>sleep</keyword>
		<keyword>triggeraction</keyword>
	</keyword-list>

	<keyword-list _name="GS1 Functions" style="Function" case-sensitive="TRUE">
		<keyword>startswith</keyword>
		<keyword>strequals</keyword>
		<keyword>strtofloat</keyword>
	</keyword-list>

	<keyword-list _name="Global Functions" style="Function" case-sensitive="TRUE">
		<keyword>echo</keyword>
	</keyword-list>
	
	<keyword-list _name="Object Functions" style="Function" case-sensitive="TRUE">
		<keyword>index</keyword>
		<keyword>length</keyword>
		<keyword>pos</keyword>
		<keyword>size</keyword>
		<keyword>type</keyword>
	</keyword-list>

	<keyword-list _name="Object Properties" style="Data Type" case-sensitive="TRUE">
		<keyword>name</keyword>
	</keyword-list>

</language>
