comparison runtime/syntax/yacc.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children e170173ecb68
comparison
equal deleted inserted replaced
-1:000000000000 0:76efa0be13f1
1 " Vim syntax file
2 " Language: Yacc
3 " Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
4 " Last Change: Feb 22, 2006
5 " Version: 4
6 " URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
7 "
8 " Option:
9 " g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
10
11 " For version 5.x: Clear all syntax items
12 " For version 6.x: Quit when a syntax file was already loaded
13 if version < 600
14 syntax clear
15 elseif exists("b:current_syntax")
16 finish
17 endif
18
19 " Read the C syntax to start with
20 if version >= 600
21 if exists("g:yacc_uses_cpp")
22 runtime! syntax/cpp.vim
23 else
24 runtime! syntax/c.vim
25 endif
26 elseif exists("g:yacc_uses_cpp")
27 so <sfile>:p:h/cpp.vim
28 else
29 so <sfile>:p:h/c.vim
30 endif
31
32 " Clusters
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
35
36 " Yacc stuff
37 syn match yaccDelim "^\s*[:|;]"
38 syn match yaccOper "@\d\+"
39
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
44
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*:"
51
52 " special Yacc separators
53 syn match yaccSectionSep "^[ \t]*%%"
54 syn match yaccSep "^[ \t]*%{"
55 syn match yaccSep "^[ \t]*%}"
56
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
60
61
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")
66 if version < 508
67 let did_yacchdl_syn_inits = 1
68 command -nargs=+ HiLink hi link <args>
69 else
70 command -nargs=+ HiLink hi def link <args>
71 endif
72
73 " Internal yacc highlighting links
74 HiLink yaccBrkt yaccStmt
75 HiLink yaccKey yaccStmt
76 HiLink yaccOper yaccStmt
77 HiLink yaccUnionStart yaccKey
78
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
88 HiLink yaccType Type
89
90 " since Bram doesn't like my Delimiter :|
91 HiLink Delimiter Type
92
93 delcommand HiLink
94 endif
95
96 let b:current_syntax = "yacc"
97
98 " vim: ts=15