blob: 59ee5dec707f864b406f5690858bf1d3961fb15c (
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
|
" Vim syntax file
"
" Language: Colm
" Author: Adrian Thurston
syntax clear
"
" Regular Language Types
"
" Identifiers
syntax match rlId "[a-zA-Z_][a-zA-Z_0-9]*" contained
" Literals
syntax match rlLiteral "'\(\\.\|[^'\\]\)*'[i]*" contained
syntax match rlLiteral "\"\(\\.\|[^\"\\]\)*\"[i]*" contained
syntax match rlLiteral "\[\(\\.\|[^\]\\]\)*\]" contained
" Numbers
syntax match rlNumber "[0-9][0-9]*" contained
syntax match rlNumber "0x[0-9a-fA-F][0-9a-fA-F]*" contained
" Operators
syntax match rlOtherOps ":>" contained
syntax match rlOtherOps ":>>" contained
syntax match rlOtherOps "<:" contained
syntax cluster rlTypes contains=rlId,rlLiteral,rlNumber,rlOtherOps
syntax region rlTypeRegion matchgroup=regionDelimiter start="/" end="/"
\ contains=@rlTypes
syntax region cflTypeRegion matchgroup=regionDelimiter start="\[" end="\]"
\ contains=cflTypeRegion,patRegion,otLit,typeKeywords,varCapture,qual
syntax region patRegion matchgroup=String start="\"" end="\"" end="\n"
\ contains=char,cflTypeRegion
syntax match char "[^\"\[]" contained
syntax match char "\\." contained
syntax match otLit "\~.*$"
syntax match otLit "'\(\\.\|[^'\\]\)*\('[i]*\)\?"
"
" Other stuff
"
syntax match tlComment "#.*$"
syntax match tlIdentifier "[a-zA-Z_][a-zA-Z_0-9]*"
syntax match tlNumber "[0-9][0-9]*"
syntax match tlNumber "nil"
syntax match tlNumber "true"
syntax match tlNumber "false"
syntax keyword Type
\ commit include literal iter
\ namespace lex reducefirst global include export
\ construct cons parse parse_stop match require send
\ preeof left right nonassoc prec accum context alias
\ end
syntax keyword typeKeywords
\ int str bool any ref ptr
syntax keyword Keyword
\ reject else elsif return yield for while if
\ typeid in break
\ new deref ni
syntax match tokenName "[a-zA-Z_][a-zA-Z_0-9]*" contained
syntax match varCapture "[a-zA-Z_][a-zA-Z_0-9]*:"
syntax match qual "[a-zA-Z_][a-zA-Z_0-9]*::"
syntax region defTypes matchgroup=defKeywords
\ start="\<rl\>" start="\<def\>" start="\<token\>" start="\<ignore\>"
\ matchgroup=Function end="[a-zA-Z_][a-zA-Z0-9_]*" end="/"me=e-1
syntax sync match colmSyncPat grouphere NONE "([{}]|\<token\>|\<ignore\>|\<def\>)"
"
" Specifying Groups
"
hi link tlComment Comment
hi link tlNumber Number
hi link otLit String
hi link rlNumber Number
hi link rlLiteral String
hi link defKeywords Type
hi link typeKeywords Type
hi link regionDelimiter Type
hi link char String
hi link tokenName Function
hi link varCapture Identifier
let b:current_syntax = "colm"
|