blob: 064489564d6af2459995953e6bbd1ee2c611f98c [file] [log] [blame]
Bram Moolenaar42eeac32005-06-29 22:40:58 +00001" Vim default file
2" Language: Racc input file
3" Maintainer: Nikolai Weibull <nikolai+work.vim@bitwi.se>
4" Latest Revision: 2005-06-29
5
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
15syn region raccComment matchgroup=raccComment start='/\*' end='\*/'
16 \ contains=raccTodo,@Spell
17syn region raccComment matchgroup=raccComment start='#' end='$'
18 \ 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
34syn match raccPrecToken contained '\<\u[A-Z0-9]*\>'
35 \ 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
51syn match raccTokenR contained '\<\u[A-Z0-9]*\>'
52 \ 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
70syn match raccConvToken contained '\<\u[A-Z0-9]*\>'
71 \ nextgroup=raccString skipwhite skipnl
72
73syn keyword raccStart contained start
74 \ nextgroup=raccTargetS skipwhite skipnl
75
76syn match raccTargetS contained '\<\l[a-z0-9]*\>'
77
78syn match raccSpecial contained '\\["'\\]'
79
80syn region raccString matchgroup=raccString start=+"+ skip=+\\\\\|\\"+
81 \ end=+"+ contains=raccSpecial
82syn region raccString matchgroup=raccString start=+'+ skip=+\\\\\|\\'+
83 \ end=+'+ contains=raccSpecial
84
85syn region raccRules transparent matchgroup=raccKeyword start='\<rule\>'
86 \ end='\<end\>' contains=raccComment,raccString,
87 \ raccNumber,raccToken,raccTarget,raccDelimiter,
88 \ raccAction
89
90syn match raccTarget contained '\<\l[a-z0-9]*\>'
91
92syn match raccDelimiter contained '[:|]'
93
94syn match raccToken contained '\<\u[A-Z0-9]*\>'
95
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
113hi def link raccTodo Todo
114hi def link raccComment Comment
115hi def link raccPrecSpec Type
116hi def link raccPrecToken raccToken
117hi def link raccPrecString raccString
118hi def link raccTokenDecl Keyword
119hi def link raccToken Identifier
120hi def link raccTokenR raccToken
121hi def link raccExpect Keyword
122hi def link raccNumber Number
123hi def link raccOptions Keyword
124hi def link raccOptionsR Identifier
125hi def link raccConvToken raccToken
126hi def link raccStart Keyword
127hi def link raccTargetS Type
128hi def link raccSpecial special
129hi def link raccString String
130hi def link raccTarget Type
131hi def link raccDelimiter Delimiter
132hi def link raccPreProc PreProc
133hi def link raccKeyword Keyword
134
135let b:current_syntax = "racc"
136
137let &cpo = s:cpo_save
138unlet s:cpo_save