xref: /vim-8.2.3635/runtime/syntax/yacc.vim (revision 1d9215b9)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Yacc
3*1d9215b9SBram Moolenaar" Maintainer:	Charles E. Campbell <[email protected]>
4723dd946SBram Moolenaar" Last Change:	Mar 25, 2019
5*1d9215b9SBram Moolenaar" Version:	17
6f37506f6SBram Moolenaar" URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_YACC
7071d4279SBram Moolenaar"
88c8de839SBram Moolenaar" Options: {{{1
9df1bdc92SBram Moolenaar"   g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
10071d4279SBram Moolenaar
118c8de839SBram Moolenaar" ---------------------------------------------------------------------
125c73622aSBram Moolenaar" this version of syntax/yacc.vim requires 6.0 or later
135c73622aSBram Moolenaarif exists("b:current_syntax")
145c73622aSBram Moolenaar syntax clear
155c73622aSBram Moolenaarendif
165c73622aSBram Moolenaar
175c73622aSBram Moolenaar" ---------------------------------------------------------------------
185c73622aSBram Moolenaar"  Folding Support {{{1
195c73622aSBram Moolenaarif has("folding")
2097d62497SBram Moolenaar com! -nargs=+ SynFold	<args> fold
215c73622aSBram Moolenaarelse
2297d62497SBram Moolenaar com! -nargs=+ SynFold	<args>
235c73622aSBram Moolenaarendif
24071d4279SBram Moolenaar
258c8de839SBram Moolenaar" ---------------------------------------------------------------------
268c8de839SBram Moolenaar" Read the C syntax to start with {{{1
2797d62497SBram Moolenaar" Read the C/C++ syntax to start with
2897d62497SBram Moolenaarlet s:Cpath= fnameescape(expand("<sfile>:p:h").(exists("g:yacc_uses_cpp")? "/cpp.vim" : "/c.vim"))
2997d62497SBram Moolenaarif !filereadable(s:Cpath)
3097d62497SBram Moolenaar for s:Cpath in split(globpath(&rtp,(exists("g:yacc_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n")
3197d62497SBram Moolenaar  if filereadable(fnameescape(s:Cpath))
3297d62497SBram Moolenaar   let s:Cpath= fnameescape(s:Cpath)
3397d62497SBram Moolenaar   break
34071d4279SBram Moolenaar  endif
3597d62497SBram Moolenaar endfor
3697d62497SBram Moolenaarendif
3797d62497SBram Moolenaarexe "syn include @yaccCode ".s:Cpath
38071d4279SBram Moolenaar
398c8de839SBram Moolenaar" ---------------------------------------------------------------------
405c73622aSBram Moolenaar"  Yacc Clusters: {{{1
4181af9250SBram Moolenaarsyn cluster yaccInitCluster	contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption
429da7ff70SBram Moolenaarsyn cluster yaccRulesCluster	contains=yaccNonterminal,yaccString,yaccComment
43071d4279SBram Moolenaar
448c8de839SBram Moolenaar" ---------------------------------------------------------------------
455c73622aSBram Moolenaar"  Yacc Sections: {{{1
46723dd946SBram MoolenaarSynFold syn	region	yaccInit	start='.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep		end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty contained
47723dd946SBram MoolenaarSynFold syn	region	yaccInit2      start='\%^.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep		end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty
4897d62497SBram MoolenaarSynFold syn	region	yaccHeader2	matchgroup=yaccSep	start="^\s*\zs%{"		end="^\s*%}"			contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty contained
4997d62497SBram MoolenaarSynFold syn	region	yaccHeader	matchgroup=yaccSep	start="^\s*\zs%{"		end="^\s*%}"			contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty
50723dd946SBram MoolenaarSynFold syn	region	yaccRules	matchgroup=yaccSectionSep	start='^%%\ze\(\s*/[*/].*\)\=$'	end='^%%\ze\(\s*/[*/].*\)\=$'me=e-2,re=e-2	contains=@yaccRulesCluster	nextgroup=yaccEndCode	skipwhite skipempty contained
51723dd946SBram MoolenaarSynFold syn	region	yaccEndCode	matchgroup=yaccSectionSep	start='^%%\ze\(\s*/[*/].*\)\=$'	end='\%$'			contains=@yaccCode	contained
52071d4279SBram Moolenaar
538c8de839SBram Moolenaar" ---------------------------------------------------------------------
545c73622aSBram Moolenaar" Yacc Commands: {{{1
554b22cdb0SBram Moolenaarsyn	match	yaccDefines	'^%define\s\+.*$'
5681af9250SBram Moolenaarsyn	match	yaccParseParam	'%\(parse\|lex\)-param\>'		skipwhite	nextgroup=yaccParseParamStr
5781af9250SBram Moolenaarsyn	match	yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>'
584b22cdb0SBram Moolenaarsyn	region	yaccParseParamStr	contained matchgroup=Delimiter	start='{'	end='}'	contains=cStructure
594b22cdb0SBram Moolenaar
605c73622aSBram Moolenaarsyn	match	yaccDelim	"[:|]"	contained
615c73622aSBram Moolenaarsyn	match	yaccOper	"@\d\+"	contained
625c73622aSBram Moolenaar
635c73622aSBram Moolenaarsyn	match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"	contained
645c73622aSBram Moolenaarsyn	match	yaccKey	"\s%\(prec\|expect\)\>"	contained
655c73622aSBram Moolenaarsyn	match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"	contained
665c73622aSBram Moolenaarsyn	keyword	yaccKeyActn	yyerrok yyclearin	contained
675c73622aSBram Moolenaar
685c73622aSBram Moolenaarsyn	match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion	contained
6997d62497SBram MoolenaarSynFold syn	region	yaccUnion	matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode	contained
705c73622aSBram Moolenaarsyn	match	yaccBrkt	"[<>]"	contained
715c73622aSBram Moolenaarsyn	match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt	contained
725c73622aSBram Moolenaar
7397d62497SBram MoolenaarSynFold syn	region	yaccNonterminal	start="^\s*\a\w*\ze\_s*\(/\*\_.\{-}\*/\)\=\_s*:"	matchgroup=yaccDelim end=";"	matchgroup=yaccSectionSep end='^%%$'me=e-2,re=e-2 contains=yaccAction,yaccDelim,yaccString,yaccComment	contained
745c73622aSBram Moolenaarsyn	region	yaccComment	start="/\*"	end="\*/"
75723dd946SBram Moolenaarsyn	region	yaccComment	start="//"	end="$"
765c73622aSBram Moolenaarsyn	match	yaccString	"'[^']*'"	contained
775c73622aSBram Moolenaar
78071d4279SBram Moolenaar
798c8de839SBram Moolenaar" ---------------------------------------------------------------------
808c8de839SBram Moolenaar" I'd really like to highlight just the outer {}.  Any suggestions??? {{{1
81071d4279SBram Moolenaarsyn	match	yaccCurlyError	"[{}]"
8297d62497SBram MoolenaarSynFold syn	region	yaccAction	matchgroup=yaccCurly start="{" end="}" 	contains=@yaccCode,yaccVar		contained
8397d62497SBram Moolenaarsyn	match	yaccVar	'\$\d\+\|\$\$\|\$<\I\i*>\$\|\$<\I\i*>\d\+'	containedin=cParen,cPreProc,cMulti	contained
84071d4279SBram Moolenaar
858c8de839SBram Moolenaar" ---------------------------------------------------------------------
868c8de839SBram Moolenaar" Yacc synchronization: {{{1
875c73622aSBram Moolenaarsyn sync fromstart
88071d4279SBram Moolenaar
898c8de839SBram Moolenaar" ---------------------------------------------------------------------
908c8de839SBram Moolenaar" Define the default highlighting. {{{1
91f37506f6SBram Moolenaarif !exists("skip_yacc_syn_inits")
9297d62497SBram Moolenaar  hi def link yaccBrkt	yaccStmt
9397d62497SBram Moolenaar  hi def link yaccComment	Comment
9497d62497SBram Moolenaar  hi def link yaccCurly	Delimiter
9597d62497SBram Moolenaar  hi def link yaccCurlyError	Error
9697d62497SBram Moolenaar  hi def link yaccDefines	cDefine
9797d62497SBram Moolenaar  hi def link yaccDelim	Delimiter
9897d62497SBram Moolenaar  hi def link yaccKeyActn	Special
9997d62497SBram Moolenaar  hi def link yaccKey	yaccStmt
10097d62497SBram Moolenaar  hi def link yaccNonterminal	Function
10197d62497SBram Moolenaar  hi def link yaccOper	yaccStmt
10297d62497SBram Moolenaar  hi def link yaccParseOption	cDefine
10397d62497SBram Moolenaar  hi def link yaccParseParam	yaccParseOption
10497d62497SBram Moolenaar  hi def link yaccSectionSep	Todo
10597d62497SBram Moolenaar  hi def link yaccSep	Delimiter
10697d62497SBram Moolenaar  hi def link yaccStmt	Statement
10797d62497SBram Moolenaar  hi def link yaccString	String
10897d62497SBram Moolenaar  hi def link yaccType	Type
10997d62497SBram Moolenaar  hi def link yaccUnionStart	yaccKey
11097d62497SBram Moolenaar  hi def link yaccVar	Special
111071d4279SBram Moolenaarendif
1125c73622aSBram Moolenaar
1135c73622aSBram Moolenaar" ---------------------------------------------------------------------
1145c73622aSBram Moolenaar"  Cleanup: {{{1
11597d62497SBram Moolenaardelcommand SynFold
116071d4279SBram Moolenaarlet b:current_syntax = "yacc"
117071d4279SBram Moolenaar
1188c8de839SBram Moolenaar" ---------------------------------------------------------------------
1198c8de839SBram Moolenaar"  Modelines: {{{1
1208c8de839SBram Moolenaar" vim: ts=15 fdm=marker
121