blob: 6fb6aec85d671f2853b98444efd918ca2e1611ec [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: AYacc
3" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
Bram Moolenaarb6b046b2011-12-30 13:11:27 +01004" LastChange: 2011 Dec 25
Bram Moolenaar071d4272004-06-13 20:20:40 +00005" Original: Yacc, maintained by Dr. Charles E. Campbell, Jr.
6" Comment: Replaced sourcing c.vim file by ada.vim and rename yacc*
7" in ayacc*
8
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02009" quit when a syntax file was already loaded
10if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000011 finish
12endif
13
14" Read the Ada syntax to start with
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020015runtime! syntax/ada.vim
16unlet b:current_syntax
Bram Moolenaar071d4272004-06-13 20:20:40 +000017
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010018let s:cpo_save = &cpo
19set cpo&vim
20
Bram Moolenaar071d4272004-06-13 20:20:40 +000021" Clusters
22syn cluster ayaccActionGroup contains=ayaccDelim,cInParen,cTodo,cIncluded,ayaccDelim,ayaccCurlyError,ayaccUnionCurly,ayaccUnion,cUserLabel,cOctalZero,cCppOut2,cCppSkip,cErrInBracket,cErrInParen,cOctalError
23syn cluster ayaccUnionGroup contains=ayaccKey,cComment,ayaccCurly,cType,cStructure,cStorageClass,ayaccUnionCurly
24
25" Yacc stuff
26syn match ayaccDelim "^[ \t]*[:|;]"
27syn match ayaccOper "@\d\+"
28
29syn match ayaccKey "^[ \t]*%\(token\|type\|left\|right\|start\|ident\)\>"
30syn match ayaccKey "[ \t]%\(prec\|expect\|nonassoc\)\>"
31syn match ayaccKey "\$\(<[a-zA-Z_][a-zA-Z_0-9]*>\)\=[\$0-9]\+"
32syn keyword ayaccKeyActn yyerrok yyclearin
33
34syn match ayaccUnionStart "^%union" skipwhite skipnl nextgroup=ayaccUnion
35syn region ayaccUnion contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
36syn region ayaccUnionCurly contained matchgroup=ayaccCurly start="{" matchgroup=ayaccCurly end="}" contains=@ayaccUnionGroup
37syn match ayaccBrkt contained "[<>]"
38syn match ayaccType "<[a-zA-Z_][a-zA-Z0-9_]*>" contains=ayaccBrkt
39syn match ayaccDefinition "^[A-Za-z][A-Za-z0-9_]*[ \t]*:"
40
41" special Yacc separators
42syn match ayaccSectionSep "^[ \t]*%%"
43syn match ayaccSep "^[ \t]*%{"
44syn match ayaccSep "^[ \t]*%}"
45
46" I'd really like to highlight just the outer {}. Any suggestions???
47syn match ayaccCurlyError "[{}]"
48syn region ayaccAction matchgroup=ayaccCurly start="{" end="}" contains=ALLBUT,@ayaccActionGroup
49
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020051" Internal ayacc highlighting links
Bram Moolenaarf37506f2016-08-31 22:22:10 +020052hi def link ayaccBrkt ayaccStmt
53hi def link ayaccKey ayaccStmt
54hi def link ayaccOper ayaccStmt
55hi def link ayaccUnionStart ayaccKey
Bram Moolenaar071d4272004-06-13 20:20:40 +000056
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020057" External ayacc highlighting links
Bram Moolenaarf37506f2016-08-31 22:22:10 +020058hi def link ayaccCurly Delimiter
59hi def link ayaccCurlyError Error
60hi def link ayaccDefinition Function
61hi def link ayaccDelim Function
62hi def link ayaccKeyActn Special
63hi def link ayaccSectionSep Todo
64hi def link ayaccSep Delimiter
65hi def link ayaccStmt Statement
66hi def link ayaccType Type
Bram Moolenaar071d4272004-06-13 20:20:40 +000067
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020068" since Bram doesn't like my Delimiter :|
Bram Moolenaarf37506f2016-08-31 22:22:10 +020069hi def link Delimiter Type
Bram Moolenaar071d4272004-06-13 20:20:40 +000070
71let b:current_syntax = "ayacc"
72
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010073let &cpo = s:cpo_save
74unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +000075" vim: ts=15