<SyntaxLanguage Key="PHP" LanguageDefinitionVersion="4.0" Secure="True" xmlns="http://ActiproSoftware/SyntaxEditor/4.0/LanguageDefinition">

	<!-- String Properties -->
	<Properties>
		<Property Key="Creator" Value="Actipro Software LLC" />
		<Property Key="Copyright" Value="Copyright (c) 2001-2006 Actipro Software LLC.  All rights reserved." />
	</Properties>

	<!-- Highlighting Styles -->	
	<Styles>
		<Style Key="ReservedWordStyle" ForeColor="Blue" />
		<Style Key="FunctionStyle" ForeColor="Teal" />
		<Style Key="ConstantStyle" ForeColor="Fuchsia" />
		<Style Key="VariableStyle" ForeColor="Purple" />
		<Style Key="OperatorStyle" ForeColor="Black" />
		<Style Key="NumberStyle" ForeColor="Black" />
		<Style Key="StringDelimiterStyle" ForeColor="Black" />
		<Style Key="StringDefaultStyle" ForeColor="Black" />
		<Style Key="CommentDelimiterStyle" ForeColor="Green" />
		<Style Key="CommentDefaultStyle" ForeColor="Green" />
	</Styles>
	
	<!-- States -->
	<States>
		<!-- Code -->
		<State Key="DefaultState">
			<!-- Patterns Groups -->
			<PatternGroups>
				<!-- Whitespace -->
				<RegexPatternGroup TokenKey="WhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<!-- Line Terminators -->
				<RegexPatternGroup TokenKey="LineTerminatorToken" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />
				<!-- Brackets -->
				<ExplicitPatternGroup Key="OpenParenthesisPatternGroup" TokenKey="OpenParenthesisToken" PatternValue="(" EndBracket="CloseParenthesisPatternGroup" />
				<ExplicitPatternGroup Key="CloseParenthesisPatternGroup" TokenKey="CloseParenthesisToken" PatternValue=")" StartBracket="OpenParenthesisPatternGroup" />
				<ExplicitPatternGroup Key="OpenCurlyBracePatternGroup" TokenKey="OpenCurlyBraceToken" PatternValue="{" EndBracket="CloseCurlyBracePatternGroup" />
				<ExplicitPatternGroup Key="CloseCurlyBracePatternGroup" TokenKey="CloseCurlyBraceToken" PatternValue="}" StartBracket="OpenCurlyBracePatternGroup" />
				<ExplicitPatternGroup Key="OpenSquareBracePatternGroup" TokenKey="OpenSquareBraceToken" PatternValue="[" EndBracket="CloseSquareBracePatternGroup" />
				<ExplicitPatternGroup Key="CloseSquareBracePatternGroup" TokenKey="CloseSquareBraceToken" PatternValue="]" StartBracket="OpenSquareBracePatternGroup" />
				<!-- Reserved Words -->
				<ExplicitPatternGroup TokenKey="ReservedWordToken" Style="ReservedWordStyle" LookAhead="{NonWordMacro}|\z">
					<ExplicitPatterns>
						abstract array as break case catch cfunction class clone const continue declare default die
						do done echo else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval exception exit 
						extends final for foreach function global if implements include include_once interface isset
						list new old_function php_user_filter print public private protected require require_once
						return static switch throw try unset use var while					
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Primative Types -->
				<ExplicitPatternGroup TokenKey="PrimativeTypeToken" Style="ReservedWordStyle" LookAhead="{NonWordMacro}|\z">
					<ExplicitPatterns>
						boolean callback double float integer mixed number object resource string			
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Null -->
				<ExplicitPatternGroup TokenKey="NullToken" Style="ReservedWordStyle" PatternValue="NULL" LookAhead="{NonWordMacro}|\z" />
				<!-- Booleans -->
				<ExplicitPatternGroup TokenKey="BooleanToken" Style="ReservedWordStyle" LookAhead="{NonWordMacro}|\z">
					<ExplicitPatterns>
						TRUE FALSE 
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Functions -->
				<ExplicitPatternGroup TokenKey="FunctionToken" Style="FunctionStyle" LookAhead="{NonWordMacro}|\z">
					<ExplicitPatterns>
						abs acos addcslashes addslashes apache_get_modules apache_get_version apache_getenv apache_lookup_uri 
						apache_note apache_request_headers apache_response_headers apache_setenv array_change_key_case 
						array_chunk array_combine array_count_values array_diff array_diff_assoc array_diff_uassoc array_fill 
						array_filter array_flip array_intersect array_intersect_assoc array_intersect_uassoc array_key_exists 
						array_keys array_map array_merge array_merge_recursive array_multisort array_pad array_pop array_push 
						array_rand array_reduce array_reverse array_search array_shift array_slice array_splice array_sum array_udiff 
						array_udiff_assoc array_udiff_uassoc array_uintersect array_uintersect_assoc array_uintersect_uassoc 
						array_unique array_unshift array_values array_walk array_walk_recursive arsort asin asort assert assert_options 
						atan atan2 base_convert base64_decode base64_encode basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod 
						bcscale bcsqrt bcsub bin2hex bindec cal_days_in_month cal_from_jd cal_info cal_to_jd call_user_func 
						call_user_func_array call_user_method call_user_method_array ceil chdir checkdate chgrp chmod chop chown chr 
						chunk_split class_exists class_implements class_parents clearstatcache closedir closelog com_create_guid 
						com_event_sink com_get_active_object com_load_typelib com_message_pump com_print_typeinfo compact connection_aborted 
						connection_status constant convert_cyr_string convert_uudecode convert_uuencode copy cos cosh count count_chars 
						crc32 create_function crypt ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_graph ctype_lower ctype_print 
						ctype_punct ctype_space ctype_upper ctype_xdigit current date date_sunrise date_sunset debug_backtrace 
						debug_print_backtrace debug_zval_dump decbin dechex decoct define define_syslog_variables defined deg2rad dir dirname 
						disk_free_space disk_total_space diskfreespace dl dom_import_simplexml doubleval each easter_date easter_days end 
						ereg ereg_replace eregi eregi_replace error_log error_reporting escapeshellarg escapeshellcmd exec exp explode 
						extension_loaded extract ezmlm_hash fclose feof fflush fgetc fgetcsv fgets fgetss file file_exists file_get_contents 
						file_put_contents fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype floatval 
						flock floor flush fmod fopen fpassthru fprintf fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftp_alloc 
						ftp_cdup ftp_chdir ftp_chmod ftp_close ftp_connect ftp_delete ftp_exec ftp_fget ftp_fput ftp_get ftp_get_option 
						ftp_login ftp_mdtm ftp_mkdir ftp_nb_continue ftp_nb_fget ftp_nb_fput ftp_nb_get ftp_nb_put ftp_nlist ftp_pasv ftp_put 
						ftp_pwd ftp_quit ftp_raw ftp_rawlist ftp_rename ftp_rmdir ftp_set_option ftp_site ftp_size ftp_systype ftruncate 
						func_get_arg func_get_args func_num_args function_exists fwrite get_browser get_cfg_var get_class get_class_methods 
						get_class_vars get_current_user get_declared_classes get_declared_interfaces get_defined_constants get_defined_functions 
						get_defined_vars get_extension_funcs get_headers get_html_translation_table get_include_path get_included_files 
						get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime get_meta_tags get_object_vars get_parent_class 
						get_required_files get_resource_type getallheaders getcwd getdate getenv gethostbyaddr gethostbyname gethostbynamel 
						getimagesize getlastmod getmygid getmyinode getmypid getmyuid getprotobyname getprotobynumber getrandmax getservbyname 
						getservbyport gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdeflate gzencode 
						gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell gzuncompress 
						gzwrite header headers_list headers_sent hebrev hebrevc hexdec highlight_file highlight_string html_entity_decode 
						htmlentities htmlspecialchars http_build_query iconv iconv_get_encoding iconv_mime_decode iconv_mime_decode_headers 
						iconv_mime_encode iconv_set_encoding iconv_strlen iconv_strpos iconv_strrpos iconv_substr idate ignore_user_abort 
						image_type_to_mime_type imap_8bit imap_alerts imap_append imap_base64 imap_binary imap_body imap_bodystruct 
						imap_check imap_clearflag_full imap_close imap_create imap_createmailbox imap_delete imap_deletemailbox imap_errors 
						imap_expunge imap_fetch_overview imap_fetchbody imap_fetchheader imap_fetchstructure imap_fetchtext imap_get_quota 
						imap_get_quotaroot imap_getacl imap_getmailboxes imap_getsubscribed imap_header imap_headerinfo imap_headers 
						imap_last_error imap_list imap_listmailbox imap_listsubscribed imap_lsub imap_mail imap_mail_compose imap_mail_copy 
						imap_mail_move imap_mailboxmsginfo imap_mime_header_decode imap_msgno imap_num_msg imap_num_recent imap_open 
						imap_ping imap_qprint imap_rename imap_renamemailbox imap_reopen imap_rfc822_parse_adrlist imap_rfc822_parse_headers 
						imap_rfc822_write_address imap_scan imap_scanmailbox imap_search imap_set_quota imap_setacl imap_setflag_full 
						imap_sort imap_status imap_subscribe imap_thread imap_timeout imap_uid imap_undelete imap_unsubscribe imap_utf7_decode 
						imap_utf7_encode imap_utf8 implode import_request_variables in_array ini_alter ini_get ini_get_all ini_restore 
						ini_set interface_exists intval ip2long iptcembed iptcparse is_a is_array is_bool is_callable is_dir is_double 
						is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric 
						is_object is_readable is_real is_resource is_scalar is_string is_subclass_of is_uploaded_file is_writable is_writeable 
						jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join juliantojd key 
						key_exists krsort ksort lcg_value levenshtein libxml_set_streams_context localeconv localtime log log10 long2ip lstat 
						ltrim magic_quotes_runtime mail max md5 md5_file metaphone method_exists microtime min mkdir mktime move_uploaded_file 
						mt_getrandmax mt_rand mt_srand mysql mysql_affected_rows mysql_client_encoding mysql_close mysql_connect mysql_data_seek 
						mysql_db_name mysql_db_query mysql_dbname mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc 
						mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name 
						mysql_field_seek mysql_field_table mysql_field_type mysql_fieldflags mysql_fieldlen mysql_fieldname mysql_fieldtable 
						mysql_fieldtype mysql_free_result mysql_freeresult mysql_get_client_info mysql_get_host_info mysql_get_proto_info 
						mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables 
						mysql_listdbs mysql_listfields mysql_listtables mysql_num_fields mysql_num_rows mysql_numfields mysql_numrows mysql_pconnect 
						mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_selectdb mysql_stat mysql_table_name 
						mysql_tablename mysql_thread_id mysql_unbuffered_query mysqli_affected_rows mysqli_autocommit mysqli_bind_param 
						mysqli_bind_result mysqli_change_user mysqli_character_set_name mysqli_client_encoding mysqli_close mysqli_commit 
						mysqli_connect mysqli_connect_errno mysqli_connect_error mysqli_data_seek mysqli_debug mysqli_disable_reads_from_master 
						mysqli_disable_rpl_parse mysqli_dump_debug_info mysqli_enable_reads_from_master mysqli_enable_rpl_parse mysqli_errno 
						mysqli_error mysqli_escape_string mysqli_execute mysqli_fetch mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field 
						mysqli_fetch_field_direct mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count 
						mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_client_info mysqli_get_client_version mysqli_get_host_info 
						mysqli_get_metadata mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init 
						mysqli_insert_id mysqli_kill mysqli_master_query mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields 
						mysqli_num_rows mysqli_options mysqli_param_count mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect 
						mysqli_real_escape_string mysqli_real_query mysqli_report mysqli_rollback mysqli_rpl_parse_enabled mysqli_rpl_probe 
						mysqli_rpl_query_type mysqli_select_db mysqli_send_long_data mysqli_send_query mysqli_set_local_infile_default 
						mysqli_set_local_infile_handler mysqli_set_opt mysqli_slave_query mysqli_sqlstate mysqli_ssl_set mysqli_stat 
						mysqli_stmt_affected_rows mysqli_stmt_attr_get mysqli_stmt_attr_set mysqli_stmt_bind_param mysqli_stmt_bind_result 
						mysqli_stmt_close mysqli_stmt_data_seek mysqli_stmt_errno mysqli_stmt_error mysqli_stmt_execute mysqli_stmt_fetch 
						mysqli_stmt_field_count mysqli_stmt_free_result mysqli_stmt_init mysqli_stmt_insert_id mysqli_stmt_num_rows 
						mysqli_stmt_param_count mysqli_stmt_prepare mysqli_stmt_reset mysqli_stmt_result_metadata mysqli_stmt_send_long_data 
						mysqli_stmt_sqlstate mysqli_stmt_store_result mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result 
						mysqli_warning_count natcasesort natsort next nl2br number_format ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean 
						ob_get_contents ob_get_flush ob_get_length ob_get_level ob_get_status ob_gzhandler ob_iconv_handler ob_implicit_flush 
						ob_list_handlers ob_start octdec odbc_autocommit odbc_binmode odbc_close odbc_close_all odbc_columnprivileges odbc_columns 
						odbc_commit odbc_connect odbc_cursor odbc_data_source odbc_do odbc_error odbc_errormsg odbc_exec odbc_execute 
						odbc_fetch_array odbc_fetch_into odbc_fetch_object odbc_fetch_row odbc_field_len odbc_field_name odbc_field_num 
						odbc_field_precision odbc_field_scale odbc_field_type odbc_foreignkeys odbc_free_result odbc_gettypeinfo odbc_longreadlen 
						odbc_next_result odbc_num_fields odbc_num_rows odbc_pconnect odbc_prepare odbc_primarykeys odbc_procedurecolumns 
						odbc_procedures odbc_result odbc_result_all odbc_rollback odbc_setoption odbc_specialcolumns odbc_statistics 
						odbc_tableprivileges odbc_tables opendir openlog ord output_add_rewrite_var output_reset_rewrite_vars pack parse_ini_file 
						parse_str parse_url passthru pathinfo pclose pfsockopen php_check_syntax php_egg_logo_guid php_ini_scanned_files 
						php_logo_guid php_real_logo_guid php_sapi_name php_strip_whitespace php_uname phpcredits phpinfo phpversion pi popen 
						pos pow preg_grep preg_match preg_match_all preg_quote preg_replace preg_replace_callback preg_split prev print_r printf 
						proc_close proc_get_status proc_open proc_terminate putenv quoted_printable_decode quotemeta rad2deg rand range rawurldecode 
						rawurlencode readdir readfile readgzfile realpath register_shutdown_function register_tick_function rename reset 
						restore_error_handler restore_exception_handler restore_include_path rewind rewinddir rmdir round rsort rtrim scandir 
						serialize session_cache_expire session_cache_limiter session_commit session_decode session_destroy session_encode 
						session_get_cookie_params session_id session_is_registered session_module_name session_name session_regenerate_id 
						session_register session_save_path session_set_cookie_params session_set_save_handler session_start session_unregister 
						session_unset session_write_close set_error_handler set_exception_handler set_file_buffer set_include_path 
						set_magic_quotes_runtime set_socket_blocking set_time_limit setcookie setlocale setrawcookie settype sha1 sha1_file 
						shell_exec show_source shuffle similar_text simplexml_import_dom simplexml_load_file simplexml_load_string sin sinh sizeof 
						sleep socket_get_status socket_set_blocking socket_set_timeout sort soundex spl_classes split spliti sprintf sql_regcase 
						sqlite_array_query sqlite_busy_timeout sqlite_changes sqlite_close sqlite_column sqlite_create_aggregate 
						sqlite_create_function sqlite_current sqlite_error_string sqlite_escape_string sqlite_exec sqlite_factory sqlite_fetch_all 
						sqlite_fetch_array sqlite_fetch_column_types sqlite_fetch_object sqlite_fetch_single sqlite_fetch_string sqlite_field_name 
						sqlite_has_more sqlite_has_prev sqlite_last_error sqlite_last_insert_rowid sqlite_libencoding sqlite_libversion sqlite_next 
						sqlite_num_fields sqlite_num_rows sqlite_open sqlite_popen sqlite_prev sqlite_query sqlite_rewind sqlite_seek 
						sqlite_single_query sqlite_udf_decode_binary sqlite_udf_encode_binary sqlite_unbuffered_query sqlite_valid sqrt srand 
						sscanf stat str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count strcasecmp strchr 
						strcmp strcoll strcspn stream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend 
						stream_context_create stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream 
						stream_filter_append stream_filter_prepend stream_filter_register stream_get_contents stream_get_filters stream_get_line 
						stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_select stream_set_blocking 
						stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_get_name 
						stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_wrapper_register strftime strip_tags stripcslashes 
						stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strrchr strrev strripos strrpos 
						strspn strstr strtok strtolower strtotime strtoupper strtr strval substr substr_compare substr_count substr_replace syslog 
						system tan tanh tempnam time tmpfile token_get_all token_name touch trigger_error trim uasort ucfirst ucwords uksort umask 
						uniqid unixtojd unlink unpack unregister_tick_function unserialize urldecode urlencode user_error usleep usort utf8_decode 
						utf8_encode var_dump var_export variant_abs variant_add variant_and variant_cast variant_cat variant_cmp 
						variant_date_from_timestamp variant_date_to_timestamp variant_div variant_eqv variant_fix variant_get_type 
						variant_idiv variant_imp variant_int variant_mod variant_mul variant_neg variant_not variant_or variant_pow variant_round 
						variant_set variant_set_type variant_sub variant_xor version_compare vfprintf virtual vprintf vsprintf wddx_add_vars 
						wddx_deserialize wddx_packet_end wddx_packet_start wddx_serialize_value wddx_serialize_vars wordwrap xml_error_string 
						xml_get_current_byte_index xml_get_current_column_number xml_get_current_line_number xml_get_error_code xml_parse 
						xml_parse_into_struct xml_parser_create xml_parser_create_ns xml_parser_free xml_parser_get_option xml_parser_set_option 
						xml_set_character_data_handler xml_set_default_handler xml_set_element_handler xml_set_end_namespace_decl_handler 
						xml_set_external_entity_ref_handler xml_set_notation_decl_handler xml_set_object xml_set_processing_instruction_handler 
						xml_set_start_namespace_decl_handler xml_set_unparsed_entity_decl_handler xmlrpc_decode xmlrpc_decode_request xmlrpc_encode 
						xmlrpc_encode_request xmlrpc_get_type xmlrpc_is_fault xmlrpc_parse_method_descriptions xmlrpc_server_add_introspection_data 
						xmlrpc_server_call_method xmlrpc_server_create xmlrpc_server_destroy xmlrpc_server_register_introspection_callback 
						xmlrpc_server_register_method xmlrpc_set_type zend_logo_guid zend_version zlib_get_coding_type 					
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Constants -->
				<ExplicitPatternGroup TokenKey="ConstantToken" Style="ConstantStyle" LookAhead="{NonWordMacro}|\z">
					<ExplicitPatterns>
						__CLASS__ __FILE__ __FUNCTION__ __LINE__ __METHOD__
						PHP_VERSION PHP_OS PHP_EOL
						DEFAULT_INCLUDE_PATH PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_BINDIR
						PHP_LIBDIR PHP_DATADIR PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_OUTPUT_HANDLER_START 
						PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR 
						E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_ALL E_STRICT						
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Variables -->
				<RegexPatternGroup TokenKey="VariableToken" PatternValue="\$ (_ | {AlphaMacro})({WordMacro})*" Style="VariableStyle" />
				<!-- Identifier -->
				<RegexPatternGroup TokenKey="IdentifierToken" PatternValue="(_ | {AlphaMacro})({WordMacro})*" />
				<!-- Operators -->
				<ExplicitPatternGroup TokenKey="OperatorToken" Style="OperatorStyle">
					<ExplicitPatterns>
						=== !==
						== !=
						= !
						++ -- 
						+= -= *= /= %= .=
						+ - * / % .
						&amp;&amp; ||
						&amp;= |= ^= 
						&amp; | ~ ^ 
						&lt;&lt;= &gt;&gt;=
						&lt;&lt; &gt;&gt; 
						&lt;= &lt; &gt;= &gt;  
						? : ,
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<ExplicitPatternGroup TokenKey="OperatorToken" Style="OperatorStyle" LookAhead="{NonWordMacro}|\z">
					<ExplicitPatterns>
						and or xor
					</ExplicitPatterns>
				</ExplicitPatternGroup>
				<!-- Numbers -->
				<RegexPatternGroup TokenKey="RealNumberToken" Style="NumberStyle" LookAhead="{NonWordMacro}|\z">
					<RegexPattern Value="{DigitMacro}* \. {DigitMacro}+ ([Ee] [\+\-]? {DigitMacro}+)?" />
					<RegexPattern Value="{DigitMacro}+ [Ee] [\+\-]? {DigitMacro}+" />
				</RegexPatternGroup>
				<RegexPatternGroup TokenKey="IntegerNumberToken" Style="NumberStyle" PatternValue="{DigitMacro}+" LookAhead="{NonWordMacro}|\z" />
				<RegexPatternGroup TokenKey="HexIntegerNumberToken" Style="NumberStyle" PatternValue="0 [xX] {HexDigitMacro}+" LookAhead="{NonWordMacro}|\z" />
			</PatternGroups>
			<!-- Child States -->
			<ChildStates>
				<ChildState Key="SingleQuoteStringState" />
				<ChildState Key="DoubleQuoteStringState" />
				<ChildState Key="MultiLineCommentState" />
				<ChildState Key="CommentState" />
			</ChildStates>
		</State>

		<!-- Single Quote Strings -->
		<State Key="SingleQuoteStringState" TokenKey="SingleQuoteStringDefaultToken" Style="StringDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="SingleQuoteStringStartToken" Style="StringDelimiterStyle" PatternValue="'" />
					<ExplicitPatternGroup Type="EndScope" TokenKey="SingleQuoteStringEndToken" Style="StringDelimiterStyle" PatternValue="'" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<RegexPatternGroup TokenKey="SingleQuoteStringEscapedCharacterToken" PatternValue="\\." />
				<RegexPatternGroup TokenKey="SingleQuoteStringWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="SingleQuoteStringWordToken" PatternValue="\w+" />
				<RegexPatternGroup TokenKey="SingleQuoteStringDefaultToken" PatternValue="[^']" />
			</PatternGroups>
		</State>
		
		<!-- Double Quote Strings -->
		<State Key="DoubleQuoteStringState" TokenKey="DoubleQuoteStringDefaultToken" Style="StringDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="DoubleQuoteStringStartToken" Style="StringDelimiterStyle" PatternValue="&quot;" />
					<ExplicitPatternGroup Type="EndScope" TokenKey="DoubleQuoteStringEndToken" Style="StringDelimiterStyle" PatternValue="&quot;" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<RegexPatternGroup TokenKey="DoubleQuoteStringVariableToken" PatternValue="\$ (_ | {AlphaMacro})({WordMacro})*" Style="VariableStyle" />
				<RegexPatternGroup TokenKey="DoubleQuoteStringEscapedCharacterToken" PatternValue="\\." />
				<RegexPatternGroup TokenKey="DoubleQuoteStringWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="DoubleQuoteStringWordToken" PatternValue="\w+" />
				<RegexPatternGroup TokenKey="DoubleQuoteStringDefaultToken" PatternValue="[^\&quot;\$]" />
			</PatternGroups>
		</State>
		
		<!-- Comments -->
		<State Key="CommentState" TokenKey="CommentDefaultToken" Style="CommentDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="CommentStartToken" Style="CommentDelimiterStyle" PatternValue="//" />
					<RegexPatternGroup Type="EndScope" TokenKey="CommentEndToken" Style="CommentDelimiterStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />	
				</Scope>
				<Scope>
					<ExplicitPatternGroup Type="StartScope" TokenKey="CommentStartToken" Style="CommentDelimiterStyle" PatternValue="#" />
					<RegexPatternGroup Type="EndScope" TokenKey="CommentEndToken" Style="CommentDelimiterStyle" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>			 
				<RegexPatternGroup TokenKey="CommentWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="CommentLineTerminatorToken" PatternValue="{LineTerminatorMacro}" LookAhead="{LineTerminatorWhitespaceMacro}* // [^/]" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="CommentWordToken" PatternValue="\w+" />
				<RegexPatternGroup TokenKey="CommentDefaultToken" PatternValue="{NonLineTerminatorMacro}" />
			</PatternGroups>
		</State>
		
		<!-- MultiLine Comments -->
		<State Key="MultiLineCommentState" TokenKey="MultiLineCommentDefaultToken" Style="CommentDefaultStyle">
			<!-- Scopes -->
			<Scopes>
				<Scope BracketHighlight="True">
					<ExplicitPatternGroup Type="StartScope" TokenKey="MultiLineCommentStartToken" Style="CommentDelimiterStyle" PatternValue="/*" />
					<ExplicitPatternGroup Type="EndScope" TokenKey="MultiLineCommentEndToken" Style="CommentDelimiterStyle" PatternValue="*/" />	
				</Scope>
			</Scopes>
			<!-- Patterns Groups -->
			<PatternGroups>
				<RegexPatternGroup TokenKey="MultiLineCommentWhitespaceToken" PatternValue="{WhitespaceMacro}+" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="MultiLineCommentLineTerminatorToken" PatternValue="{LineTerminatorMacro}" IsWhitespace="True" />
				<RegexPatternGroup TokenKey="MultiLineCommentWordToken" PatternValue="\w+" />
				<RegexPatternGroup TokenKey="MultiLineCommentDefaultToken" PatternValue="[^*]" />
			</PatternGroups>
		</State>
	</States>
					
	<!-- Example Text -->
	<ExampleText>
		<![CDATA[
/* 
	Simple PHP code to greets players on a team.
 */
class GreetPlayers extends Team {
	// The team players
	private $players;
	
	// The constructor that takes an array of player names
	// and then greets everyone.
	public function __construct($players) {
		if (is_array($players)) {
			$this-&gt;players = $players;			
			$this-&gt;greetPlayers(); # Greet the players.
		}
	}
	
	// The method that greets all the players
	private function greetPlayers() {
		$i = 1;
		
		foreach ($this-&gt;players as $player) {
			if (is_string($name)) {
				echo "Hello " . $name . ", and welcome!";
				echo "You are player number " . $i;
				$i++;
			}
		}
	}
}
]]>
	</ExampleText>
		
</SyntaxLanguage>
