<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!--

  This file is part of KDE's kate project.

  copyright   : (C) 2004 by Irv Mullins
  email       : irvm at ellijay dot com

  last change : 2008-08-08 for Euphoria 4.0 and EuGTK 4.0

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Library General Public
  License as published by the Free Software Foundation; either
  version 2 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Library General Public License for more details.

  You should have received a copy of the GNU Library General Public
  License along with this library; if not, write to the
  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  Boston, MA  02110-1301, USA.

-->

<!-- Store this in /usr/share/apps/katepart/syntax -->

<language name="Euphoria" version="4.0" kateversion="2.5.9" section="Scripts" extensions="*.e;*.ex;*.exw;*.exu" mimetype="text/x-euphoria" author="Irv Mullins (irvm@ellijay.com)" license="LGPL">

	<highlighting>
  
	 <list name="keywords">
   <item> abort </item>
   <item> allocate </item>
   <item> allocate_string </item>
   <item> allow_break </item>
   <item> and </item>
   <item> and_bits </item>
   <item> append </item>
   <item> arccos </item>
   <item> arcsin </item>
   <item> arctan </item>
   <item> atom_to_float32 </item>
   <item> atom_to_float64 </item>
   <item> as </item>
   <item> begin </item>
   <item> bits_to_int </item>
   <item> bytes_to_int </item>
   <item> c_func </item>
   <item> c_proc </item>
   <item> call </item>
   <item> call_back </item>
   <item> call_func </item>
   <item> call_proc </item>
   <item> case </item>
   <item> check_break </item>
   <item> chdir </item>
   <item> clear_screen </item>
   <item> close </item>
   <item> command_line </item>
   <item> compare </item>
   <item> cos </item>
   <item> crash_file </item>
   <item> crash_message </item>
   <item> current_dir </item>
   <item> custom_sort </item>
   <item> date </item>
   <item> define_c_func </item>
   <item> define_c_proc </item>
   <item> define_c_var </item>
   <item> dir </item>
   <item> display_text_image </item>
   <item> do </item>
   <item> else </item>
   <item> elsif </item>
   <item> end </item>
   <item> equal </item>
   <item> exit </item>
   <item> find </item>
   <item> float32_to_atom </item>
   <item> float64_to_atom </item>
   <item> floor </item>
   <item> flush </item>
   <item> for </item>
   <item> free </item>
   <item> free_console </item>
   <item> function </item>
   <item> get_bytes </item>
   <item> get_key </item>
   <item> get_mouse </item>
   <item> get_position </item>
   <item> get_screen_char </item>
   <item> getc </item>
   <item> getenv </item>
   <item> gets </item>
   <item> if </item>
   <item> include </item>
   <item> int_to_bits </item>
   <item> int_to_bytes </item>
   <item> length </item>
   <item> lock_file </item>
   <item> log </item>
   <item> lower </item>
   <item> machine_func </item>
   <item> machine_proc </item>
   <item> match </item>
   <item> mem_copy </item>
   <item> mem_set </item>
   <item> mouse_events </item>
   <item> mouse_pointer </item>
   <item> not </item>
   <item> not_bits </item>
   <item> of </item>
   <item> open </item>
   <item> open_dll </item>
   <item> or </item>
   <item> or_bits </item>
   <item> peek </item>
   <item> peek4 </item>
   <item> peek4s </item>
   <item> peek4u </item>
   <item> platform </item>
   <item> poke </item>
   <item> poke4 </item>
   <item> position </item>
   <item> power </item>
   <item> prepend </item>
   <item> print </item>
   <item> printf </item>
   <item> procedure </item>
   <item> profile </item>
   <item> prompt_number </item>
   <item> prompt_string </item>
   <item> put_screen_char </item>
   <item> puts </item>
   <item> rand </item>
   <item> read_bitmap </item>
   <item> register_block </item>
   <item> remainder </item>
   <item> repeat </item>
   <item> return </item>
   <item> reverse </item>
   <item> routine_id </item>
   <item> save_bitmap </item>
   <item> save_text_image </item>
   <item> scroll </item>
   <item> seek </item>
   <item> set_rand </item>
   <item> sin </item>
   <item> sleep </item>
   <item> sort </item>
   <item> sprint </item>
   <item> sprintf </item>
   <item> sqrt </item>
   <item> switch </item>
   <item> system </item>
   <item> system_exec </item>
   <item> tan </item>
   <item> text_color </item>
   <item> then </item>
   <item> time </item>
   <item> to </item>
   <item> trace </item>
   <item> type </item>
   <item> unlock_file </item>
   <item> unregister_block </item>
   <item> upper </item>
   <item> value </item>
   <item> video_config </item>
   <item> wait_key </item>
   <item> walk_dir </item>
   <item> where </item>
   <item> while </item>
   <item> wildcard_file </item>
   <item> wildcard_match </item>
    <item> with </item>
    <item> without </item>
    <item> wrap </item>
    <item> xor </item>
    <item> xor_bits </item>
    <item> ? </item>
  </list>

  <list name="types">
		<item> as </item>
    <item> atom </item>
    <item> constant </item>
		<item> export </item>
		<item> global </item>
		<item> include </item>
    <item> integer </item>
    <item> object </item>
    <item> sequence </item>
    <item> boolean </item>
    <item> type </item>
  </list>

  <list name="constants">
    <item> PI </item>
    <item> GET_SUCCESS </item>
  </list>

 <list name="Gtkkeywords">
	<item> add </item>
	<item> connect </item>
	<item> create </item>
	<item> get </item>
	<item> pack </item>
	<item> set </item>
	<item> show </item>
	<item> show_all </item>
	<item> main </item>
 </list>

 <list name="Gtkwidgets">
	<item> GObject </item>
	<item> GdkPixbuf </item>
	<item> GtkAboutDialog </item>
	<item> GtkAction </item>
	<item> GtkAdjustment </item>
	<item> GtkAlignment </item>
	<item> GtkArrow </item>
	<item> GtkAspectFrame </item>
	<item> GtkAssistant </item>
	<item> GtkBin </item>
	<item> GtkBox </item>
	<item> GtkButton </item>
	<item> GtkButtonBox </item>
	<item> GtkCalendar </item>
	<item> GtkCellRenderer </item>
	<item> GtkCellRendererText </item>
	<item> GtkCheckButton </item>
	<item> GtkCheckMenuItem </item>
	<item> GtkColorButton </item>
	<item> GtkColorSelectionDialog </item>
	<item> GtkComboBox </item>
	<item> GtkComboBoxEntry </item>
	<item> GtkComboBoxText </item>
	<item> GtkContainer </item>
	<item> GtkCurve </item>
	<item> GtkDialog </item>
	<item> GtkDrawingArea </item>
	<item> GtkEntry </item>
	<item> GtkEntryCompletion </item>
	<item> GtkEventBox </item>
	<item> GtkExpander </item>
	<item> GtkFileChooser </item>
	<item> GtkFileChooserButton </item>
	<item> GtkFileChooserDialog </item>
	<item> GtkFileChooserWidget </item>
	<item> GtkFileFilter </item>
	<item> GtkFixed </item>
	<item> GtkFontButton </item>
	<item> GtkFontSelection </item>
	<item> GtkFontSelectionDialog </item>
	<item> GtkFrame </item>
	<item> GtkHBox </item>
	<item> GtkHButtonBox </item>
	<item> GtkHPaned </item>
	<item> GtkHRuler </item>
	<item> GtkHSV </item>
	<item> GtkHScale </item>
	<item> GtkHScrollbar </item>
	<item> GtkHSeparator </item>
	<item> GtkHandleBox </item>
	<item> GtkIconInfo </item>
	<item> GtkIconTheme </item>
	<item> GtkIconView </item>
	<item> GtkImContext </item>
	<item> GtkImContextSimple </item>
	<item> GtkImMulticontext </item>
	<item> GtkImage </item>
	<item> GtkImageMenuItem </item>
	<item> GtkInputDialog </item>
	<item> GtkInvisible </item>
	<item> GtkItem </item>
	<item> GtkLabel </item>
	<item> GtkLayout </item>
	<item> GtkLinkButton </item>
	<item> GtkListStore </item>
	<item> GtkMain </item>
	<item> GtkMenu </item>
	<item> GtkMenuBar </item>
	<item> GtkMenuItem </item>
	<item> GtkMenuShell </item>
	<item> GtkMenuToolButton </item>
	<item> GtkMessageDialog </item>
	<item> GtkMisc </item>
	<item> GtkNotebook </item>
	<item> GtkObject </item>
	<item> GtkPageSetup </item>
	<item> GtkPageSetupUnixDialog </item>
	<item> GtkPaned </item>
	<item> GtkPaperSize </item>
	<item> GtkPlug </item>
	<item> GtkPrintBackend </item>
	<item> GtkPrintContext </item>
	<item> GtkPrintJob </item>
	<item> GtkPrintOperation </item>
	<item> GtkPrintRun </item>
	<item> GtkPrintSettings </item>
	<item> GtkPrintUnixDialog </item>
	<item> GtkPrinter </item>
	<item> GtkPrinterOption </item>
	<item> GtkPrinterOptionSet </item>
	<item> GtkPrinterOptionWidget </item>
	<item> GtkProgress </item>
	<item> GtkProgressBar </item>
	<item> GtkRadioAction </item>
	<item> GtkRadioButton </item>
	<item> GtkRadioMenuItem </item>
	<item> GtkRadioToolButton </item>
	<item> GtkRange </item>
	<item> GtkRecentChooserDialog </item>
	<item> GtkRequisition </item>
	<item> GtkRuler </item>
	<item> GtkScale </item>
	<item> GtkScaleButton </item>
	<item> GtkScrollbar </item>
	<item> GtkScrolledWindow </item>
	<item> GtkSeparator </item>
	<item> GtkSeparatorMenuItem </item>
	<item> GtkSpinButton </item>
	<item> GtkStatusBar </item>
	<item> GtkTable </item>
	<item> GtkTearoffMenuItem </item>
	<item> GtkToggleAction </item>
	<item> GtkToggleButton </item>
	<item> GtkToggleToolButton </item>
	<item> GtkToolBar </item>
	<item> GtkToolButton </item>
	<item> GtkToolItem </item>
	<item> GtkToolTip </item>
	<item> GtkTreeIter </item>
	<item> GtkTreeModel </item>
	<item> GtkTreeModelFilter </item>
	<item> GtkTreeModelSort </item>
	<item> GtkTreePath </item>
	<item> GtkTreeRowReference </item>
	<item> GtkTreeSelection </item>
	<item> GtkTreeSortable </item>
	<item> GtkTreeStore </item>
	<item> GtkTreeView </item>
	<item> GtkTreeViewColumn </item>
	<item> GtkVBox </item>
	<item> GtkVButtonBox </item>
	<item> GtkVPaned </item>
	<item> GtkVRuler </item>
	<item> GtkVScale </item>
	<item> GtkVScrollbar </item>
	<item> GtkVSeparator </item>
	<item> GtkViewport </item>
	<item> GtkVolumeButton </item>
	<item> GtkWidget </item>
	<item> GtkWindow </item>
	<item> GtkWindowGroup </item>

    </list>

    <contexts>
			
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        
				<RegExpr attribute="Keyword" context="#stay" String="\bend\s+for\b" endRegion="regFor"/>
        <RegExpr attribute="Keyword" context="#stay" String="\bfor\b" beginRegion="regFor"/>

        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+if\b" endRegion="regIf"/>
        <RegExpr attribute="Keyword" context="#stay" String="\bif\b" beginRegion="regIf"/>

        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+function\b" endRegion="regFunction"/>
        <RegExpr attribute="Keyword" context="#stay" String="\bfunction\b" beginRegion="regFunction"/>

        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+procedure\b" endRegion="regProcedure"/>
        <RegExpr attribute="Keyword" context="#stay" String="\bprocedure\b" beginRegion="regProcedure"/>

        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+while\b" endRegion="regWhile"/>
        <RegExpr attribute="Keyword" context="#stay" String="\bwhile\b" beginRegion="regWhile"/>

        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+type\b" endRegion="regType"/>
        <RegExpr attribute="Keyword" context="#stay" String="\btype\b" beginRegion="regType"/>

        <keyword attribute="Keyword" context="#stay" String="keywords"/>
        
				<keyword attribute="Gtkwidgets" context="#stay" String="Gtkwidgets"/>
        <keyword attribute="Gtkkeywords" context="#stay" String="Gtkkeywords"/>
				
				<keyword attribute="Type" context="#stay" String="types"/>

				<Float attribute="Number" context="#stay"/>
        <Int attribute="Number" context="#stay"/>

				<DetectChar attribute="String" context="String" char="&quot;" />
        <RegExpr attribute="Region Marker" context="#stay" String="---+" beginRegion="regMarker" firstNonSpace="true"/>
        <RegExpr attribute="Region Marker" context="#stay" String="---+" endRegion="regMarker" firstNonSpace="true"/>

				<Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>

			</context>

      <context attribute="String" lineEndContext="#pop" name="String">
        <DetectChar attribute="String" context="#pop" char="&quot;"/>
      </context>

      <context attribute="Comment" lineEndContext="#pop" name="Comment">
        <keyword attribute="Number" context="#stay" String="attention" />
      </context>
    </contexts>

    <itemDatas>
      <itemData name="Normal Text"     defStyleNum="dsNormal" />
      <itemData name="Keyword"         defStyleNum="dsKeyword" />
      <itemData name="Gtkwidgets"       defStyleNum="dsKeyword" />
			<itemData name="Gtkkeywords"		 defStyleNum="dsKeyword" />
      <itemData name="Type"            defStyleNum="dsDataType"/>
      <itemData name="Number"          defStyleNum="dsDecVal" />
      <itemData name="String"          defStyleNum="dsString" />
      <itemData name="Directive"       defStyleNum="dsOthers" />
      <itemData name="Comment"         defStyleNum="dsComment" />
      <itemData name="Region Marker"   defStyleNum="dsRegionMarker" />
    </itemDatas>

  </highlighting>
  <general>
    <keywords casesensitive="1" />
    <comments>
       <comment name="singleLine" start="--" />
    </comments>
  </general>
</language>
