blob: 1f6460f1fdc7fab6079263f44e4c1f6a78ec15aa [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
5" Last change: 2006 may 1
6" Changes:
7" - nonexistent Snobol4 keywords displayed as errors.
Bram Moolenaar071d4272004-06-13 20:20:40 +00008
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if version < 600
12 syntax clear
13elseif exists("b:current_syntax")
14 finish
15endif
16
17syntax case ignore
18" Vanilla Snobol4 keywords
Bram Moolenaard68071d2006-05-02 22:08:30 +000019syn keyword snobol4Keyword any apply arb arbno arg array
20syn keyword snobol4Keyword break
21syn keyword snobol4Keyword char clear code collect convert copy
22syn keyword snobol4Keyword data datatype date define detach differ dump dupl
23syn keyword snobol4Keyword endfile eq eval
24syn keyword snobol4Keyword field
25syn keyword snobol4Keyword ge gt ident
26syn keyword snobol4Keyword input integer item
27syn keyword snobol4Keyword le len lgt local lpad lt
28syn keyword snobol4Keyword ne notany
29syn keyword snobol4Keyword opsyn output
30syn keyword snobol4Keyword pos prototype
31syn keyword snobol4Keyword remdr replace rpad rpos rtab
32syn keyword snobol4Keyword size span stoptr
33syn keyword snobol4Keyword tab table time trace trim terminal
34syn keyword snobol4Keyword unload
35syn keyword snobol4Keyword value
Bram Moolenaar071d4272004-06-13 20:20:40 +000036" Spitbol keywords
37" CSNOBOL keywords
Bram Moolenaard68071d2006-05-02 22:08:30 +000038syn keyword snobol4Keyword sset
Bram Moolenaar071d4272004-06-13 20:20:40 +000039
40syn region snobol4String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+
41syn region snobol4String matchgroup=Quote start=+'+ skip=+\\'+ end=+'+
Bram Moolenaar071d4272004-06-13 20:20:40 +000042syn match snobol4Statement "^-[^ ][^ ]*"
Bram Moolenaard68071d2006-05-02 22:08:30 +000043syn match snobol4Comment "^\*.*$"
44syn match snobol4Comment ";\*.*$"
45syn match snobol4Constant "[^a-z]\.[a-z][a-z0-9\-]*"
46syn region snobol4Goto start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
47syn match snobol4Number "\<\d*\(\.\d\d*\)*\>"
48syn match snobol4BogusSysVar "&\w\{1,}"
49syn 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\)"
50syn match snobol4Label "^[^-\.\+ \t]\S\{1,}"
51"
Bram Moolenaar071d4272004-06-13 20:20:40 +000052" Parens matching
53syn cluster snobol4ParenGroup contains=snobol4ParenError
54syn region snobol4Paren transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
55syn match snobol4ParenError display "[\])]"
56syn match snobol4ErrInParen display contained "[\]{}]\|<%\|%>"
57syn region snobol4Bracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
Bram Moolenaard68071d2006-05-02 22:08:30 +000058syn match snobol4ErrInBracket display contained "[){}]\|<%\|%>"
Bram Moolenaar071d4272004-06-13 20:20:40 +000059
60" optional shell shebang line
Bram Moolenaard68071d2006-05-02 22:08:30 +000061syn match snobol4Comment "^\#\!.*$"
Bram Moolenaar071d4272004-06-13 20:20:40 +000062
63
64" Define the default highlighting.
65" For version 5.7 and earlier: only when not done already
66" For version 5.8 and later: only when an item doesn't have highlighting yet
67if version >= 508 || !exists("did_snobol4_syntax_inits")
68 if version < 508
69 let did_snobol4_syntax_inits = 1
70 command -nargs=+ HiLink hi link <args>
71 else
72 command -nargs=+ HiLink hi def link <args>
73 endif
74
Bram Moolenaard68071d2006-05-02 22:08:30 +000075 HiLink snobol4Constant Constant
76 HiLink snobol4Label Label
77 HiLink snobol4Goto Repeat
78 HiLink snobol4Conditional Conditional
79 HiLink snobol4Repeat Repeat
80 HiLink snobol4Number Number
81 HiLink snobol4Error Error
82 HiLink snobol4Statement PreProc
83 HiLink snobol4String String
84 HiLink snobol4Comment Comment
85 HiLink snobol4Special Special
86 HiLink snobol4Todo Todo
87 HiLink snobol4Keyword Statement
88 HiLink snobol4Function Statement
89 HiLink snobol4Keyword Keyword
90 HiLink snobol4MathsOperator Operator
Bram Moolenaar071d4272004-06-13 20:20:40 +000091 HiLink snobol4ParenError snobol4Error
92 HiLink snobol4ErrInParen snobol4Error
93 HiLink snobol4ErrInBracket snobol4Error
Bram Moolenaard68071d2006-05-02 22:08:30 +000094 HiLink snobol4SysVar Keyword
95 HiLink snobol4BogusSysVar snobol4Error
Bram Moolenaar071d4272004-06-13 20:20:40 +000096
97 delcommand HiLink
98endif
99
100let b:current_syntax = "snobol4"
101" vim: ts=8