blob: 07eb63dec78a6a3a04205d97982aa729ac014196 [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
13" For version 5.x: Clear all syntax items
14" For version 6.x: Quit when a syntax file was already loaded
15if version < 600
16 syntax clear
17elseif exists("b:current_syntax")
18 finish
19endif
20
21syntax case ignore
Bram Moolenaar071d4272004-06-13 20:20:40 +000022
Bram Moolenaar8c8de832008-06-24 22:58:06 +000023" Snobol4 keywords
24syn keyword snobol4Keyword any apply arb arbno arg array
25syn keyword snobol4Keyword break
26syn keyword snobol4Keyword char clear code collect convert copy
27syn keyword snobol4Keyword data datatype date define detach differ dump dupl
28syn keyword snobol4Keyword endfile eq eval
29syn keyword snobol4Keyword field
30syn keyword snobol4Keyword ge gt ident
31syn keyword snobol4Keyword input integer item
32syn keyword snobol4Keyword le len lgt local lpad lt
33syn keyword snobol4Keyword ne notany
34syn keyword snobol4Keyword opsyn output
35syn keyword snobol4Keyword pos prototype
36syn keyword snobol4Keyword remdr replace rpad rpos rtab rewind
37syn keyword snobol4Keyword size span stoptr
38syn keyword snobol4Keyword tab table time trace trim terminal
39syn keyword snobol4Keyword unload
40syn keyword snobol4Keyword value
41
42" CSNOBOL keywords
43syn keyword snobol4ExtKeyword breakx
44syn keyword snobol4ExtKeyword char chop
45syn keyword snobol4ExtKeyword date delete
46syn keyword snobol4ExtKeyword exp
47syn keyword snobol4ExtKeyword freeze function
48syn keyword snobol4ExtKeyword host
49syn keyword snobol4ExtKeyword io_findunit
50syn keyword snobol4ExtKeyword label lpad leq lge lle llt lne log
51syn keyword snobol4ExtKeyword ord
52syn keyword snobol4ExtKeyword reverse rpad rsort rename
53syn keyword snobol4ExtKeyword serv_listen sset set sort sqrt substr
54syn keyword snobol4ExtKeyword thaw
55syn keyword snobol4ExtKeyword vdiffer
56
57syn region snobol4String matchgroup=Quote start=+"+ end=+"+
58syn region snobol4String matchgroup=Quote start=+'+ end=+'+
59syn match snobol4BogusStatement "^-[^ ][^ ]*"
60syn match snobol4Statement "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)"
61syn match snobol4Constant /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1
62syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
Bram Moolenaard68071d2006-05-02 22:08:30 +000063syn match snobol4Number "\<\d*\(\.\d\d*\)*\>"
Bram Moolenaar8c8de832008-06-24 22:58:06 +000064syn match snobol4BogusSysVar "&\w\{1,}"
Bram Moolenaard68071d2006-05-02 22:08:30 +000065syn 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 +000066syn match snobol4ExtSysVar "&\(gtrace\|line\|file\|lastline\|lastfile\)"
67syn match snobol4Label "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*"
68syn match snobol4Comment "\(^\|;\)\([\*\|!;#].*$\)"
69
Bram Moolenaar071d4272004-06-13 20:20:40 +000070" Parens matching
71syn cluster snobol4ParenGroup contains=snobol4ParenError
72syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
73syn match snobol4ParenError display "[\])]"
74syn match snobol4ErrInParen display contained "[\]{}]\|<%\|%>"
75syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
Bram Moolenaard68071d2006-05-02 22:08:30 +000076syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000077
78" optional shell shebang line
Bram Moolenaar8c8de832008-06-24 22:58:06 +000079" syn match snobol4Comment "^\#\!.*$"
Bram Moolenaar071d4272004-06-13 20:20:40 +000080
81" Define the default highlighting.
82" For version 5.7 and earlier: only when not done already
83" For version 5.8 and later: only when an item doesn't have highlighting yet
84if version >= 508 || !exists("did_snobol4_syntax_inits")
85 if version < 508
86 let did_snobol4_syntax_inits = 1
87 command -nargs=+ HiLink hi link <args>
88 else
89 command -nargs=+ HiLink hi def link <args>
90 endif
91
Bram Moolenaard68071d2006-05-02 22:08:30 +000092 HiLink snobol4Constant Constant
93 HiLink snobol4Label Label
94 HiLink snobol4Goto Repeat
95 HiLink snobol4Conditional Conditional
96 HiLink snobol4Repeat Repeat
97 HiLink snobol4Number Number
98 HiLink snobol4Error Error
99 HiLink snobol4Statement PreProc
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000100 HiLink snobol4BogusStatement snobol4Error
Bram Moolenaard68071d2006-05-02 22:08:30 +0000101 HiLink snobol4String String
102 HiLink snobol4Comment Comment
103 HiLink snobol4Special Special
104 HiLink snobol4Todo Todo
Bram Moolenaard68071d2006-05-02 22:08:30 +0000105 HiLink snobol4Keyword Keyword
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000106 HiLink snobol4Function Function
Bram Moolenaard68071d2006-05-02 22:08:30 +0000107 HiLink snobol4MathsOperator Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +0000108 HiLink snobol4ParenError snobol4Error
109 HiLink snobol4ErrInParen snobol4Error
110 HiLink snobol4ErrInBracket snobol4Error
Bram Moolenaard68071d2006-05-02 22:08:30 +0000111 HiLink snobol4SysVar Keyword
112 HiLink snobol4BogusSysVar snobol4Error
Bram Moolenaar8c8de832008-06-24 22:58:06 +0000113 if exists("snobol4_strict_mode")
114 HiLink snobol4ExtSysVar WarningMsg
115 HiLink snobol4ExtKeyword WarningMsg
116 else
117 HiLink snobol4ExtSysVar snobol4SysVar
118 HiLink snobol4ExtKeyword snobol4Keyword
119 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000120
121 delcommand HiLink
122endif
123
124let b:current_syntax = "snobol4"
125" vim: ts=8