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