3 " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
4 " Last Change: Feb 22, 2006
6 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
9 " g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
11 " For version 5.x: Clear all syntax items
12 " For version 6.x: Quit when a syntax file was already loaded
15 elseif exists("b:current_syntax")
19 " Read the C syntax to start with
21 if exists("g:yacc_uses_cpp")
22 runtime! syntax/cpp.vim
26 elseif exists("g:yacc_uses_cpp")
27 so <sfile>:p:h/cpp.vim
33 syn cluster yaccActionGroup contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
34 syn cluster yaccUnionGroup contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
37 syn match yaccDelim "^\s*[:|;]"
38 syn match yaccOper "@\d\+"
40 syn match yaccKey "^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
41 syn match yaccKey "\s%\(prec\|expect\)\>"
42 syn match yaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
43 syn keyword yaccKeyActn yyerrok yyclearin
45 syn match yaccUnionStart "^%union" skipwhite skipnl nextgroup=yaccUnion
46 syn region yaccUnion contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
47 syn region yaccUnionCurly contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
48 syn match yaccBrkt contained "[<>]"
49 syn match yaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=yaccBrkt
50 syn match yaccDefinition "^[A-Za-z][A-Za-z0-9_]*\_s*:"
52 " special Yacc separators
53 syn match yaccSectionSep "^[ \t]*%%"
54 syn match yaccSep "^[ \t]*%{"
55 syn match yaccSep "^[ \t]*%}"
57 " I'd really like to highlight just the outer {}. Any suggestions???
58 syn match yaccCurlyError "[{}]"
59 syn region yaccAction matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
62 " Define the default highlighting.
63 " For version 5.7 and earlier: only when not done already
64 " For version 5.8 and later: only when an item doesn't have highlighting yet
65 if version >= 508 || !exists("did_yacc_syn_inits")
67 let did_yacchdl_syn_inits = 1
68 command -nargs=+ HiLink hi link <args>
70 command -nargs=+ HiLink hi def link <args>
73 " Internal yacc highlighting links
74 HiLink yaccBrkt yaccStmt
75 HiLink yaccKey yaccStmt
76 HiLink yaccOper yaccStmt
77 HiLink yaccUnionStart yaccKey
79 " External yacc highlighting links
80 HiLink yaccCurly Delimiter
81 HiLink yaccCurlyError Error
82 HiLink yaccDefinition Function
83 HiLink yaccDelim Function
84 HiLink yaccKeyActn Special
85 HiLink yaccSectionSep Todo
86 HiLink yaccSep Delimiter
87 HiLink yaccStmt Statement
90 " since Bram doesn't like my Delimiter :|
96 let b:current_syntax = "yacc"