xref: /vim-8.2.3635/runtime/syntax/aflex.vim (revision 89bcfda6)
1
2" Vim syntax file
3" Language:	AfLex (from Lex syntax file)
4" Maintainer:	Mathieu Clabaut <[email protected]>
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" quit when a syntax file was already loaded
11if exists("b:current_syntax")
12   finish
13endif
14
15" Read the Ada syntax to start with
16runtime! syntax/ada.vim
17unlet b:current_syntax
18
19
20" --- AfLex stuff ---
21
22"I'd prefer to use aflex.* , but it doesn't handle forward definitions yet
23syn 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
24syn 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
25
26" Abbreviations Section
27syn region aflexAbbrvBlock	start="^\([a-zA-Z_]\+\t\|%{\)" end="^%%$"me=e-2	skipnl	nextgroup=aflexPatBlock contains=aflexAbbrv,aflexInclude,aflexAbbrvComment
28syn match  aflexAbbrv		"^\I\i*\s"me=e-1			skipwhite	contained nextgroup=aflexAbbrvRegExp
29syn match  aflexAbbrv		"^%[sx]"					contained
30syn match  aflexAbbrvRegExp	"\s\S.*$"lc=1				contained nextgroup=aflexAbbrv,aflexInclude
31syn region aflexInclude	matchgroup=aflexSep	start="^%{" end="%}"	contained	contains=ALLBUT,@aflexListGroup
32syn region aflexAbbrvComment	start="^\s\+/\*"	end="\*/"
33
34"%% : Patterns {Actions}
35syn region aflexPatBlock	matchgroup=Todo	start="^%%$" matchgroup=Todo end="^%%$"	skipnl skipwhite contains=aflexPat,aflexPatTag,aflexPatComment
36syn region aflexPat		start=+\S+ skip="\\\\\|\\."	end="\s"me=e-1	contained nextgroup=aflexMorePat,aflexPatSep contains=aflexPatString,aflexSlashQuote,aflexBrace
37syn region aflexBrace	start="\[" skip=+\\\\\|\\+		end="]"		contained
38syn region aflexPatString	matchgroup=String start=+"+	skip=+\\\\\|\\"+	matchgroup=String end=+"+	contained
39syn match  aflexPatTag	"^<\I\i*\(,\I\i*\)*>*"			contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep
40syn match  aflexPatTag	+^<\I\i*\(,\I\i*\)*>*\(\\\\\)*\\"+		contained nextgroup=aflexPat,aflexPatTag,aflexMorePat,aflexPatSep
41syn region aflexPatComment	start="^\s*/\*" end="\*/"		skipnl	contained contains=cTodo nextgroup=aflexPatComment,aflexPat,aflexPatString,aflexPatTag
42syn match  aflexPatCodeLine	".*$"					contained contains=ALLBUT,@aflexListGroup
43syn match  aflexMorePat	"\s*|\s*$"			skipnl	contained nextgroup=aflexPat,aflexPatTag,aflexPatComment
44syn match  aflexPatSep	"\s\+"					contained nextgroup=aflexMorePat,aflexPatCode,aflexPatCodeLine
45syn match  aflexSlashQuote	+\(\\\\\)*\\"+				contained
46syn region aflexPatCode matchgroup=Delimiter start="{" matchgroup=Delimiter end="}"	skipnl contained contains=ALLBUT,@aflexListPatCodeGroup
47
48syn keyword aflexCFunctions	BEGIN	input	unput	woutput	yyleng	yylook	yytext
49syn keyword aflexCFunctions	ECHO	output	winput	wunput	yyless	yymore	yywrap
50
51" <c.vim> includes several ALLBUTs; these have to be treated so as to exclude aflex* groups
52syn cluster cParenGroup	add=aflex.*
53syn cluster cDefineGroup	add=aflex.*
54syn cluster cPreProcGroup	add=aflex.*
55syn cluster cMultiGroup	add=aflex.*
56
57" Synchronization
58syn sync clear
59syn sync minlines=300
60syn sync match aflexSyncPat	grouphere  aflexPatBlock	"^%[a-zA-Z]"
61syn sync match aflexSyncPat	groupthere aflexPatBlock	"^<$"
62syn sync match aflexSyncPat	groupthere aflexPatBlock	"^%%$"
63
64" Define the default highlighting.
65" Only when an item doesn't have highlighting yet
66command -nargs=+ HiLink hi def link <args>
67HiLink	aflexSlashQuote	aflexPat
68HiLink	aflexBrace		aflexPat
69HiLink aflexAbbrvComment	aflexPatComment
70
71HiLink	aflexAbbrv		SpecialChar
72HiLink	aflexAbbrvRegExp	Macro
73HiLink	aflexCFunctions	Function
74HiLink	aflexMorePat	SpecialChar
75HiLink	aflexPat		Function
76HiLink	aflexPatComment	Comment
77HiLink	aflexPatString	Function
78HiLink	aflexPatTag		Special
79HiLink	aflexSep		Delimiter
80delcommand HiLink
81
82let b:current_syntax = "aflex"
83
84" vim:ts=10
85