joe/syntax/sieve.jsf
2024-10-16 10:58:52 +08:00

122 lines
1.9 KiB
Plaintext

# JOE syntax highlight file for Sieve
# by Christian Nicolai (http://mycrobase.de)
=Idle
=Ident
=Comment
=Constant
=String +Constant
=Number +Constant
=Boolean +Constant
=Escape
=StringEscape +Escape +String
=Keyword
=Statement +Keyword
=Conditional +Statement +Keyword
=Bad
=Brace
=TaggedArgument +Operator +Keyword
:idle Idle
* idle
"#" line_comment recolor=-1
"/" maybe_comment
"1-9" decimal recolor=-1
"\"" string recolor=-1
"[]{}" brace recolor=-1
":" maybe_tagged_arg
"a-zA-Z_" ident buffer
:brace Brace
* idle noeat
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:maybe_comment Idle
* idle noeat
"*" comment recolor=-2
:comment Comment comment
* comment
"BFHNTX" comment noeat call=comment_todo.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment comment
* comment noeat
"/" idle
:decimal Number
* idle noeat
"0-9" decimal
"KMG" decimal_suffix
:decimal_suffix Number
* idle noeat
:string String string
* string
"\"" idle
"\\" string_escape recolor=-1
:string_escape StringEscape string
* string_bad_escape recolor=-1
"\\" string
"\"" string
:string_bad_escape Bad
* string noeat
:maybe_tagged_arg Idle
* idle noeat
"a-zA-Z_" tagged_arg recolor=-2
:tagged_arg TaggedArgument
* idle noeat
"a-zA-Z0-9_" tagged_arg
:ident Ident
* idle noeat strings
# control"
"else" cond
"elsif" cond
"if" cond
"require" kw
"stop" kw
# commands
"discard" cmd
"fileinto" cmd
"keep" cmd
"redirect" cmd
# tests
"address" test
"allof" test
"anyof" test
"envelope" test
"exists" test
"false" bool
"header" test
"not" test
"size" test
"true" bool
done
"a-zA-Z0-9_" ident
:kw Keyword
* idle noeat
:cmd Statement
* idle noeat
:cond Conditional
* idle noeat
:bool Boolean
* idle noeat
:test Idle
* idle noeat