blob: 691acdec9a8479d91a3cd5566e613383477269fc [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: SNOBOL4
3" Maintainer: Rafal Sulejman <rms@poczta.onet.pl>
Bram Moolenaard68071d2006-05-02 22:08:30 +00004" Site: http://rms.republika.pl/vim/syntax/snobol4.vim
Bram Moolenaar8c8de832008-06-24 22:58:06 +00005" Last change: 2006 may 10
Bram Moolenaard68071d2006-05-02 22:08:30 +00006" Changes:
Bram Moolenaar8c8de832008-06-24 22:58:06 +00007" - strict snobol4 mode (set snobol4_strict_mode to activate)
8" - incorrect HL of dots in strings corrected
9" - incorrect HL of dot-variables in parens corrected
10" - one character labels weren't displayed correctly.
Bram Moolenaard68071d2006-05-02 22:08:30 +000011" - nonexistent Snobol4 keywords displayed as errors.
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020013" quit when a syntax file was already loaded
14if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000015 finish
16endif
17
18syntax case ignore
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
Bram Moolenaar8c8de832008-06-24 22:58:06 +000020" Snobol4 keywords
21syn keyword snobol4Keyword any apply arb arbno arg array
22syn keyword snobol4Keyword break
23syn keyword snobol4Keyword char clear code collect convert copy
24syn keyword snobol4Keyword data datatype date define detach differ dump dupl
25syn keyword snobol4Keyword endfile eq eval
26syn keyword snobol4Keyword field
27syn keyword snobol4Keyword ge gt ident
28syn keyword snobol4Keyword input integer item
29syn keyword snobol4Keyword le len lgt local lpad lt
30syn keyword snobol4Keyword ne notany
31syn keyword snobol4Keyword opsyn output
32syn keyword snobol4Keyword pos prototype
33syn keyword snobol4Keyword remdr replace rpad rpos rtab rewind
34syn keyword snobol4Keyword size span stoptr
35syn keyword snobol4Keyword tab table time trace trim terminal
36syn keyword snobol4Keyword unload
37syn keyword snobol4Keyword value
38
39" CSNOBOL keywords
40syn keyword snobol4ExtKeyword breakx
41syn keyword snobol4ExtKeyword char chop
42syn keyword snobol4ExtKeyword date delete
43syn keyword snobol4ExtKeyword exp
44syn keyword snobol4ExtKeyword freeze function
45syn keyword snobol4ExtKeyword host
46syn keyword snobol4ExtKeyword io_findunit
47syn keyword snobol4ExtKeyword label lpad leq lge lle llt lne log
48syn keyword snobol4ExtKeyword ord
49syn keyword snobol4ExtKeyword reverse rpad rsort rename
50syn keyword snobol4ExtKeyword serv_listen sset set sort sqrt substr
51syn keyword snobol4ExtKeyword thaw
52syn keyword snobol4ExtKeyword vdiffer
53
54syn region snobol4String matchgroup=Quote start=+"+ end=+"+
55syn region snobol4String matchgroup=Quote start=+'+ end=+'+
56syn match snobol4BogusStatement "^-[^ ][^ ]*"
57syn match snobol4Statement "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)"
58syn match snobol4Constant /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1
59syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
Bram Moolenaard68071d2006-05-02 22:08:30 +000060syn match snobol4Number "\<\d*\(\.\d\d*\)*\>"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000061syn match snobol4BogusSysVar "&\w\{1,}"
Bram Moolenaard68071d2006-05-02 22:08:30 +000062syn match snobol4SysVar "&\(abort\|alphabet\|anchor\|arb\|bal\|case\|code\|dump\|errlimit\|errtext\|errtype\|fail\|fence\|fnclevel\|ftrace\|fullscan\|input\|lastno\|lcase\|maxlngth\|output\|parm\|rem\|rtntype\|stcount\|stfcount\|stlimit\|stno\|succeed\|trace\|trim\|ucase\)"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000063syn match snobol4ExtSysVar "&\(gtrace\|line\|file\|lastline\|lastfile\)"
64syn match snobol4Label "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*"
65syn match snobol4Comment "\(^\|;\)\([\*\|!;#].*$\)"
66
Bram Moolenaar071d4272004-06-13 20:20:40 +000067" Parens matching
68syn cluster snobol4ParenGroup contains=snobol4ParenError
69syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
70syn match snobol4ParenError display "[\])]"
71syn match snobol4ErrInParen display contained "[\]{}]\|<%\|%>"
72syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
Bram Moolenaard68071d2006-05-02 22:08:30 +000073syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
75" optional shell shebang line
Bram Moolenaar8c8de832008-06-24 22:58:06 +000076" syn match snobol4Comment "^\#\!.*$"
Bram Moolenaar071d4272004-06-13 20:20:40 +000077
78" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020079" Only when an item doesn't have highlighting yet
80command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000081
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020082HiLink snobol4Constant Constant
83HiLink snobol4Label Label
84HiLink snobol4Goto Repeat
85HiLink snobol4Conditional Conditional
86HiLink snobol4Repeat Repeat
87HiLink snobol4Number Number
88HiLink snobol4Error Error
89HiLink snobol4Statement PreProc
90HiLink snobol4BogusStatement snobol4Error
91HiLink snobol4String String
92HiLink snobol4Comment Comment
93HiLink snobol4Special Special
94HiLink snobol4Todo Todo
95HiLink snobol4Keyword Keyword
96HiLink snobol4Function Function
97HiLink snobol4MathsOperator Operator
98HiLink snobol4ParenError snobol4Error
99HiLink snobol4ErrInParen snobol4Error
100HiLink snobol4ErrInBracket snobol4Error
101HiLink snobol4SysVar Keyword
102HiLink snobol4BogusSysVar snobol4Error
103if exists("snobol4_strict_mode")
104HiLink snobol4ExtSysVar WarningMsg
105HiLink snobol4ExtKeyword WarningMsg
106else
107HiLink snobol4ExtSysVar snobol4SysVar
108HiLink snobol4ExtKeyword snobol4Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109endif
110
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200111delcommand HiLink
112
Bram Moolenaar071d4272004-06-13 20:20:40 +0000113let b:current_syntax = "snobol4"
114" vim: ts=8