1" Vim syntax file
2" Language:	AYacc
3" Maintainer:	Mathieu Clabaut <mathieu.clabaut@free.fr>
4" LastChange:	02 May 2001
5" Original:	Yacc, maintained by Dr. Charles E. Campbell, Jr.
6" Comment:	     Replaced sourcing c.vim file by ada.vim and rename yacc*
7"		in ayacc*
8
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if version < 600
12   syntax clear
13elseif exists("b:current_syntax")
14   finish
15endif
16
17" Read the Ada syntax to start with
18if version < 600
19   so <sfile>:p:h/ada.vim
20else
21   runtime! syntax/ada.vim
22   unlet b:current_syntax
23endif
24
25" Clusters
26syn cluster	ayaccActionGroup	contains=ayaccDelim,cInParen,cTodo,cIncluded,ayaccDelim,ayaccCurlyError,ayaccUnionCurly,ayaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError
27syn cluster	ayaccUnionGroup	contains=ayaccKey,cComment,ayaccCurly,cType,cStructure,cStorageClass,ayaccUnionCurly
28
29" Yacc stuff
30syn match	ayaccDelim	"^[ \t]*[:|;]"
31syn match	ayaccOper	"@\d\+"
32
33syn match	ayaccKey	"^[ \t]*%\(token\|type\|left\|right\|start\|ident\)\>"
34syn match	ayaccKey	"[ \t]%\(prec\|expect\|nonassoc\)\>"
35syn match	ayaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
36syn keyword	ayaccKeyActn	yyerrok yyclearin
37
38syn match	ayaccUnionStart	"^%union"	skipwhite skipnl nextgroup=ayaccUnion
39syn region	ayaccUnion	contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}"	contains=@ayaccUnionGroup
40syn region	ayaccUnionCurly	contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
41syn match	ayaccBrkt	contained "[<>]"
42syn match	ayaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=ayaccBrkt
43syn match	ayaccDefinition	"^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
44
45" special Yacc separators
46syn match	ayaccSectionSep	"^[ \t]*%%"
47syn match	ayaccSep	"^[ \t]*%{"
48syn match	ayaccSep	"^[ \t]*%}"
49
50" I'd really like to highlight just the outer {}.  Any suggestions???
51syn match	ayaccCurlyError	"[{}]"
52syn region	ayaccAction	matchgroup=ayaccCurly start="{" end="}" contains=ALLBUT,@ayaccActionGroup
53
54if version >= 508 || !exists("did_ayacc_syntax_inits")
55   if version < 508
56      let did_ayacc_syntax_inits = 1
57      command -nargs=+ HiLink hi link <args>
58   else
59      command -nargs=+ HiLink hi def link <args>
60   endif
61
62  " Internal ayacc highlighting links
63  HiLink ayaccBrkt	ayaccStmt
64  HiLink ayaccKey	ayaccStmt
65  HiLink ayaccOper	ayaccStmt
66  HiLink ayaccUnionStart	ayaccKey
67
68  " External ayacc highlighting links
69  HiLink ayaccCurly	Delimiter
70  HiLink ayaccCurlyError	Error
71  HiLink ayaccDefinition	Function
72  HiLink ayaccDelim	Function
73  HiLink ayaccKeyActn	Special
74  HiLink ayaccSectionSep	Todo
75  HiLink ayaccSep	Delimiter
76  HiLink ayaccStmt	Statement
77  HiLink ayaccType	Type
78
79  " since Bram doesn't like my Delimiter :|
80  HiLink Delimiter	Type
81  delcommand HiLink
82endif
83
84let b:current_syntax = "ayacc"
85
86" vim: ts=15
87