summaryrefslogtreecommitdiff
path: root/colm.vim
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2008-11-01 17:35:50 +0000
committerAdrian Thurston <thurston@complang.org>2008-11-01 17:35:50 +0000
commit10ff0e06801af15050848c701f606ac5de3ebc06 (patch)
tree21e08beb963d6208ef236afe8c9ca16469895547 /colm.vim
downloadcolm-10ff0e06801af15050848c701f606ac5de3ebc06.tar.gz
Moved from private repository.
Diffstat (limited to 'colm.vim')
-rw-r--r--colm.vim89
1 files changed, 89 insertions, 0 deletions
diff --git a/colm.vim b/colm.vim
new file mode 100644
index 00000000..b32441a5
--- /dev/null
+++ b/colm.vim
@@ -0,0 +1,89 @@
+" 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
+
+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
+
+"
+" 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"