3
3
" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
4
" Last Change: Jan 09, 2008
4
" Last Change: Oct 21, 2008
6
6
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
9
9
" g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
10
" g:yacc_minlines : see :help :he syn-sync-minlines -- default 50
11
" g:yacc_maxlines : see :help :he syn-sync-maxlines -- default 200
13
11
" ---------------------------------------------------------------------
14
" For version 5.x: Clear all syntax items {{{1
15
" For version 6.x: Quit when a syntax file was already loaded
12
" this version of syntax/yacc.vim requires 6.0 or later
18
elseif exists("b:current_syntax")
16
if exists("b:current_syntax")
20
" ---------------------------------------------------------------------
21
" Folding Support {{{1
23
com! -nargs=+ HiFold <args> fold
25
com! -nargs=+ HiFold <args>
22
28
" ---------------------------------------------------------------------
23
29
" Read the C syntax to start with {{{1
25
if exists("g:yacc_uses_cpp")
26
runtime! syntax/cpp.vim
30
elseif exists("g:yacc_uses_cpp")
31
so <sfile>:p:h/cpp.vim
30
if exists("g:yacc_uses_cpp")
31
syn include @yaccCode <sfile>:p:h/cpp.vim
33
syn include @yaccCode <sfile>:p:h/c.vim
36
36
" ---------------------------------------------------------------------
38
syn cluster yaccActionGroup contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
39
syn cluster yaccUnionGroup contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
41
" ---------------------------------------------------------------------
43
syn match yaccDelim "^\s*[:|;]"
44
syn match yaccOper "@\d\+"
46
syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
47
syn match yaccKey "\s%\(prec\|expect\)\>"
48
syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
49
syn keyword yaccKeyActn yyerrok yyclearin
51
syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion
52
syn region yaccUnion contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
53
syn region yaccUnionCurly contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
54
syn match yaccBrkt contained "[<>]"
55
syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt
56
syn match yaccDefinition "^[A-Za-z][A-Za-z0-9_]*\_s*:"
58
" ---------------------------------------------------------------------
59
" special Yacc separators {{{1
60
syn match yaccSectionSep "^[ \t]*%%"
61
syn match yaccSep "^[ \t]*%{"
62
syn match yaccSep "^[ \t]*%}"
38
syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment
39
syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString
41
" ---------------------------------------------------------------------
43
HiFold 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
44
HiFold 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
45
HiFold syn region yaccHeader2 matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty contained
46
HiFold syn region yaccHeader matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty
47
HiFold syn region yaccRules matchgroup=yaccSectionSep start='^%%$' end='^%%$'me=e-2,re=e-2 contains=@yaccRulesCluster nextgroup=yaccEndCode skipwhite skipempty contained
48
HiFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%$' end='\%$' contains=@yaccCode contained
50
" ---------------------------------------------------------------------
52
syn match yaccDelim "[:|]" contained
53
syn match yaccOper "@\d\+" contained
55
syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>" contained
56
syn match yaccKey "\s%\(prec\|expect\)\>" contained
57
syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+" contained
58
syn keyword yaccKeyActn yyerrok yyclearin contained
60
syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion contained
61
HiFold syn region yaccUnion matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode contained
62
syn match yaccBrkt "[<>]" contained
63
syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt contained
65
HiFold 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
66
syn region yaccComment start="/\*" end="\*/"
67
syn match yaccString "'[^']*'" contained
64
70
" ---------------------------------------------------------------------
65
71
" I'd really like to highlight just the outer {}. Any suggestions??? {{{1
66
syn match yaccCurlyError "[{}]"
67
syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
72
syn match yaccCurlyError "[{}]"
73
HiFold syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=@yaccCode contained
69
75
" ---------------------------------------------------------------------
70
76
" Yacc synchronization: {{{1
71
if exists("g:yacc_maxlines")
72
exe "syn sync maxlines=".g:yacc_maxlines
76
if exists("g:yacc_minlines")
77
exe "syn sync minlines=".g:yacc_minlines
82
79
" ---------------------------------------------------------------------
83
80
" Define the default highlighting. {{{1
84
" For version 5.7 and earlier: only when not done already
85
" For version 5.8 and later: only when an item doesn't have highlighting yet
86
if version >= 508 || !exists("did_yacc_syn_inits")
88
let did_yacchdl_syn_inits = 1
89
command -nargs=+ HiLink hi link <args>
91
command -nargs=+ HiLink hi def link <args>
81
if !exists("did_yacc_syn_inits")
82
command -nargs=+ HiLink hi def link <args>
94
84
" Internal yacc highlighting links {{{2
95
85
HiLink yaccBrkt yaccStmt