xref: /vim-8.2.3635/runtime/syntax/routeros.vim (revision 519cc559)
1*519cc559SBram Moolenaar" Vim syntax file
2*519cc559SBram Moolenaar" Language:        MikroTik RouterOS Script
3*519cc559SBram Moolenaar" Maintainer:      zainin <[email protected]>
4*519cc559SBram Moolenaar" Original Author: ndbjorne @ MikroTik forums
5*519cc559SBram Moolenaar" Last Change:     2021 Nov 14
6*519cc559SBram Moolenaar
7*519cc559SBram Moolenaar" quit when a syntax file was already loaded
8*519cc559SBram Moolenaarif exists("b:current_syntax")
9*519cc559SBram Moolenaar  finish
10*519cc559SBram Moolenaarendif
11*519cc559SBram Moolenaar
12*519cc559SBram Moolenaarsyn case ignore
13*519cc559SBram Moolenaar
14*519cc559SBram Moolenaarsyn iskeyword @,48-57,-
15*519cc559SBram Moolenaar
16*519cc559SBram Moolenaar" comments
17*519cc559SBram Moolenaarsyn match   routerosComment      /^\s*\zs#.*/
18*519cc559SBram Moolenaar
19*519cc559SBram Moolenaar" options submenus: /interface ether1 etc
20*519cc559SBram Moolenaarsyn match   routerosSubMenu      "\([a-z]\)\@<!/[a-zA-Z0-9-]*"
21*519cc559SBram Moolenaar
22*519cc559SBram Moolenaar" variables are matched by looking at strings ending with "=", e.g. var=
23*519cc559SBram Moolenaarsyn match   routerosVariable     "[a-zA-Z0-9-/]*\(=\)\@="
24*519cc559SBram Moolenaarsyn match   routerosVariable     "$[a-zA-Z0-9-]*"
25*519cc559SBram Moolenaar
26*519cc559SBram Moolenaar" colored for clarity
27*519cc559SBram Moolenaarsyn match   routerosDelimiter    "[,=]"
28*519cc559SBram Moolenaar" match slash in CIDR notation (1.2.3.4/24, 2001:db8::/48, ::1/128)
29*519cc559SBram Moolenaarsyn match   routerosDelimiter    "\(\x\|:\)\@<=\/\(\d\)\@="
30*519cc559SBram Moolenaar" dash in IP ranges
31*519cc559SBram Moolenaarsyn match   routerosDelimiter    "\(\x\|:\)\@<=-\(\x\|:\)\@="
32*519cc559SBram Moolenaar
33*519cc559SBram Moolenaar" match service names after "set", like in original routeros syntax
34*519cc559SBram Moolenaarsyn match   routerosService      "\(set\)\@<=\s\(api-ssl\|api\|dns\|ftp\|http\|https\|pim\|ntp\|smb\|ssh\|telnet\|winbox\|www\|www-ssl\)"
35*519cc559SBram Moolenaar
36*519cc559SBram Moolenaar" colors various interfaces
37*519cc559SBram Moolenaarsyn match   routerosInterface    "bridge\d\+\|ether\d\+\|wlan\d\+\|pppoe-\(out\|in\)\d\+"
38*519cc559SBram Moolenaar
39*519cc559SBram Moolenaarsyn keyword routerosBoolean      yes no true false
40*519cc559SBram Moolenaar
41*519cc559SBram Moolenaarsyn keyword routerosConditional  if
42*519cc559SBram Moolenaar
43*519cc559SBram Moolenaar" operators
44*519cc559SBram Moolenaarsyn match   routerosOperator     " \zs[-+*<>=!~^&.,]\ze "
45*519cc559SBram Moolenaarsyn match   routerosOperator     "[<>!]="
46*519cc559SBram Moolenaarsyn match   routerosOperator     "<<\|>>"
47*519cc559SBram Moolenaarsyn match   routerosOperator     "[+-]\d\@="
48*519cc559SBram Moolenaar
49*519cc559SBram Moolenaarsyn keyword routerosOperator     and or in
50*519cc559SBram Moolenaar
51*519cc559SBram Moolenaar" commands
52*519cc559SBram Moolenaarsyn keyword routerosCommands     beep delay put len typeof pick log time set find environment
53*519cc559SBram Moolenaarsyn keyword routerosCommands     terminal error parse resolve toarray tobool toid toip toip6
54*519cc559SBram Moolenaarsyn keyword routerosCommands     tonum tostr totime add remove enable disable where get print
55*519cc559SBram Moolenaarsyn keyword routerosCommands     export edit find append as-value brief detail count-only file
56*519cc559SBram Moolenaarsyn keyword routerosCommands     follow follow-only from interval terse value-list without-paging
57*519cc559SBram Moolenaarsyn keyword routerosCommands     return
58*519cc559SBram Moolenaar
59*519cc559SBram Moolenaar" variable types
60*519cc559SBram Moolenaarsyn keyword routerosType         global local
61*519cc559SBram Moolenaar
62*519cc559SBram Moolenaar" loop keywords
63*519cc559SBram Moolenaarsyn keyword routerosRepeat       do while for foreach
64*519cc559SBram Moolenaar
65*519cc559SBram Moolenaarsyn match   routerosSpecial      "[():[\]{|}]"
66*519cc559SBram Moolenaar
67*519cc559SBram Moolenaarsyn match   routerosLineContinuation "\\$"
68*519cc559SBram Moolenaar
69*519cc559SBram Moolenaarsyn match   routerosEscape       "\\["\\nrt$?_abfv]" contained display
70*519cc559SBram Moolenaarsyn match   routerosEscape       "\\\x\x"            contained display
71*519cc559SBram Moolenaar
72*519cc559SBram Moolenaarsyn region  routerosString       start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=routerosEscape,routerosLineContinuation
73*519cc559SBram Moolenaar
74*519cc559SBram Moolenaarhi link routerosComment              Comment
75*519cc559SBram Moolenaarhi link routerosSubMenu              Function
76*519cc559SBram Moolenaarhi link routerosVariable             Identifier
77*519cc559SBram Moolenaarhi link routerosDelimiter            Operator
78*519cc559SBram Moolenaarhi link routerosEscape               Special
79*519cc559SBram Moolenaarhi link routerosService              Type
80*519cc559SBram Moolenaarhi link routerosInterface            Type
81*519cc559SBram Moolenaarhi link routerosBoolean              Boolean
82*519cc559SBram Moolenaarhi link routerosConditional          Conditional
83*519cc559SBram Moolenaarhi link routerosOperator             Operator
84*519cc559SBram Moolenaarhi link routerosCommands             Operator
85*519cc559SBram Moolenaarhi link routerosType                 Type
86*519cc559SBram Moolenaarhi link routerosRepeat               Repeat
87*519cc559SBram Moolenaarhi link routerosSpecial              Delimiter
88*519cc559SBram Moolenaarhi link routerosString               String
89*519cc559SBram Moolenaarhi link routerosLineContinuation     Special
90*519cc559SBram Moolenaar
91*519cc559SBram Moolenaarlet b:current_syntax = "routeros"
92