[DataFlex]
lexer=dataflex

keywords.0=name:Keywords::abort abort_transaction activate_view add address append append_output ascii at attach bigint boolean break broadcast \
broadcast_focus byref calc call_driver callstackdump case channel char character clear close close_input close_output constrain constrained_clear \
constrained_find constraint_set constraint_validate convert copy_db copy_records copyfile create_field create_index currency date datetime \
decimal declare_datafile decrement deferred_view define delegate delete delete_db delete_field delete_index direct_input direct_output diskfree \
do dword else entry_item erasefile error external_function field field_map file_exist file_field fill_field find float for forward from function_return \
get get_argument_size get_attribute get_channel_position get_channel_size get_current_directory get_current_input_channel \
get_current_output_channel get_current_user_count get_date_attribute get_directory get_environment get_field_value get_fieldnumber \
get_file_mod_time get_file_path get_filenumber get_licensed_max_users get_stricteval get_transaction_retry get_windows_directory getaddress \
getbuff getbuff_string getdskinfo global_variable handle if ifnot import_class_protocol include_resource increment indicate indicator integer is item \
left length load_def load_driver local lock login logout ltrim make_directory make_file make_temp_file mid move moveint movenum movestr \
newrecord number of on_item on_key open overstrike output output_aux_file output_wrap pad playwave pointer pos procedure_return property \
public put read read_block read_hex readln real reg_key_enum reg_integer_value_enum reg_string_value_enum register_function register_object \
register_procedure relate remove_directory renamefile repeat report_breaks replace replaces reread returns right rowid rtrim runprogram save \
saverecord self send set set_argument_size set_attribute set_channel_position set_date_attribute set_directory set_field_value set_file_mod_time set_relate \
set_stricteval set_transaction_retry shift_state short show showln sleep sort start_ui string structure_abort structure_copy structure_end structure_start subtract \
sysdate sysdate4 time timespan to trim ubigint uchar uinteger unload_driver unlock use ushort valid_drive valuetreedeserializeparameter \
valuetreeserializeparameter variant vconstrain version_information vfind virtual_key webget webpublishfunction webpublishprocedure webset \
websetresponsive write write_hex writeln xmlhandle zerofile zerostring zerotype #check #error #include #pop #push #replace #set #spop #spush

keywords.1=name:Scope open::begin class function procedure object repeat for while begin_constraints procedure_section begin_row \
item_list enumeration_list enum_list #ifdef #ifdef #else cd_popup_object #command begin_transaction repeat #if for_all dfcreate_menu \
dfcreate_menu #if type #ifsame struct

keywords.2=name:Scope close::end end_class end_function end_procedure end_object until loop loop end_constraints end_procedure end_row \
end_item_list end_enumeration_list end_enum_list #else #endif #endif cd_end_object #endcommand end_transaction until #endif end_for_all \
end_pull_down end_menu #else end_type #endif end_struct

keywords.3=name:Operators::+ - = * / < > <= >= <> Or And In Contains Eq Ne Lt Gt Ge Le Not Iand Ior found seqeof ~ ^ True False err lasterr

style.0=name:White space,fore:clGray
style.1=name:Identifier,fore:clWindowText
style.2=name:Metatag: { ... },fore:clGreen
style.3=name:DataFlex image: \* ... *\,fore:clGreen
style.4=name:Line Comment //,fore:clGreen
style.5=name:Preprocessor: {$ ... },fore:#7F7F00
style.6=name:Preprocessor2: (*$ ... *),fore:#7F7F00
style.7=name:Number,fore:clTeal
style.8=name:Hex Number,fore:clTeal
style.9=name:Keyword,fore:clNavy,bold
style.10=name:Strings,fore:#007F00,back:#E0FFE0
style.11=name:EOL if string is not closed,fore:clWhite,back:#E0C0E0
style.12=name:Scope word,fore:clNavy,bold
style.13=name:Operators,fore:clWindowText
style.14=name:ICode,fore:#804080