xref: /vim-8.2.3635/runtime/syntax/snobol4.vim (revision 044b68f4)
1" Vim syntax file
2" Language:     SNOBOL4
3" Maintainer:   Rafal Sulejman <[email protected]>
4" Site: http://rms.republika.pl/vim/syntax/snobol4.vim
5" Last change:  2006 may 1
6" Changes:
7" - nonexistent Snobol4 keywords displayed as errors.
8
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
19syn 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
36" Spitbol keywords
37" CSNOBOL keywords
38syn keyword     snobol4Keyword   sset
39
40syn region      snobol4String       matchgroup=Quote start=+"+ skip=+\\"+ end=+"+
41syn region      snobol4String       matchgroup=Quote start=+'+ skip=+\\'+ end=+'+
42syn match       snobol4Statement    "^-[^ ][^ ]*"
43syn 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"
52" 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
58syn match       snobol4ErrInBracket display contained "[){}]\|<%\|%>"
59
60" optional shell shebang line
61syn match       snobol4Comment    "^\#\!.*$"
62
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
75  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
91  HiLink snobol4ParenError      snobol4Error
92  HiLink snobol4ErrInParen      snobol4Error
93  HiLink snobol4ErrInBracket    snobol4Error
94  HiLink snobol4SysVar          Keyword
95  HiLink snobol4BogusSysVar     snobol4Error
96
97  delcommand HiLink
98endif
99
100let b:current_syntax = "snobol4"
101" vim: ts=8
102