<?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 : 2004-04-24


  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" kateversion="2.4" section="Scripts" extensions="*.e;*.ex;*.exw;*.exu" mimetype="text/x-euphoria" author="Irv Mullins (irvm@ellijay.com)" license="LGPLv2+">
  <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> 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> 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> atom </item>
      <item> constant </item>
      <item> global </item>
      <item> integer </item>
      <item> object </item>
      <item> sequence </item>
      <item> type </item>
    </list>

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

    <list name="GtkKeywords">
      <item> addto </item>
      <item> adjustment </item>
      <item> alignment </item>
      <item> appendto </item>
      <item> append_page </item>
      <item> arrow </item>
      <item> aspect_frame </item>
      <item> button </item>
      <item> calendar </item>
      <item> cell_renderer_text </item>
      <item> cell_renderer_toggle </item>
      <item> check </item>
      <item> checkbutton </item>
      <item> check_menu_item </item>
      <item> choice </item>
      <item> combo </item>
      <item> connect </item>
      <item> drawingarea </item>
      <item> draw_arc </item>
      <item> draw_image </item>
      <item> draw_line </item>
      <item> draw_polygon </item>
      <item> draw_point </item>
      <item> draw_rectangle </item>
      <item> end_submenu </item>
      <item> entry </item>
      <item> euget </item>
      <item> event_box </item>
      <item> flatten </item>
      <item> font </item>
      <item> frame </item>
      <item> get </item>
      <item> getImage </item>
      <item> getSize </item>
      <item> g_list </item>
      <item> g_list_to_sequence </item>
      <item> deallocate_strings </item>
      <item> draw_line </item>
      <item> hbox </item>
      <item> hbuttonbox </item>
      <item> hpaned </item>
      <item> hscrollbar </item>
      <item> hseparator </item>
      <item> hscale </item>
      <item> idle_add </item>
      <item> image </item>
      <item> image_menu_item </item>
      <item> init </item>
      <item> label </item>
      <item> limit </item>
      <item> list_store </item>
      <item> list_view </item>
      <item> list_view_column </item>
      <item> main </item>
      <item> mark_day </item>
      <item> menu </item>
      <item> menubar </item>
      <item> menu_item </item>
      <item> mouse_button </item>
      <item> new_gc </item>
      <item> new_group </item>
      <item> new_menu_group </item>
      <item> notebook </item>
      <item> option </item>
      <item> option_menu </item>
      <item> pack </item>
      <item> path </item>
      <item> pop </item>
      <item> progress_bar </item>
      <item> push </item>
      <item> quit </item>
      <item> radio </item>
      <item> radiobutton </item>
      <item> radio_menu_item </item>
      <item> rc_parse </item>
      <item> run </item>
      <item> separator_menu_item </item>
      <item> set </item>
      <item> set_submenu </item>
      <item> str </item>
      <item> scrolled_window </item>
      <item> seq_to_str </item>
      <item> setfg </item>
      <item> setProperty </item>
      <item> show </item>
      <item> spinbutton </item>
      <item> statusbar </item>
      <item> table </item>
      <item> textbox </item>
      <item> timer </item>
      <item> togglebutton </item>
      <item> toolbar </item>
      <item> tooltip </item>
      <item> tree_store </item>
      <item> tree_view </item>
      <item> tree_view_column </item>
      <item> vbox </item>
      <item> vbuttonbox </item>
      <item> vpaned </item>
      <item> vscale </item>
      <item> vscrollbar </item>
      <item> vseparator </item>
      <item> when </item>
      <item> window </item>
      <item> NULL </item>
      <item> TRUE </item>
      <item> FALSE </item>
      <item> color_selection </item>
      <item> file_selection </item>
      <item> font_selection_dialog </item>
      <item> Error </item>
      <item> Info </item>
      <item> Question </item>
      <item> Warn </item>
      <item> YesNo </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="GtkKeyword" 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="--\s*BEGIN.*" beginRegion="regMarker" firstNonSpace="true"/>
        <RegExpr attribute="Region Marker" context="#stay" String="--\s*END.*" 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="GtkKeyword"      defStyleNum="dsKeyword" />
      <itemData name="Type"            defStyleNum="dsDataType"/>
      <itemData name="Number"          defStyleNum="dsDecVal" />
      <itemData name="String"          defStyleNum="dsString" />
      <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>