blob: 9f5ec566ee25e8decba106f640dbf8678bbe5253 [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 Moolenaar89bcfda2016-08-30 23:26:57 +020050command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000051
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020052" Internal ayacc highlighting links
53HiLink ayaccBrkt ayaccStmt
54HiLink ayaccKey ayaccStmt
55HiLink ayaccOper ayaccStmt
56HiLink ayaccUnionStart ayaccKey
Bram Moolenaar071d4272004-06-13 20:20:40 +000057
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020058" External ayacc highlighting links
59HiLink ayaccCurly Delimiter
60HiLink ayaccCurlyError Error
61HiLink ayaccDefinition Function
62HiLink ayaccDelim Function
63HiLink ayaccKeyActn Special
64HiLink ayaccSectionSep Todo
65HiLink ayaccSep Delimiter
66HiLink ayaccStmt Statement
67HiLink ayaccType Type
Bram Moolenaar071d4272004-06-13 20:20:40 +000068
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020069" since Bram doesn't like my Delimiter :|
70HiLink Delimiter Type
71delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +000072
73let b:current_syntax = "ayacc"
74
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010075let &cpo = s:cpo_save
76unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +000077" vim: ts=15