xref: /vim-8.2.3635/runtime/syntax/ayacc.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	AYacc
3071d4279SBram Moolenaar" Maintainer:	Mathieu Clabaut <[email protected]>
4b6b046b2SBram Moolenaar" LastChange:	2011 Dec 25
5071d4279SBram Moolenaar" Original:	Yacc, maintained by Dr. Charles E. Campbell, Jr.
6071d4279SBram Moolenaar" Comment:	     Replaced sourcing c.vim file by ada.vim and rename yacc*
7071d4279SBram Moolenaar"		in ayacc*
8071d4279SBram Moolenaar
989bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1089bcfda6SBram Moolenaarif exists("b:current_syntax")
11071d4279SBram Moolenaar   finish
12071d4279SBram Moolenaarendif
13071d4279SBram Moolenaar
14071d4279SBram Moolenaar" Read the Ada syntax to start with
15071d4279SBram Moolenaarruntime! syntax/ada.vim
16071d4279SBram Moolenaarunlet b:current_syntax
17071d4279SBram Moolenaar
18b6b046b2SBram Moolenaarlet s:cpo_save = &cpo
19b6b046b2SBram Moolenaarset cpo&vim
20b6b046b2SBram Moolenaar
21071d4279SBram Moolenaar" Clusters
22071d4279SBram Moolenaarsyn cluster	ayaccActionGroup	contains=ayaccDelim,cInParen,cTodo,cIncluded,ayaccDelim,ayaccCurlyError,ayaccUnionCurly,ayaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError
23071d4279SBram Moolenaarsyn cluster	ayaccUnionGroup	contains=ayaccKey,cComment,ayaccCurly,cType,cStructure,cStorageClass,ayaccUnionCurly
24071d4279SBram Moolenaar
25071d4279SBram Moolenaar" Yacc stuff
26071d4279SBram Moolenaarsyn match	ayaccDelim	"^[ \t]*[:|;]"
27071d4279SBram Moolenaarsyn match	ayaccOper	"@\d\+"
28071d4279SBram Moolenaar
29071d4279SBram Moolenaarsyn match	ayaccKey	"^[ \t]*%\(token\|type\|left\|right\|start\|ident\)\>"
30071d4279SBram Moolenaarsyn match	ayaccKey	"[ \t]%\(prec\|expect\|nonassoc\)\>"
31071d4279SBram Moolenaarsyn match	ayaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
32071d4279SBram Moolenaarsyn keyword	ayaccKeyActn	yyerrok yyclearin
33071d4279SBram Moolenaar
34071d4279SBram Moolenaarsyn match	ayaccUnionStart	"^%union"	skipwhite skipnl nextgroup=ayaccUnion
35071d4279SBram Moolenaarsyn region	ayaccUnion	contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}"	contains=@ayaccUnionGroup
36071d4279SBram Moolenaarsyn region	ayaccUnionCurly	contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
37071d4279SBram Moolenaarsyn match	ayaccBrkt	contained "[<>]"
38071d4279SBram Moolenaarsyn match	ayaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=ayaccBrkt
39071d4279SBram Moolenaarsyn match	ayaccDefinition	"^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
40071d4279SBram Moolenaar
41071d4279SBram Moolenaar" special Yacc separators
42071d4279SBram Moolenaarsyn match	ayaccSectionSep	"^[ \t]*%%"
43071d4279SBram Moolenaarsyn match	ayaccSep	"^[ \t]*%{"
44071d4279SBram Moolenaarsyn match	ayaccSep	"^[ \t]*%}"
45071d4279SBram Moolenaar
46071d4279SBram Moolenaar" I'd really like to highlight just the outer {}.  Any suggestions???
47071d4279SBram Moolenaarsyn match	ayaccCurlyError	"[{}]"
48071d4279SBram Moolenaarsyn region	ayaccAction	matchgroup=ayaccCurly start="{" end="}" contains=ALLBUT,@ayaccActionGroup
49071d4279SBram Moolenaar
50071d4279SBram Moolenaar
51071d4279SBram Moolenaar" Internal ayacc highlighting links
52*f37506f6SBram Moolenaarhi def link ayaccBrkt	ayaccStmt
53*f37506f6SBram Moolenaarhi def link ayaccKey	ayaccStmt
54*f37506f6SBram Moolenaarhi def link ayaccOper	ayaccStmt
55*f37506f6SBram Moolenaarhi def link ayaccUnionStart	ayaccKey
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar" External ayacc highlighting links
58*f37506f6SBram Moolenaarhi def link ayaccCurly	Delimiter
59*f37506f6SBram Moolenaarhi def link ayaccCurlyError	Error
60*f37506f6SBram Moolenaarhi def link ayaccDefinition	Function
61*f37506f6SBram Moolenaarhi def link ayaccDelim	Function
62*f37506f6SBram Moolenaarhi def link ayaccKeyActn	Special
63*f37506f6SBram Moolenaarhi def link ayaccSectionSep	Todo
64*f37506f6SBram Moolenaarhi def link ayaccSep	Delimiter
65*f37506f6SBram Moolenaarhi def link ayaccStmt	Statement
66*f37506f6SBram Moolenaarhi def link ayaccType	Type
67071d4279SBram Moolenaar
68071d4279SBram Moolenaar" since Bram doesn't like my Delimiter :|
69*f37506f6SBram Moolenaarhi def link Delimiter	Type
70071d4279SBram Moolenaar
71071d4279SBram Moolenaarlet b:current_syntax = "ayacc"
72071d4279SBram Moolenaar
73b6b046b2SBram Moolenaarlet &cpo = s:cpo_save
74b6b046b2SBram Moolenaarunlet s:cpo_save
75071d4279SBram Moolenaar" vim: ts=15
76