blob: 2d4c176eb7bf204325c06dc270009dabd923c9a7 [file] [log] [blame]
Bram Moolenaar42eeac32005-06-29 22:40:58 +00001" Vim default file
Bram Moolenaar214641f2017-03-05 17:04:09 +01002" Language: Racc input file
3" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
4" Latest Revision: 2008-06-22
Bram Moolenaar42eeac32005-06-29 22:40:58 +00005
6if exists("b:current_syntax")
7 finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword raccTodo contained TODO FIXME XXX NOTE
14
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000015syn region raccComment start='/\*' end='\*/'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000016 \ contains=raccTodo,@Spell
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000017syn region raccComment display oneline start='#' end='$'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000018 \ contains=raccTodo,@Spell
19
20syn region raccClass transparent matchgroup=raccKeyword
21 \ start='\<class\>' end='\<rule\>'he=e-4
22 \ contains=raccComment,raccPrecedence,
23 \ raccTokenDecl,raccExpect,raccOptions,raccConvert,
24 \ raccStart,
25
26syn region raccPrecedence transparent matchgroup=raccKeyword
27 \ start='\<prechigh\>' end='\<preclow\>'
28 \ contains=raccComment,raccPrecSpec
29
30syn keyword raccPrecSpec contained nonassoc left right
31 \ nextgroup=raccPrecToken,raccPrecString skipwhite
32 \ skipnl
33
Bram Moolenaare37d50a2008-08-06 17:06:04 +000034syn match raccPrecToken contained '\<\u[A-Z0-9_]*\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000035 \ nextgroup=raccPrecToken,raccPrecString skipwhite
36 \ skipnl
37
38syn region raccPrecString matchgroup=raccPrecString start=+"+
39 \ skip=+\\\\\|\\"+ end=+"+
40 \ contains=raccSpecial
41 \ nextgroup=raccPrecToken,raccPrecString skipwhite
42 \ skipnl
43syn region raccPrecString matchgroup=raccPrecString start=+'+
44 \ skip=+\\\\\|\\'+ end=+'+ contains=raccSpecial
45 \ nextgroup=raccPrecToken,raccPrecString skipwhite
46 \ skipnl
47
48syn keyword raccTokenDecl contained token
49 \ nextgroup=raccTokenR skipwhite skipnl
50
Bram Moolenaare37d50a2008-08-06 17:06:04 +000051syn match raccTokenR contained '\<\u[A-Z0-9_]*\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000052 \ nextgroup=raccTokenR skipwhite skipnl
53
54syn keyword raccExpect contained expect
55 \ nextgroup=raccNumber skipwhite skipnl
56
57syn match raccNumber contained '\<\d\+\>'
58
59syn keyword raccOptions contained options
60 \ nextgroup=raccOptionsR skipwhite skipnl
61
62syn keyword raccOptionsR contained omit_action_call result_var
63 \ nextgroup=raccOptionsR skipwhite skipnl
64
65syn region raccConvert transparent contained matchgroup=raccKeyword
66 \ start='\<convert\>' end='\<end\>'
67 \ contains=raccComment,raccConvToken skipwhite
68 \ skipnl
69
Bram Moolenaare37d50a2008-08-06 17:06:04 +000070syn match raccConvToken contained '\<\u[A-Z0-9_]*\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000071 \ nextgroup=raccString skipwhite skipnl
72
73syn keyword raccStart contained start
74 \ nextgroup=raccTargetS skipwhite skipnl
75
Bram Moolenaare37d50a2008-08-06 17:06:04 +000076syn match raccTargetS contained '\<\l[a-z0-9_]*\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000077
78syn match raccSpecial contained '\\["'\\]'
79
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000080syn region raccString start=+"+ skip=+\\\\\|\\"+ end=+"+
81 \ contains=raccSpecial
82syn region raccString start=+'+ skip=+\\\\\|\\'+ end=+'+
83 \ contains=raccSpecial
Bram Moolenaar42eeac32005-06-29 22:40:58 +000084
85syn region raccRules transparent matchgroup=raccKeyword start='\<rule\>'
86 \ end='\<end\>' contains=raccComment,raccString,
87 \ raccNumber,raccToken,raccTarget,raccDelimiter,
88 \ raccAction
89
Bram Moolenaare37d50a2008-08-06 17:06:04 +000090syn match raccTarget contained '\<\l[a-z0-9_]*\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000091
92syn match raccDelimiter contained '[:|]'
93
Bram Moolenaare37d50a2008-08-06 17:06:04 +000094syn match raccToken contained '\<\u[A-Z0-9_]*\>'
Bram Moolenaar42eeac32005-06-29 22:40:58 +000095
96syn include @raccRuby syntax/ruby.vim
97
98syn region raccAction transparent matchgroup=raccDelimiter
99 \ start='{' end='}' contains=@raccRuby
100
101syn region raccHeader transparent matchgroup=raccPreProc
102 \ start='^---- header.*' end='^----'he=e-4
103 \ contains=@raccRuby
104
105syn region raccInner transparent matchgroup=raccPreProc
106 \ start='^---- inner.*' end='^----'he=e-4
107 \ contains=@raccRuby
108
109syn region raccFooter transparent matchgroup=raccPreProc
110 \ start='^---- footer.*' end='^----'he=e-4
111 \ contains=@raccRuby
112
Bram Moolenaar3d27a452007-05-10 17:44:18 +0000113syn sync match raccSyncHeader grouphere raccHeader '^---- header'
114syn sync match raccSyncInner grouphere raccInner '^---- inner'
115syn sync match raccSyncFooter grouphere raccFooter '^---- footer'
116
Bram Moolenaar42eeac32005-06-29 22:40:58 +0000117hi def link raccTodo Todo
118hi def link raccComment Comment
119hi def link raccPrecSpec Type
120hi def link raccPrecToken raccToken
121hi def link raccPrecString raccString
122hi def link raccTokenDecl Keyword
123hi def link raccToken Identifier
124hi def link raccTokenR raccToken
125hi def link raccExpect Keyword
126hi def link raccNumber Number
127hi def link raccOptions Keyword
128hi def link raccOptionsR Identifier
129hi def link raccConvToken raccToken
130hi def link raccStart Keyword
131hi def link raccTargetS Type
132hi def link raccSpecial special
133hi def link raccString String
134hi def link raccTarget Type
135hi def link raccDelimiter Delimiter
136hi def link raccPreProc PreProc
137hi def link raccKeyword Keyword
138
139let b:current_syntax = "racc"
140
141let &cpo = s:cpo_save
142unlet s:cpo_save