; Superedi syntax definitions for Logtalk (https://logtalk.org/)
; 
; Author:           Paulo Moura
; Last changed in:  July 31, 2020


C=1

[Syntax]
Namespace1 = 6
IgnoreCase = NO
InitKeyWordChars = 
KeyWordChars = a-zA-Z0-9_:^;*+,-./;<=>?@[\]^{|}
KeyWordLength =
BracketChars = 
OperatorChars = <=>?@[\]|
PreprocStart =
SyntaxStart =
SyntaxEnd =
HexPrefix = 0x
CommentStart = /*
CommentEnd = */
CommentStartAlt =
CommentEndAlt =
SingleComment = %
SingleCommentCol =
SingleCommentAlt =
SingleCommentColAlt =
SingleCommentEsc =
StringsSpanLines = Yes
StringStart = "
StringEnd = "
StringAlt = 
StringEsc = \
CharStart = '
CharEnd = '
CharEsc = \


[FunctionList]
Object = ^\s*:-\sobject[(]{[a-z][a-zA-Z0-9_]+}
Interface = ^\s*:-\sprotocol[(]{[a-z][a-zA-Z0-9_]+}
Item = ^\s*:-\scategory[(]{[a-z][a-zA-Z0-9_]+}
Method = ^\s*:-\spublic[(]{[a-z][a-zA-Z0-9_]+}


[Keywords 1]

; Logtalk message sending operators

^^
:-
.
,
;
::


; Logtalk category predicate direct call operator

:


; Logtalk external call
{
}


[Keywords 2]

; Logtalk conditional compilation directives
if
elif
else
endif

; Logtalk opening entity directives
object
protocol
category
module


; Logtalk closing entity directives
end_object
end_protocol
end_category

; Logtalk entity relations
complements
instantiates
specializes
extends
imports
implements


[Keywords 3]

; Logtalk directives
alias
built_in
encoding
export
reexport
initialization
info
mode
dynamic
discontiguous
multifile
coinductive
public
protected
private
meta_predicate
meta_non_terminal
op
calls
uses
use_module
synchronized
threaded


[Keywords 4]

; Logtalk built-in predicates
current_object
current_protocol
current_category
create_object
create_protocol
create_category
object_property
protocol_property
category_property
abolish_object
abolish_protocol
abolish_category
complements_object
conforms_to_protocol
extends_object
extends_protocol
extends_category
implements_protocol
instantiates_class
specializes_class
imports_category
abolish_events
current_event
define_events
current_logtalk_flag
set_logtalk_flag
create_logtalk_flag
logtalk_compile
logtalk_load
logtalk_library_path
logtalk_make
logtalk_make_target_action
threaded
threaded_call
threaded_once
threaded_ignore
threaded_exit
threaded_peek
threaded_cancel
threaded_wait
threaded_notify
threaded_engine
threaded_engine_create
threaded_engine_destroy
threaded_engine_self
threaded_engine_next
threaded_engine_next_reified
threaded_engine_yield
threaded_engine_post
threaded_engine_fetch
forall
retractall


[Keywords 5]

; Logtalk built-in methods
context
parameter
self
sender
this
current_predicate
predicate_property
abolish
asserta
assertz
clause
retract
retractall
bagof
findall
forall
setof
before
after
forward
expand_term
expand_goal
goal_expansion
term_expansion
phrase
instantiation_error
uninstantiation_error
type_error
domain_error
existence_error
permission_error
representation_error
evaluation_error
resource_error
syntax_error
system_error

; Mode operators
?
@

; Control constructs
true
fail
false
call
!
,
;
-->
->
catch
throw

; Term unification
=
unify_with_occurs_check
\=

; Term testing
var
atom
integer
float
atomic
callable
compound
ground
nonvar
number

; Term comparison
compare
@=<
==
\==
@<
@>
@>=

; Term creation and decomposition
functor
arg
=..
copy_term
numbervars
term_variables

; Predicate aliases
as

; Arithmetic evaluation
is

; Arithmetic comparison
=:=
=\=
<
=<
>
>=

; Sorting
keysort
sort

; Stream selection and control
current_input
current_output
set_input
set_output
open
close
flush_output
stream_property
at_end_of_stream
set_stream_position

; Character input/output
get_char
get_code
peek_char
peek_code
put_char
put_code
nl

; Byte input/output
get_byte
peek_byte
put_byte

; Term input/output
read_term
read
write_term
write
writeq
write_canonical
op
current_op
char_conversion
current_char_conversion

; Logic and control
\+
ignore
once
repeat

; Atomic term processing
atom_length
atom_concat
sub_atom
atom_chars
atom_codes
char_code
number_chars
number_codes

; Implementation defined hooks functions
set_prolog_flag
current_prolog_flag
halt

; Evaluable functors
+
-
*
//
/
max
min
rem
mod
abs
sign
float_integer_part
float_fractional_part
float
floor
truncate
round
ceiling

; Other arithmetic functors
**
sin
cos
acos
asin
atan
exp
log
sqrt

; Bitwise functors
>>
<<
/\
\/
\

; Logtalk end-of-clause
.

; Logtalk list operator
|


