<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

	<key>Header</key>
	<dict>
	    <key>Name</key>
		<string>Logtalk</string>
		<key>Extensions</key>
		<string>lgt,loader,config</string>
		<key>Valid Characters for Variables</key>
		<string>_0987654321abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
	</dict>
	
    <key>Styles</key>
	<array>

		<dict>
			<key>Name</key>
			<string>Variables</string>
			<key>Color</key>
			<array>
				<real>0.275</real>
				<real>0.275</real>
				<real>0.275</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
		      	<string>[^[:lower:]]([A-Z_][A-Za-z0-9_]*)[^[:alnum:]]</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Quoted Atoms and Strings</string>
			<key>Color</key>
			<array>
				<real>0.537</real>
				<real>0.075</real>
				<real>0.082</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>("(\\"|[^"])*")</string>
				<string>('(\\'|[^'])*')</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Directives</string>
			<key>Color</key>
			<array>
				<real>0.408</real>
				<real>0.220</real>
				<real>0.129</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>\:\-[[:space:]](object)\(</string>			
				<string>\:\-[[:space:]](end_object)\.</string>			
				<string>\:\-[[:space:]](protocol)\(</string>			
				<string>\:\-[[:space:]](end_protocol)\.</string>			
				<string>\:\-[[:space:]](category)\(</string>			
				<string>\:\-[[:space:]](end_category)\.</string>			
				<string>\:\-[[:space:]](initialization)\(</string>			
				<string>\:\-[[:space:]](info)\(</string>			
				<string>\:\-[[:space:]](mode)\(</string>			
				<string>\:\-[[:space:]](dynamic)\(</string>			
				<string>\:\-[[:space:]](dynamic)\.</string>			
				<string>\:\-[[:space:]](discontiguous)\(</string>			
				<string>\:\-[[:space:]](public)\(</string>			
				<string>\:\-[[:space:]](protected)\(</string>			
				<string>\:\-[[:space:]](private)\(</string>			
				<string>\:\-[[:space:]](metapredicate)\(</string>			
				<string>\:\-[[:space:]](op)\(</string>			
				<string>\:\-[[:space:]](calls)\(</string>			
				<string>\:\-[[:space:]](uses)\(</string>			
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Entity Relations</string>
			<key>Color</key>
			<array>
				<real>0.408</real>
				<real>0.220</real>
				<real>0.129</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>[^A-Za-z0-9](instantiates)\(</string>
				<string>[^A-Za-z0-9](specializes)\(</string>
				<string>[^A-Za-z0-9](extends)\(</string>
				<string>[^A-Za-z0-9](imports)\(</string>
				<string>[^A-Za-z0-9](implements)\(</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Message Sending Operators</string>
			<key>Color</key>
			<array>
				<real>0.000</real>
				<real>0.000</real>
				<real>1.000</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>::</string>			
				<string>\^\^</string>			
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>External Call</string>
			<key>Color</key>
			<array>
				<real>0.000</real>
				<real>0.000</real>
				<real>1.000</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
		      	<string>{</string>
                <string>}</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Control Constructs</string>
			<key>Color</key>
			<array>
				<real>0.463</real>
				<real>0.059</real>
				<real>0.298</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>[^A-Za-z0-9](call)\(</string>
				<string>[^A-Za-z0-9](catch)\(</string>
				<string>[^A-Za-z0-9](throw)\(</string>
			</array>
			<key>Plain Strings</key>
			<array>
				<string>true</string>
				<string>fail</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Built-in Methods</string>
			<key>Color</key>
			<array>
				<real>0.463</real>
				<real>0.059</real>
				<real>0.298</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>[^A-Za-z0-9](parameter)\(</string>
				<string>[^A-Za-z0-9](self)\(</string>
				<string>[^A-Za-z0-9](sender)\(</string>
				<string>[^A-Za-z0-9](this)\(</string>
				<string>[^A-Za-z0-9](current_predicate)\(</string>
				<string>[^A-Za-z0-9](predicate_property)\(</string>
				<string>[^A-Za-z0-9](abolish)\(</string>
				<string>[^A-Za-z0-9](asserta)\(</string>
				<string>[^A-Za-z0-9](assertz)\(</string>
				<string>[^A-Za-z0-9](clause)\(</string>
				<string>[^A-Za-z0-9](retract)\(</string>
				<string>[^A-Za-z0-9](retractall)\(</string>
				<string>[^A-Za-z0-9](bagof)\(</string>
				<string>[^A-Za-z0-9](findall)\(</string>
				<string>[^A-Za-z0-9](forall)\(</string>
				<string>[^A-Za-z0-9](setof)\(</string>
				<string>[^A-Za-z0-9](before)\(</string>
				<string>[^A-Za-z0-9](after)\(</string>
				<string>[^A-Za-z0-9](phrase)\(</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Built-in Predicates</string>
			<key>Color</key>
			<array>
				<real>0.463</real>
				<real>0.059</real>
				<real>0.298</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<string>[^A-Za-z0-9](current_object)\(</string>
				<string>[^A-Za-z0-9](current_protocol)\(</string>
				<string>[^A-Za-z0-9](current_category)\(</string>
				<string>[^A-Za-z0-9](create_object)\(</string>
				<string>[^A-Za-z0-9](create_protocol)\(</string>
				<string>[^A-Za-z0-9](create_category)\(</string>
				<string>[^A-Za-z0-9](object_property)\(</string>
				<string>[^A-Za-z0-9](protocol_property)\(</string>
				<string>[^A-Za-z0-9](category_property)\(</string>
				<string>[^A-Za-z0-9](abolish_object)\(</string>
				<string>[^A-Za-z0-9](abolish_protocol)\(</string>
				<string>[^A-Za-z0-9](abolish_category)\(</string>
				<string>[^A-Za-z0-9](extends_object)\(</string>
				<string>[^A-Za-z0-9](extends_protocol)\(</string>
				<string>[^A-Za-z0-9](implements_protocol)\(</string>
				<string>[^A-Za-z0-9](instantiates_class)\(</string>
				<string>[^A-Za-z0-9](specializes_class)\(</string>
				<string>[^A-Za-z0-9](imports_category)\(</string>
				<string>[^A-Za-z0-9](abolish_events)\(</string>
				<string>[^A-Za-z0-9](current_event)\(</string>
				<string>[^A-Za-z0-9](define_events)\(</string>
				<string>[^A-Za-z0-9](current_logtalk_flag)\(</string>
				<string>[^A-Za-z0-9](set_logtalk_flag)\(</string>
				<string>[^A-Za-z0-9](logtalk_compile)\(</string>
				<string>[^A-Za-z0-9](logtalk_load)\(</string>
				<string>[^A-Za-z0-9](forall)\(</string>
				<string>[^A-Za-z0-9](retractall)\(</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Other Built-in Predicates</string>
			<key>Color</key>
			<array>
				<real>0.463</real>
				<real>0.059</real>
				<real>0.298</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Regular Expressions</key>
			<array>
				<!-- Term unification -->
				<string>[[:space:]]+(=)[[:space:]]+</string>
				<string>[[:space:]]+(\\=)[[:space:]]+</string>
				<string>[^A-Za-z0-9](unify_with_occurs_check)\(</string>
				<!-- Term testing -->
				<string>[^A-Za-z0-9](var)\(</string>
				<string>[^A-Za-z0-9](atom)\(</string>
				<string>[^A-Za-z0-9](integer)\(</string>
				<string>[^A-Za-z0-9](float)\(</string>
				<string>[^A-Za-z0-9](atomic)\(</string>
				<string>[^A-Za-z0-9](compound)\(</string>
				<string>[^A-Za-z0-9](nonvar)\(</string>
				<string>[^A-Za-z0-9](number)\(</string>
				<!-- Term comparison -->
				<string>[[:space:]]+(==)[[:space:]]+</string>
				<string>[[:space:]]+(\\==)[[:space:]]+</string>
				<string>[[:space:]]+(@=&lt;)[[:space:]]+</string>
				<string>[[:space:]]+(@&lt;)[[:space:]]+</string>
				<string>[[:space:]]+(@&gt;=)[[:space:]]+</string>
				<string>[[:space:]]+(@&gt;)[[:space:]]+</string>
				<!-- Term creation and decomposition -->
				<string>[^A-Za-z0-9](functor)\(</string>
				<string>[^A-Za-z0-9](arg)\(</string>
				<string>[[:space:]]+(=\.\.)[[:space:]]+</string>
				<string>[^A-Za-z0-9](copy_term)\(</string>
				<!-- Arithemtic evaluation -->
				<string>[[:space:]]+(is)[[:space:]]+</string>
				<!-- Arithemtic comparison -->
				<string>[[:space:]]+(=:=)[[:space:]]+</string>
				<string>[[:space:]]+(=\=)[[:space:]]+</string>
				<string>[[:space:]]+(&lt;)[[:space:]]+</string>
				<string>[[:space:]]+(=&lt;)[[:space:]]+</string>
				<string>[[:space:]]+(&gt;)[[:space:]]+</string>
				<string>[[:space:]]+(&gt;=)[[:space:]]+</string>
				<!-- Evaluable functors -->
				<string>[[:space:]]+(\+)[[:space:]]+</string>
				<string>[[:space:]]+(\-)[[:space:]]+</string>
				<string>[[:space:]]+(\*)[[:space:]]+</string>
				<string>[[:space:]]+(//)[[:space:]]+</string>
				<string>[[:space:]]+(/)[[:space:]]+</string>
				<string>[[:space:]]+(rem)[[:space:]]+</string>
				<string>[[:space:]]+(mod)[[:space:]]+</string>
				<string>[^A-Za-z0-9](rem)\(</string>
				<string>[^A-Za-z0-9](mod)\(</string>
				<string>[^A-Za-z0-9](abs)\(</string>
				<string>[^A-Za-z0-9](sign)\(</string>
				<string>[^A-Za-z0-9](float_integer_part)\(</string>
				<string>[^A-Za-z0-9](float_fractional_part)\(</string>
				<string>[^A-Za-z0-9](float)\(</string>
				<string>[^A-Za-z0-9](floor)\(</string>
				<string>[^A-Za-z0-9](truncate)\(</string>
				<string>[^A-Za-z0-9](round)\(</string>
				<string>[^A-Za-z0-9](ceiling)\(</string>
				<!-- Other arithemtic functors -->
				<string>[[:space:]]+(\*\*)[[:space:]]+</string>
				<string>[^A-Za-z0-9](sin)\(</string>
				<string>[^A-Za-z0-9](cos)\(</string>
				<string>[^A-Za-z0-9](atan)\(</string>
				<string>[^A-Za-z0-9](exp)\(</string>
				<string>[^A-Za-z0-9](log)\(</string>
				<string>[^A-Za-z0-9](sqrt)\(</string>
				<!-- Bitwise functors -->
				<string>[[:space:]]+(&gt;&gt;)[[:space:]]+</string>
				<string>[[:space:]]+(&lt;&lt;)[[:space:]]+</string>
				<string>[[:space:]]+(/\\)[[:space:]]+</string>
				<string>[[:space:]]+(\\/)[[:space:]]+</string>
				<string>[[:space:]]+(\\)[[:space:]]+</string>
				<!-- Stream selection and control -->
				<string>[^A-Za-z0-9](current_input)\(</string>
				<string>[^A-Za-z0-9](current_output)\(</string>
				<string>[^A-Za-z0-9](set_input)\(</string>
				<string>[^A-Za-z0-9](set_output)\(</string>
				<string>[^A-Za-z0-9](open)\(</string>
				<string>[^A-Za-z0-9](close)\(</string>
				<string>[^A-Za-z0-9](flush_output)\(</string>
				<string>[^A-Za-z0-9](stream_property)\(</string>
				<string>[^A-Za-z0-9](at_end_of_stream)\(</string>
				<string>[^A-Za-z0-9](set_stream_position)\(</string>
				<!-- Character input/output -->
				<string>[^A-Za-z0-9](get_char)\(</string>
				<string>[^A-Za-z0-9](get_code)\(</string>
				<string>[^A-Za-z0-9](peek_char)\(</string>
				<string>[^A-Za-z0-9](peek_code)\(</string>
				<string>[^A-Za-z0-9](put_char)\(</string>
				<string>[^A-Za-z0-9](put_code)\(</string>
				<string>[^A-Za-z0-9](nl)\(</string>
				<!-- Byte input/output -->
				<string>[^A-Za-z0-9](get_byte)\(</string>
				<string>[^A-Za-z0-9](peek_byte)\(</string>
				<string>[^A-Za-z0-9](put_byte)\(</string>
				<!-- Term input/output -->
				<string>[^A-Za-z0-9](read_term)\(</string>
				<string>[^A-Za-z0-9](read)\(</string>
				<string>[^A-Za-z0-9](write_term)\(</string>
				<string>[^A-Za-z0-9](writeq)\(</string>
				<string>[^A-Za-z0-9](write)\(</string>
				<string>[^A-Za-z0-9](write_canonical)\(</string>
				<string>[^A-Za-z0-9](op)\(</string>
				<string>[^A-Za-z0-9](current_op)\(</string>
				<string>[^A-Za-z0-9](char_conversion)\(</string>
				<string>[^A-Za-z0-9](current_char_conversion)\(</string>
				<!-- Logic and control -->
				<string>(\\\+)[[:space:]]+</string>
				<string>[^A-Za-z0-9](once)\(</string>
				<!-- Atomic term processing -->
				<string>[^A-Za-z0-9](atom_length)\(</string>
				<string>[^A-Za-z0-9](atom_concat)\(</string>
				<string>[^A-Za-z0-9](sub_atom)\(</string>
				<string>[^A-Za-z0-9](atom_chars)\(</string>
				<string>[^A-Za-z0-9](atom_codes)\(</string>
				<string>[^A-Za-z0-9](char_code)\(</string>
				<string>[^A-Za-z0-9](number_chars)\(</string>
				<string>[^A-Za-z0-9](number_codes)\(</string>
				<!-- Implementation defined hooks functions -->
				<string>[^A-Za-z0-9](set_prolog_flag)\(</string>
				<string>[^A-Za-z0-9](current_prolog_flag)\(</string>
				<string>[^A-Za-z0-9](halt)\(</string>
			</array>
			<key>Plain Strings</key>
			<array>
				<!-- Stream selection and control -->
				<string>flush_output</string>
				<string>at_end_of_stream</string>
				<!-- Character input/output -->
				<string>nl</string>
				<!-- Logic and control -->
				<string>repeat</string>
				<!-- Implementation defined hooks functions -->
				<string>halt</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Numbers</string>
			<key>Color</key>
			<array>
				<real>0.000</real>
				<real>0.000</real>
				<real>0.404</real>
			</array>
			<key>Multiline</key>
			<false/>
			<key>Plain Strings</key>
			<array>
				<string>[0-9]+((\.[0-9]+)?([eE][-+][0-9]+)?)?</string>
				<string>0b[0-1]+</string>
				<string>0o[0-7]+</string>
				<string>0x[0-9a-fA-F]+</string>
				<string>0'[0-9a-zA-Z]</string>
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Single Line Comment</string>
			<key>Color</key>
			<array>
				<real>0.137</real>
				<real>0.431</real>
				<real>0.145</real>
			</array>
			<key>Multiline</key>
			<false/>
            <key>Comment</key>
			<true/>
			<key>Regular Expressions</key>
			<array>
				<string>%.*</string>			
			</array>
		</dict>

		<dict>
			<key>Name</key>
			<string>Block Comment</string>
			<key>Color</key>
			<array>
				<real>0.137</real>
				<real>0.431</real>
				<real>0.145</real>
			</array>
			<key>Multiline</key>
			<true/>
            <key>Comment</key>
			<true/>
			<key>Multiline Begin</key>
			<string>/*</string>
			<key>Multiline End</key>
			<string>*/</string>
		</dict>

	</array>

</dict>
</plist>
