summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/ayacc.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/ayacc.vim')
-rw-r--r--runtime/syntax/ayacc.vim75
1 files changed, 75 insertions, 0 deletions
diff --git a/runtime/syntax/ayacc.vim b/runtime/syntax/ayacc.vim
new file mode 100644
index 0000000..6fb6aec
--- /dev/null
+++ b/runtime/syntax/ayacc.vim
@@ -0,0 +1,75 @@
+" Vim syntax file
+" Language: AYacc
+" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
+" LastChange: 2011 Dec 25
+" Original: Yacc, maintained by Dr. Charles E. Campbell, Jr.
+" Comment: Replaced sourcing c.vim file by ada.vim and rename yacc*
+" in ayacc*
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" Read the Ada syntax to start with
+runtime! syntax/ada.vim
+unlet b:current_syntax
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Clusters
+syn cluster ayaccActionGroup contains=ayaccDelim,cInParen,cTodo,cIncluded,ayaccDelim,ayaccCurlyError,ayaccUnionCurly,ayaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError
+syn cluster ayaccUnionGroup contains=ayaccKey,cComment,ayaccCurly,cType,cStructure,cStorageClass,ayaccUnionCurly
+
+" Yacc stuff
+syn match ayaccDelim "^[ \t]*[:|;]"
+syn match ayaccOper "@\d\+"
+
+syn match ayaccKey "^[ \t]*%\(token\|type\|left\|right\|start\|ident\)\>"
+syn match ayaccKey "[ \t]%\(prec\|expect\|nonassoc\)\>"
+syn match ayaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
+syn keyword ayaccKeyActn yyerrok yyclearin
+
+syn match ayaccUnionStart "^%union" skipwhite skipnl nextgroup=ayaccUnion
+syn region ayaccUnion contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
+syn region ayaccUnionCurly contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
+syn match ayaccBrkt contained "[<>]"
+syn match ayaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=ayaccBrkt
+syn match ayaccDefinition "^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
+
+" special Yacc separators
+syn match ayaccSectionSep "^[ \t]*%%"
+syn match ayaccSep "^[ \t]*%{"
+syn match ayaccSep "^[ \t]*%}"
+
+" I'd really like to highlight just the outer {}. Any suggestions???
+syn match ayaccCurlyError "[{}]"
+syn region ayaccAction matchgroup=ayaccCurly start="{" end="}" contains=ALLBUT,@ayaccActionGroup
+
+
+" Internal ayacc highlighting links
+hi def link ayaccBrkt ayaccStmt
+hi def link ayaccKey ayaccStmt
+hi def link ayaccOper ayaccStmt
+hi def link ayaccUnionStart ayaccKey
+
+" External ayacc highlighting links
+hi def link ayaccCurly Delimiter
+hi def link ayaccCurlyError Error
+hi def link ayaccDefinition Function
+hi def link ayaccDelim Function
+hi def link ayaccKeyActn Special
+hi def link ayaccSectionSep Todo
+hi def link ayaccSep Delimiter
+hi def link ayaccStmt Statement
+hi def link ayaccType Type
+
+" since Bram doesn't like my Delimiter :|
+hi def link Delimiter Type
+
+let b:current_syntax = "ayacc"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=15