xref: /vim-8.2.3635/runtime/syntax/ayacc.vim (revision cf2d8dee)
1" Vim syntax file
2" Language:	AYacc
3" Maintainer:	Mathieu Clabaut <[email protected]>
4" LastChange:	2011 Dec 25
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
25let s:cpo_save = &cpo
26set cpo&vim
27
28" Clusters
29syn cluster	ayaccActionGroup	contains=ayaccDelim,cInParen,cTodo,cIncluded,ayaccDelim,ayaccCurlyError,ayaccUnionCurly,ayaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError
30syn cluster	ayaccUnionGroup	contains=ayaccKey,cComment,ayaccCurly,cType,cStructure,cStorageClass,ayaccUnionCurly
31
32" Yacc stuff
33syn match	ayaccDelim	"^[ \t]*[:|;]"
34syn match	ayaccOper	"@\d\+"
35
36syn match	ayaccKey	"^[ \t]*%\(token\|type\|left\|right\|start\|ident\)\>"
37syn match	ayaccKey	"[ \t]%\(prec\|expect\|nonassoc\)\>"
38syn match	ayaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
39syn keyword	ayaccKeyActn	yyerrok yyclearin
40
41syn match	ayaccUnionStart	"^%union"	skipwhite skipnl nextgroup=ayaccUnion
42syn region	ayaccUnion	contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}"	contains=@ayaccUnionGroup
43syn region	ayaccUnionCurly	contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
44syn match	ayaccBrkt	contained "[<>]"
45syn match	ayaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=ayaccBrkt
46syn match	ayaccDefinition	"^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
47
48" special Yacc separators
49syn match	ayaccSectionSep	"^[ \t]*%%"
50syn match	ayaccSep	"^[ \t]*%{"
51syn match	ayaccSep	"^[ \t]*%}"
52
53" I'd really like to highlight just the outer {}.  Any suggestions???
54syn match	ayaccCurlyError	"[{}]"
55syn region	ayaccAction	matchgroup=ayaccCurly start="{" end="}" contains=ALLBUT,@ayaccActionGroup
56
57if version >= 508 || !exists("did_ayacc_syntax_inits")
58   if version < 508
59      let did_ayacc_syntax_inits = 1
60      command -nargs=+ HiLink hi link <args>
61   else
62      command -nargs=+ HiLink hi def link <args>
63   endif
64
65  " Internal ayacc highlighting links
66  HiLink ayaccBrkt	ayaccStmt
67  HiLink ayaccKey	ayaccStmt
68  HiLink ayaccOper	ayaccStmt
69  HiLink ayaccUnionStart	ayaccKey
70
71  " External ayacc highlighting links
72  HiLink ayaccCurly	Delimiter
73  HiLink ayaccCurlyError	Error
74  HiLink ayaccDefinition	Function
75  HiLink ayaccDelim	Function
76  HiLink ayaccKeyActn	Special
77  HiLink ayaccSectionSep	Todo
78  HiLink ayaccSep	Delimiter
79  HiLink ayaccStmt	Statement
80  HiLink ayaccType	Type
81
82  " since Bram doesn't like my Delimiter :|
83  HiLink Delimiter	Type
84  delcommand HiLink
85endif
86
87let b:current_syntax = "ayacc"
88
89let &cpo = s:cpo_save
90unlet s:cpo_save
91" vim: ts=15
92