blob: 11ce2e0059b3924940b2f2a4899b78d27d88d11e [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 Moolenaar40962ec2018-01-28 22:47:25 +01005" Last change: : Thu, 25 Jan 2018 14:21:24 +0100
Bram Moolenaard68071d2006-05-02 22:08:30 +00006" Changes:
Bram Moolenaar40962ec2018-01-28 22:47:25 +01007" - system variables updated for SNOBOL4 2.0+
Bram Moolenaar8c8de832008-06-24 22:58:06 +00008" - strict snobol4 mode (set snobol4_strict_mode to activate)
9" - incorrect HL of dots in strings corrected
10" - incorrect HL of dot-variables in parens corrected
11" - one character labels weren't displayed correctly.
Bram Moolenaard68071d2006-05-02 22:08:30 +000012" - nonexistent Snobol4 keywords displayed as errors.
Bram Moolenaar071d4272004-06-13 20:20:40 +000013
Bram Moolenaar40962ec2018-01-28 22:47:25 +010014" Quit when a syntax file was already loaded
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020015if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000016 finish
17endif
18
19syntax case ignore
Bram Moolenaar071d4272004-06-13 20:20:40 +000020
Bram Moolenaar8c8de832008-06-24 22:58:06 +000021" Snobol4 keywords
22syn keyword snobol4Keyword any apply arb arbno arg array
23syn keyword snobol4Keyword break
24syn keyword snobol4Keyword char clear code collect convert copy
25syn keyword snobol4Keyword data datatype date define detach differ dump dupl
26syn keyword snobol4Keyword endfile eq eval
27syn keyword snobol4Keyword field
28syn keyword snobol4Keyword ge gt ident
29syn keyword snobol4Keyword input integer item
30syn keyword snobol4Keyword le len lgt local lpad lt
31syn keyword snobol4Keyword ne notany
32syn keyword snobol4Keyword opsyn output
33syn keyword snobol4Keyword pos prototype
34syn keyword snobol4Keyword remdr replace rpad rpos rtab rewind
35syn keyword snobol4Keyword size span stoptr
36syn keyword snobol4Keyword tab table time trace trim terminal
37syn keyword snobol4Keyword unload
38syn keyword snobol4Keyword value
39
40" CSNOBOL keywords
41syn keyword snobol4ExtKeyword breakx
42syn keyword snobol4ExtKeyword char chop
43syn keyword snobol4ExtKeyword date delete
44syn keyword snobol4ExtKeyword exp
45syn keyword snobol4ExtKeyword freeze function
46syn keyword snobol4ExtKeyword host
47syn keyword snobol4ExtKeyword io_findunit
48syn keyword snobol4ExtKeyword label lpad leq lge lle llt lne log
49syn keyword snobol4ExtKeyword ord
50syn keyword snobol4ExtKeyword reverse rpad rsort rename
51syn keyword snobol4ExtKeyword serv_listen sset set sort sqrt substr
52syn keyword snobol4ExtKeyword thaw
53syn keyword snobol4ExtKeyword vdiffer
54
55syn region snobol4String matchgroup=Quote start=+"+ end=+"+
56syn region snobol4String matchgroup=Quote start=+'+ end=+'+
57syn match snobol4BogusStatement "^-[^ ][^ ]*"
58syn match snobol4Statement "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)"
59syn match snobol4Constant /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1
60syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
Bram Moolenaard68071d2006-05-02 22:08:30 +000061syn match snobol4Number "\<\d*\(\.\d\d*\)*\>"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000062syn match snobol4BogusSysVar "&\w\{1,}"
Bram Moolenaar40962ec2018-01-28 22:47:25 +010063syn match snobol4SysVar "&\<\(abort\|alphabet\|anchor\|arb\|bal\|case\|code\|digits\|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 +000064syn match snobol4ExtSysVar "&\(gtrace\|line\|file\|lastline\|lastfile\)"
65syn match snobol4Label "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*"
66syn match snobol4Comment "\(^\|;\)\([\*\|!;#].*$\)"
67
Bram Moolenaar071d4272004-06-13 20:20:40 +000068" Parens matching
69syn cluster snobol4ParenGroup contains=snobol4ParenError
70syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
71syn match snobol4ParenError display "[\])]"
72syn match snobol4ErrInParen display contained "[\]{}]\|<%\|%>"
73syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
Bram Moolenaard68071d2006-05-02 22:08:30 +000074syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000075
76" optional shell shebang line
Bram Moolenaar8c8de832008-06-24 22:58:06 +000077" syn match snobol4Comment "^\#\!.*$"
Bram Moolenaar071d4272004-06-13 20:20:40 +000078
79" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020080" Only when an item doesn't have highlighting yet
Bram Moolenaar071d4272004-06-13 20:20:40 +000081
Bram Moolenaarf37506f2016-08-31 22:22:10 +020082hi def link snobol4Constant Constant
83hi def link snobol4Label Label
84hi def link snobol4Goto Repeat
85hi def link snobol4Conditional Conditional
86hi def link snobol4Repeat Repeat
87hi def link snobol4Number Number
88hi def link snobol4Error Error
89hi def link snobol4Statement PreProc
90hi def link snobol4BogusStatement snobol4Error
91hi def link snobol4String String
92hi def link snobol4Comment Comment
93hi def link snobol4Special Special
94hi def link snobol4Todo Todo
95hi def link snobol4Keyword Keyword
96hi def link snobol4Function Function
97hi def link snobol4MathsOperator Operator
98hi def link snobol4ParenError snobol4Error
99hi def link snobol4ErrInParen snobol4Error
100hi def link snobol4ErrInBracket snobol4Error
101hi def link snobol4SysVar Keyword
102hi def link snobol4BogusSysVar snobol4Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200103if exists("snobol4_strict_mode")
Bram Moolenaar40962ec2018-01-28 22:47:25 +0100104 hi def link snobol4ExtSysVar WarningMsg
105 hi def link snobol4ExtKeyword WarningMsg
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200106else
Bram Moolenaar40962ec2018-01-28 22:47:25 +0100107 hi def link snobol4ExtSysVar snobol4SysVar
108 hi def link snobol4ExtKeyword snobol4Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109endif
110
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200111
Bram Moolenaar071d4272004-06-13 20:20:40 +0000112let b:current_syntax = "snobol4"
113" vim: ts=8