blob: 8b7b579987f7b37c3cf451f5693a35e0159544fd (
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
|
" 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
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
\ construct parse parse_stop match require
\ preeof left right nonassoc prec
syntax keyword typeKeywords
\ int str bool any ref vector map list ptr
syntax keyword Keyword
\ reject else elsif return yield for while if
\ typeid in break
\ new deref
syntax match tokenName "[a-zA-Z_][a-zA-Z_0-9]*" contained
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
let b:current_syntax = "colm"
|