text/x-nim;application/x-nim
*.nim
#
\s\s
(?:[a-zA-Z]\w+)|(?:`[a-zA-Z]\w+`)
(?:[a-z]\w+)|(?:`[a-z]\w+`)
(?:[A-Z]\w+)|(?:`[A-Z]\w+`)
proc|func|method|iterator|converter|template|macro
\s+[\-+'"^]
\d|[A-Fa-f]
\d
[0-7]
[01]
0[xX]\%{hexdigit}(_?\%{hexdigit})*
0[ocC]\%{octdigit}(_?\%{octdigit})*
0[bB]\%{bindigit}(_?\%{bindigit})*
\%{decdigit}(_?\%{decdigit})*
\%{hex_lit}|\%{dec_lit}|\%{oct_lit}|\%{bin_lit}
[eE](\+|-)?\d(_?\d)*
\%{dec_lit}((\.(_?\%{decdigit})*\%{exponent}?)|\%{exponent})
(?<![\w\.])\%{int_lit}(?![\w\.])
(?<![\w\.])\%{int_lit}'?[iI]((8)|(16)|(32)|(64))(?![\w\.])
(?<![\w\.])\%{int_lit}'?[uU]((8)|(16)|(32)|(64))(?![\w\.])
(?<![\w\.])\%{float_lit}(?![\w\.])
[fF]32
([fF]64)|d|D
(?<![\w\.])(\%{hex_lit}'\%{float32_suffix})|(\%{float_lit}|\%{dec_lit}|\%{oct_lit}|\%{bin_lit})'?\%{float32_suffix}(?![\w\.])
(?<![\w\.])(\%{hex_lit}'\%{float64_suffix})|(\%{float_lit}|\%{dec_lit}|\%{oct_lit}|\%{bin_lit})'?\%{float64_suffix}(?![\w\.])
(?<![\$])\$(#|\d+|\w+)
(?i)
\\( # leading backslash
[\\'"nrclfeabvt] | # single escaped char
x[\da-f]{1,2} | # \xhh - character with hex value hh
\d+ # \ooo - character with decimal value ooo
)
(?i)'.'|'(\\[\\'"rclfeabvt]|\\x[\da-f]{1,2}|\d+)'
"
"
[rR]"
"
\"\"\"
\"\"\"
false
true
nil
{\..*\.}
\%{nidu}
(\t|__+|\b_|_\b)
(\s+$)|(^\s+$)
u?int(8|16|32|64)?
cu?int
cu?long
float(32|64)?
bool
char
enum
set
c?string
array
seq
varargs
tupel
object
void
auto
^(\s*)(type)$
^(?!((\%{1@start}\s\s)|(\s*$)))
[<>&\-=+*/@$~%|!?^.:\\]|\b(and|or|not|xor|shl|shr|div|mod|in|notin|is|isnot|of)\b
[[\](){}]
\%{nidl}(?=\%{cmd-call-space})
(\%{nidl}\.)?(\%{nidl})(?=(\s*(\[.*\]\s*)?\()|"|')
(\%{nidl}\.)?(\%{nidu})(?=(\s*\(|\.))
((:)|(object of|ptr|ref)) (\%{nidl}\.)?(\%{nidu})
(enum|tuple|object)
(\%{nid}\.)\%{nid}
addr
cast\[(\%{nid}\.)?(\%{nid})\]\((\%{nid}\.)?(\%{nid})\)
and
as
asm
atomic
bind
block
break
case
concept
const
continue
converter
defer
discard
distinct
div
do
elif
else
end
enum
except
export
finally
for
from
func
generic
if
import
in
include
interface
is
isnot
iterator
let
macro
method
mixin
mod
nil
not
notin
object
of
or
out
proc
ptr
raise
ref
return
shl
shr
static
template
try
tuple
type
using
var
when
while
with
without
xor
yield
expr
stmt
typed
untyped