blob: 592c98e4f3051705770cc32543ac64eb8bc4b75c [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001
2" Vim syntax file
3" Language: AfLex (from Lex syntax file)
4" Maintainer: Mathieu Clabaut <mathieu.clabaut@free.fr>
5" LastChange: 02 May 2001
6" Original: Lex, maintained by Dr. Charles E. Campbell, Jr.
7" Comment: Replaced sourcing c.vim file by ada.vim and rename lex*
8" in aflex*
9
10" For version 5.x: Clear all syntax items
11" For version 6.x: Quit when a syntax file was already loaded
12if version < 600
13 syntax clear
14elseif exists("b:current_syntax")
15 finish
16endif
17
18" Read the Ada syntax to start with
19if version < 600
20 so <sfile>:p:h/ada.vim
21else
22 runtime! syntax/ada.vim
23 unlet b:current_syntax
24endif
25
26
27" --- AfLex stuff ---
28
29"I'd prefer to use aflex.* , but it doesn't handle forward definitions yet
30syn cluster aflexListGroup contains=aflexAbbrvBlock,aflexAbbrv,aflexAbbrv,aflexAbbrvRegExp,aflexInclude,aflexPatBlock,aflexPat,aflexBrace,aflexPatString,aflexPatTag,aflexPatTag,aflexPatComment,aflexPatCodeLine,aflexMorePat,aflexPatSep,aflexSlashQuote,aflexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2
31syn cluster aflexListPatCodeGroup contains=aflexAbbrvBlock,aflexAbbrv,aflexAbbrv,aflexAbbrvRegExp,aflexInclude,aflexPatBlock,aflexPat,aflexBrace,aflexPatTag,aflexPatTag,aflexPatComment,aflexPatCodeLine,aflexMorePat,aflexPatSep,aflexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2
32
33" Abbreviations Section
34syn region aflexAbbrvBlock start="^\([a-zA-Z_]\+\t\|%{\)" end="^%%$"me=e-2 skipnl nextgroup=aflexPatBlock contains=aflexAbbrv,aflexInclude,aflexAbbrvComment
35syn match aflexAbbrv "^\I\i*\s"me=e-1 skipwhite contained nextgroup=aflexAbbrvRegExp
36syn match aflexAbbrv "^%[sx]" contained
37syn match aflexAbbrvRegExp "\s\S.*$"lc=1 contained nextgroup=aflexAbbrv,aflexInclude
38syn region aflexInclude matchgroup=aflexSep start="^%{" end="%}" contained contains=ALLBUT,@aflexListGroup
39syn region aflexAbbrvComment start="^\s\+/\*" end="\*/"
40
41"%% : Patterns {Actions}
42syn region aflexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=aflexPat,aflexPatTag,aflexPatComment
43syn region aflexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=aflexMorePat,aflexPatSep contains=aflexPatString,aflexSlashQuote,aflexBrace
44syn region aflexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
45syn region aflexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
46syn match aflexPatTag "^<\I\i*\(,\I\i*\)*>*" contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep
47syn match aflexPatTag +^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+ contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep
48syn region aflexPatComment start="^\s*/\*" end="\*/" skipnl contained contains=cTodo nextgroup=aflexPatComment,aflexPat,aflexPatString,aflexPatTag
49syn match aflexPatCodeLine ".*$" contained contains=ALLBUT,@aflexListGroup
50syn match aflexMorePat "\s*|\s*$" skipnl contained nextgroup=aflexPat,aflexPatTag,aflexPatComment
51syn match aflexPatSep "\s\+" contained nextgroup=aflexMorePat,aflexPatCode,aflexPatCodeLine
52syn match aflexSlashQuote +\(\\\\\)*\\"+ contained
53syn region aflexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}" skipnl contained contains=ALLBUT,@aflexListPatCodeGroup
54
55syn keyword aflexCFunctions BEGIN input unput woutput yyleng yylook yytext
56syn keyword aflexCFunctions ECHO output winput wunput yyless yymore yywrap
57
58" <c.vim> includes several ALLBUTs; these have to be treated so as to exclude aflex* groups
59syn cluster cParenGroup add=aflex.*
60syn cluster cDefineGroup add=aflex.*
61syn cluster cPreProcGroup add=aflex.*
62syn cluster cMultiGroup add=aflex.*
63
64" Synchronization
65syn sync clear
66syn sync minlines=300
67syn sync match aflexSyncPat grouphere aflexPatBlock "^%[a-zA-Z]"
68syn sync match aflexSyncPat groupthere aflexPatBlock "^<$"
69syn sync match aflexSyncPat groupthere aflexPatBlock "^%%$"
70
71" Define the default highlighting.
72" For version 5.7 and earlier: only when not done already
73" For version 5.8 and later: only when an item doesn't have highlighting yet
74
75if version >= 508 || !exists("did_aflex_syntax_inits")
76 if version < 508
77 let did_aflex_syntax_inits = 1
78 command -nargs=+ HiLink hi link <args>
79 else
80 command -nargs=+ HiLink hi def link <args>
81 endif
82 HiLink aflexSlashQuote aflexPat
83 HiLink aflexBrace aflexPat
84 HiLink aflexAbbrvComment aflexPatComment
85
86 HiLink aflexAbbrv SpecialChar
87 HiLink aflexAbbrvRegExp Macro
88 HiLink aflexCFunctions Function
89 HiLink aflexMorePat SpecialChar
90 HiLink aflexPat Function
91 HiLink aflexPatComment Comment
92 HiLink aflexPatString Function
93 HiLink aflexPatTag Special
94 HiLink aflexSep Delimiter
95 delcommand HiLink
96endif
97
98let b:current_syntax = "aflex"
99
100" vim:ts=10