summaryrefslogtreecommitdiff
path: root/runtime/syntax/yacc.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/yacc.vim')
-rw-r--r--runtime/syntax/yacc.vim92
1 files changed, 45 insertions, 47 deletions
diff --git a/runtime/syntax/yacc.vim b/runtime/syntax/yacc.vim
index 4ddf07843..3da7ffc9f 100644
--- a/runtime/syntax/yacc.vim
+++ b/runtime/syntax/yacc.vim
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Yacc
-" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change: Aug 12, 2010
-" Version: 9
+" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
+" Last Change: Nov 14, 2012
+" Version: 10
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Options: {{{1
@@ -20,18 +20,24 @@ endif
" ---------------------------------------------------------------------
" Folding Support {{{1
if has("folding")
- com! -nargs=+ HiFold <args> fold
+ com! -nargs=+ SynFold <args> fold
else
- com! -nargs=+ HiFold <args>
+ com! -nargs=+ SynFold <args>
endif
" ---------------------------------------------------------------------
" Read the C syntax to start with {{{1
-if exists("g:yacc_uses_cpp")
- syn include @yaccCode <sfile>:p:h/cpp.vim
-else
- syn include @yaccCode <sfile>:p:h/c.vim
+" 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
@@ -40,12 +46,12 @@ syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString
" ---------------------------------------------------------------------
" Yacc Sections: {{{1
-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
-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
-HiFold syn region yaccHeader2 matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty contained
-HiFold syn region yaccHeader matchgroup=yaccSep start="^\s*\zs%{" end="^\s*%}" contains=@yaccCode nextgroup=yaccInit skipwhite skipempty
-HiFold syn region yaccRules matchgroup=yaccSectionSep start='^%%$' end='^%%$'me=e-2,re=e-2 contains=@yaccRulesCluster nextgroup=yaccEndCode skipwhite skipempty contained
-HiFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%$' end='\%$' contains=@yaccCode contained
+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
@@ -63,11 +69,11 @@ 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
-HiFold syn region yaccUnion matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccCode 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
-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
+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
@@ -75,7 +81,8 @@ syn match yaccString "'[^']*'" contained
" ---------------------------------------------------------------------
" I'd really like to highlight just the outer {}. Any suggestions??? {{{1
syn match yaccCurlyError "[{}]"
-HiFold syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=@yaccCode contained
+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
@@ -84,39 +91,30 @@ syn sync fromstart
" ---------------------------------------------------------------------
" Define the default highlighting. {{{1
if !exists("did_yacc_syn_inits")
- command -nargs=+ HiLink hi def link <args>
-
- " Internal yacc highlighting links {{{2
- HiLink yaccBrkt yaccStmt
- HiLink yaccKey yaccStmt
- HiLink yaccOper yaccStmt
- HiLink yaccUnionStart yaccKey
-
- " External yacc highlighting links {{{2
- HiLink yaccComment Comment
- HiLink yaccCurly Delimiter
- HiLink yaccCurlyError Error
- HiLink yaccDefines cDefine
- HiLink yaccParseParam yaccParseOption
- HiLink yaccParseOption cDefine
- HiLink yaccNonterminal Function
- HiLink yaccDelim Delimiter
- HiLink yaccKeyActn Special
- HiLink yaccSectionSep Todo
- HiLink yaccSep Delimiter
- HiLink yaccString String
- HiLink yaccStmt Statement
- HiLink yaccType Type
-
- " since Bram doesn't like my Delimiter :| {{{2
- HiLink Delimiter Type
-
- delcommand HiLink
+ 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 HiFold
+delcommand SynFold
let b:current_syntax = "yacc"
" ---------------------------------------------------------------------