summaryrefslogtreecommitdiff
path: root/runtime/syntax/snobol4.vim
blob: 691acdec9a8479d91a3cd5566e613383477269fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
" Vim syntax file
" Language:     SNOBOL4
" Maintainer:   Rafal Sulejman <rms@poczta.onet.pl>
" Site: http://rms.republika.pl/vim/syntax/snobol4.vim
" Last change:  2006 may 10
" Changes: 
" - strict snobol4 mode (set snobol4_strict_mode to activate)
" - incorrect HL of dots in strings corrected
" - incorrect HL of dot-variables in parens corrected 
" - one character labels weren't displayed correctly.
" - nonexistent Snobol4 keywords displayed as errors.

" quit when a syntax file was already loaded
if exists("b:current_syntax")
  finish
endif

syntax case ignore

" Snobol4 keywords
syn keyword     snobol4Keyword      any apply arb arbno arg array
syn keyword     snobol4Keyword      break
syn keyword     snobol4Keyword      char clear code collect convert copy
syn keyword     snobol4Keyword      data datatype date define detach differ dump dupl
syn keyword     snobol4Keyword      endfile eq eval
syn keyword     snobol4Keyword      field
syn keyword     snobol4Keyword      ge gt ident
syn keyword     snobol4Keyword      input integer item
syn keyword     snobol4Keyword      le len lgt local lpad lt
syn keyword     snobol4Keyword      ne notany
syn keyword     snobol4Keyword      opsyn output
syn keyword     snobol4Keyword      pos prototype
syn keyword     snobol4Keyword      remdr replace rpad rpos rtab rewind
syn keyword     snobol4Keyword      size span stoptr
syn keyword     snobol4Keyword      tab table time trace trim terminal
syn keyword     snobol4Keyword      unload
syn keyword     snobol4Keyword      value

" CSNOBOL keywords
syn keyword     snobol4ExtKeyword   breakx
syn keyword     snobol4ExtKeyword   char chop
syn keyword     snobol4ExtKeyword   date delete
syn keyword     snobol4ExtKeyword   exp
syn keyword     snobol4ExtKeyword   freeze function
syn keyword     snobol4ExtKeyword   host
syn keyword     snobol4ExtKeyword   io_findunit
syn keyword     snobol4ExtKeyword   label lpad leq lge lle llt lne log
syn keyword     snobol4ExtKeyword   ord
syn keyword     snobol4ExtKeyword   reverse rpad rsort rename
syn keyword     snobol4ExtKeyword   serv_listen sset set sort sqrt substr
syn keyword     snobol4ExtKeyword   thaw
syn keyword     snobol4ExtKeyword   vdiffer

syn region      snobol4String       matchgroup=Quote start=+"+ end=+"+
syn region      snobol4String       matchgroup=Quote start=+'+ end=+'+
syn match       snobol4BogusStatement    "^-[^ ][^ ]*"
syn match       snobol4Statement    "^-\(include\|copy\|module\|line\|plusopts\|case\|error\|noerrors\|list\|unlist\|execute\|noexecute\|copy\)"
syn match       snobol4Constant     /"[^a-z"']\.[a-z][a-z0-9\-]*"/hs=s+1
syn region      snobol4Goto         start=":[sf]\{0,1}(" end=")\|$\|;" contains=ALLBUT,snobol4ParenError
syn match       snobol4Number       "\<\d*\(\.\d\d*\)*\>" 
syn match       snobol4BogusSysVar  "&\w\{1,}"
syn 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\)"
syn match       snobol4ExtSysVar    "&\(gtrace\|line\|file\|lastline\|lastfile\)"
syn match       snobol4Label        "\(^\|;\)[^-\.\+ \t\*\.]\{1,}[^ \t\*\;]*"
syn match       snobol4Comment      "\(^\|;\)\([\*\|!;#].*$\)"

" Parens matching
syn cluster     snobol4ParenGroup   contains=snobol4ParenError
syn region      snobol4Paren        transparent start='(' end=')' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInBracket
syn match       snobol4ParenError   display "[\])]"
syn match       snobol4ErrInParen   display contained "[\]{}]\|<%\|%>"
syn region      snobol4Bracket      transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@snobol4ParenGroup,snobol4ErrInParen
syn match       snobol4ErrInBracket display contained "[){}]\|<%\|%>"

" optional shell shebang line
" syn match       snobol4Comment      "^\#\!.*$"

" Define the default highlighting.
" Only when an item doesn't have highlighting yet
command -nargs=+ HiLink hi def link <args>

HiLink snobol4Constant        Constant
HiLink snobol4Label           Label
HiLink snobol4Goto            Repeat
HiLink snobol4Conditional     Conditional
HiLink snobol4Repeat          Repeat
HiLink snobol4Number          Number
HiLink snobol4Error           Error
HiLink snobol4Statement       PreProc
HiLink snobol4BogusStatement  snobol4Error
HiLink snobol4String          String
HiLink snobol4Comment         Comment
HiLink snobol4Special         Special
HiLink snobol4Todo            Todo
HiLink snobol4Keyword         Keyword
HiLink snobol4Function        Function
HiLink snobol4MathsOperator   Operator
HiLink snobol4ParenError      snobol4Error
HiLink snobol4ErrInParen      snobol4Error
HiLink snobol4ErrInBracket    snobol4Error
HiLink snobol4SysVar          Keyword
HiLink snobol4BogusSysVar     snobol4Error
if exists("snobol4_strict_mode")
HiLink snobol4ExtSysVar       WarningMsg
HiLink snobol4ExtKeyword      WarningMsg
else
HiLink snobol4ExtSysVar       snobol4SysVar
HiLink snobol4ExtKeyword      snobol4Keyword
endif

delcommand HiLink

let b:current_syntax = "snobol4"
" vim: ts=8