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

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children e170173ecb68
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/runtime/syntax/yacc.vim	Sat Nov 10 15:07:22 2007 +0900
@@ -0,0 +1,98 @@
+" Vim syntax file
+" Language:	Yacc
+" Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+" Last Change:	Feb 22, 2006
+" Version:	4
+" URL:	http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
+"
+" Option:
+"   g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Read the C syntax to start with
+if version >= 600
+  if exists("g:yacc_uses_cpp")
+    runtime! syntax/cpp.vim
+  else
+    runtime! syntax/c.vim
+  endif
+elseif exists("g:yacc_uses_cpp")
+  so <sfile>:p:h/cpp.vim
+else
+  so <sfile>:p:h/c.vim
+endif
+
+" Clusters
+syn cluster	yaccActionGroup	contains=yaccDelim,cInParen,cTodo,cIncluded,yaccDelim,yaccCurlyError,yaccUnionCurly,yaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCommentStartError,cParenError
+syn cluster	yaccUnionGroup	contains=yaccKey,cComment,yaccCurly,cType,cStructure,cStorageClass,yaccUnionCurly
+
+" Yacc stuff
+syn match	yaccDelim	"^\s*[:|;]"
+syn match	yaccOper	"@\d\+"
+
+syn match	yaccKey	"^\s*%\(token\|type\|left\|right\|start\|ident\|nonassoc\)\>"
+syn match	yaccKey	"\s%\(prec\|expect\)\>"
+syn match	yaccKey	"\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
+syn keyword	yaccKeyActn	yyerrok yyclearin
+
+syn match	yaccUnionStart	"^%union"	skipwhite skipnl nextgroup=yaccUnion
+syn region	yaccUnion	contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}"	contains=@yaccUnionGroup
+syn region	yaccUnionCurly	contained matchgroup=yaccCurly start="{" matchgroup=yaccCurly end="}" contains=@yaccUnionGroup
+syn match	yaccBrkt	contained "[<>]"
+syn match	yaccType	"<[a-zA-Z_][a-zA-Z0-9_]*>"	contains=yaccBrkt
+syn match	yaccDefinition	"^[A-Za-z][A-Za-z0-9_]*\_s*:"
+
+" special Yacc separators
+syn match	yaccSectionSep	"^[ \t]*%%"
+syn match	yaccSep	"^[ \t]*%{"
+syn match	yaccSep	"^[ \t]*%}"
+
+" I'd really like to highlight just the outer {}.  Any suggestions???
+syn match	yaccCurlyError	"[{}]"
+syn region	yaccAction	matchgroup=yaccCurly start="{" end="}" contains=ALLBUT,@yaccActionGroup
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_yacc_syn_inits")
+  if version < 508
+    let did_yacchdl_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  " Internal yacc highlighting links
+  HiLink yaccBrkt	yaccStmt
+  HiLink yaccKey	yaccStmt
+  HiLink yaccOper	yaccStmt
+  HiLink yaccUnionStart	yaccKey
+
+  " External yacc highlighting links
+  HiLink yaccCurly	Delimiter
+  HiLink yaccCurlyError	Error
+  HiLink yaccDefinition	Function
+  HiLink yaccDelim	Function
+  HiLink yaccKeyActn	Special
+  HiLink yaccSectionSep	Todo
+  HiLink yaccSep	Delimiter
+  HiLink yaccStmt	Statement
+  HiLink yaccType	Type
+
+  " since Bram doesn't like my Delimiter :|
+  HiLink Delimiter	Type
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "yacc"
+
+" vim: ts=15