diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
| commit | 5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1 (patch) | |
| tree | 965ae5128797f3d42d78d02692e62d24a4596e19 /syntax/yacc.vim | |
| parent | 8148255ef1c416f414c3a78405eff08fe149d16e (diff) | |
| download | vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.tar.gz vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.zip | |
Add syntax files from upstream vim repository
Diffstat (limited to 'syntax/yacc.vim')
| -rw-r--r-- | syntax/yacc.vim | 123 | 
1 files changed, 123 insertions, 0 deletions
| diff --git a/syntax/yacc.vim b/syntax/yacc.vim new file mode 100644 index 00000000..052995d3 --- /dev/null +++ b/syntax/yacc.vim @@ -0,0 +1,123 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim syntax file +" Language:	Yacc +" Maintainer:	Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz> +" Last Change:	Aug 31, 2016 +" Version:	15 +" URL:	http://www.drchip.org/astronaut/vim/index.html#SYNTAX_YACC +" +" Options: {{{1 +"   g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C + +" --------------------------------------------------------------------- +" this version of syntax/yacc.vim requires 6.0 or later +if exists("b:current_syntax") + syntax clear +endif + +" --------------------------------------------------------------------- +"  Folding Support {{{1 +if has("folding") + com! -nargs=+ SynFold	<args> fold +else + com! -nargs=+ SynFold	<args> +endif + +" --------------------------------------------------------------------- +" Read the C syntax to start with {{{1 +" Read the C/C++ syntax to start with +let s:Cpath= fnameescape(expand("<sfile>:p:h").(exists("g:yacc_uses_cpp")? "/cpp.vim" : "/c.vim")) +if !filereadable(s:Cpath) + for s:Cpath in split(globpath(&rtp,(exists("g:yacc_uses_cpp")? "syntax/cpp.vim" : "syntax/c.vim")),"\n") +  if filereadable(fnameescape(s:Cpath)) +   let s:Cpath= fnameescape(s:Cpath) +   break +  endif + endfor +endif +exe "syn include @yaccCode ".s:Cpath + +" --------------------------------------------------------------------- +"  Yacc Clusters: {{{1 +syn cluster yaccInitCluster	contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption +syn cluster yaccRulesCluster	contains=yaccNonterminal,yaccString,yaccComment + +" --------------------------------------------------------------------- +"  Yacc Sections: {{{1 +SynFold syn	region	yaccInit	start='.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep	end='^%%$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty contained +SynFold syn	region	yaccInit2      start='\%^.'ms=s-1,rs=s-1	matchgroup=yaccSectionSep	end='^%%$'me=e-2,re=e-2	contains=@yaccInitCluster	nextgroup=yaccRules	skipwhite skipempty +SynFold syn	region	yaccHeader2	matchgroup=yaccSep	start="^\s*\zs%{"	end="^\s*%}"		contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty contained +SynFold syn	region	yaccHeader	matchgroup=yaccSep	start="^\s*\zs%{"	end="^\s*%}"		contains=@yaccCode	nextgroup=yaccInit	skipwhite skipempty +SynFold syn	region	yaccRules	matchgroup=yaccSectionSep	start='^%%$'		end='^%%$'me=e-2,re=e-2	contains=@yaccRulesCluster	nextgroup=yaccEndCode	skipwhite skipempty contained +SynFold syn	region	yaccEndCode	matchgroup=yaccSectionSep	start='^%%$'		end='\%$'		contains=@yaccCode	contained + +" --------------------------------------------------------------------- +" Yacc Commands: {{{1 +syn	match	yaccDefines	'^%define\s\+.*$' +syn	match	yaccParseParam	'%\(parse\|lex\)-param\>'		skipwhite	nextgroup=yaccParseParamStr +syn	match	yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>' +syn	region	yaccParseParamStr	contained matchgroup=Delimiter	start='{'	end='}'	contains=cStructure + +syn	match	yaccDelim	"[:|]"	contained +syn	match	yaccOper	"@\d\+"	contained + +syn	match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"	contained +syn	match	yaccKey	"\s%\(prec\|expect\)\>"	contained +syn	match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"	contained +syn	keyword	yaccKeyActn	yyerrok yyclearin	contained + +syn	match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion	contained +SynFold syn	region	yaccUnion	matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode	contained +syn	match	yaccBrkt	"[<>]"	contained +syn	match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt	contained + +SynFold 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 +syn	region	yaccComment	start="/\*"	end="\*/" +syn	match	yaccString	"'[^']*'"	contained + + +" --------------------------------------------------------------------- +" I'd really like to highlight just the outer {}.  Any suggestions??? {{{1 +syn	match	yaccCurlyError	"[{}]" +SynFold syn	region	yaccAction	matchgroup=yaccCurly start="{" end="}" 	contains=@yaccCode,yaccVar		contained +syn	match	yaccVar	'\$\d\+\|\$\$\|\$<\I\i*>\$\|\$<\I\i*>\d\+'	containedin=cParen,cPreProc,cMulti	contained + +" --------------------------------------------------------------------- +" Yacc synchronization: {{{1 +syn sync fromstart + +" --------------------------------------------------------------------- +" Define the default highlighting. {{{1 +if !exists("skip_yacc_syn_inits") +  hi def link yaccBrkt	yaccStmt +  hi def link yaccComment	Comment +  hi def link yaccCurly	Delimiter +  hi def link yaccCurlyError	Error +  hi def link yaccDefines	cDefine +  hi def link yaccDelim	Delimiter +  hi def link yaccKeyActn	Special +  hi def link yaccKey	yaccStmt +  hi def link yaccNonterminal	Function +  hi def link yaccOper	yaccStmt +  hi def link yaccParseOption	cDefine +  hi def link yaccParseParam	yaccParseOption +  hi def link yaccSectionSep	Todo +  hi def link yaccSep	Delimiter +  hi def link yaccStmt	Statement +  hi def link yaccString	String +  hi def link yaccType	Type +  hi def link yaccUnionStart	yaccKey +  hi def link yaccVar	Special +endif + +" --------------------------------------------------------------------- +"  Cleanup: {{{1 +delcommand SynFold +let b:current_syntax = "yacc" + +" --------------------------------------------------------------------- +"  Modelines: {{{1 +" vim: ts=15 fdm=marker + +endif | 
