diff runtime/syntax/eiffel.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children ba708ee8d69d
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/eiffel.vim
@@ -0,0 +1,196 @@
+" Eiffel syntax file
+" Language:	Eiffel
+" Maintainer:	Reimer Behrends <behrends@cse.msu.edu>
+"		With much input from Jocelyn Fiat <fiat@eiffel.com>
+" See http://www.cse.msu.edu/~behrends/vim/ for the most current version.
+" Last Change:	2001 May 09
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+" Option handling
+
+if exists("eiffel_ignore_case")
+  syn case ignore
+else
+  syn case match
+  if exists("eiffel_pedantic") || exists("eiffel_strict")
+    syn keyword eiffelError	current void result precursor none
+    syn keyword eiffelError	CURRENT VOID RESULT PRECURSOR None
+    syn keyword eiffelError	TRUE FALSE
+  endif
+  if exists("eiffel_pedantic")
+    syn keyword eiffelError	true false
+    syn match eiffelError	"\<[a-z_]\+[A-Z][a-zA_Z_]*\>"
+    syn match eiffelError	"\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>"
+  endif
+  if exists("eiffel_lower_case_predef")
+    syn keyword eiffelPredefined current void result precursor
+  endif
+endif
+
+if exists("eiffel_hex_constants")
+  syn match  eiffelNumber	"\d[0-9a-fA-F]*[xX]"
+endif
+
+" Keyword definitions
+
+syn keyword eiffelTopStruct	indexing feature creation inherit
+syn match   eiffelTopStruct	"\<class\>"
+syn match   eiffelKeyword	"\<end\>"
+syn match   eiffelTopStruct	"^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName
+syn match   eiffelBrackets	"[[\]]"
+syn match eiffelBracketError	"\]"
+syn region eiffelGeneric	transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct
+if exists("eiffel_ise")
+  syn match   eiffelCreate	"\<create\>"
+  syn match   eiffelTopStruct	contained "\<create\>"
+  syn match   eiffelGenericCreate  contained "\<create\>"
+  syn match   eiffelTopStruct	"^create\>"
+  syn region  eiffelGenericDecl	transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets
+  syn region  eiffelClassHeader	start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets
+endif
+syn keyword eiffelDeclaration	is do once deferred unique local
+syn keyword eiffelDeclaration	Unique
+syn keyword eiffelProperty	expanded obsolete separate frozen
+syn keyword eiffelProperty	prefix infix
+syn keyword eiffelInheritClause	rename redefine undefine select export as
+syn keyword eiffelAll		all
+syn keyword eiffelKeyword	external alias
+syn keyword eiffelStatement	if else elseif inspect
+syn keyword eiffelStatement	when then
+syn match   eiffelAssertion	"\<require\(\s\+else\)\=\>"
+syn match   eiffelAssertion	"\<ensure\(\s\+then\)\=\>"
+syn keyword eiffelAssertion	check
+syn keyword eiffelDebug		debug
+syn keyword eiffelStatement	from until loop
+syn keyword eiffelAssertion	variant
+syn match   eiffelAssertion	"\<invariant\>"
+syn match   eiffelTopStruct	"^invariant\>"
+syn keyword eiffelException	rescue retry
+
+syn keyword eiffelPredefined	Current Void Result Precursor
+
+" Operators
+syn match   eiffelOperator	"\<and\(\s\+then\)\=\>"
+syn match   eiffelOperator	"\<or\(\s\+else\)\=\>"
+syn keyword eiffelOperator	xor implies not
+syn keyword eiffelOperator	strip old
+syn keyword eiffelOperator	Strip
+syn match   eiffelOperator	"\$"
+syn match   eiffelCreation	"!"
+syn match   eiffelExport	"[{}]"
+syn match   eiffelArray		"<<"
+syn match   eiffelArray		">>"
+syn match   eiffelConstraint	"->"
+syn match   eiffelOperator	"[@#|&][^ \e\t\b%]*"
+
+" Special classes
+syn keyword eiffelAnchored	like
+syn keyword eiffelBitType	BIT
+
+" Constants
+if !exists("eiffel_pedantic")
+  syn keyword eiffelBool	true false
+endif
+syn keyword eiffelBool		True False
+syn region  eiffelString	start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError
+syn match   eiffelStringEscape	contained "%[^/]"
+syn match   eiffelStringEscape	contained "%/\d\+/"
+syn match   eiffelStringEscape	contained "^[ \t]*%"
+syn match   eiffelStringEscape	contained "%[ \t]*$"
+syn match   eiffelStringError	contained "%/[^0-9]"
+syn match   eiffelStringError	contained "%/\d\+[^0-9/]"
+syn match   eiffelBadConstant	"'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
+syn match   eiffelBadConstant	"''"
+syn match   eiffelCharacter	"'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape
+syn match   eiffelNumber	"-\=\<\d\+\(_\d\+\)*\>"
+syn match   eiffelNumber	"\<[01]\+[bB]\>"
+syn match   eiffelNumber	"-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
+syn match   eiffelNumber	"-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
+syn match   eiffelComment	"--.*" contains=eiffelTodo
+
+syn case match
+
+" Case sensitive stuff
+
+syn keyword eiffelTodo		contained TODO XXX FIXME
+syn match   eiffelClassName	"\<[A-Z][A-Z0-9_]*\>"
+
+" Catch mismatched parentheses
+syn match eiffelParenError	")"
+syn region eiffelParen		transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape
+
+" Should suffice for even very long strings and expressions
+syn sync lines=40
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_eiffel_syntax_inits")
+  if version < 508
+    let did_eiffel_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink eiffelKeyword		Statement
+  HiLink eiffelProperty		Statement
+  HiLink eiffelInheritClause	Statement
+  HiLink eiffelStatement	Statement
+  HiLink eiffelDeclaration	Statement
+  HiLink eiffelAssertion	Statement
+  HiLink eiffelDebug		Statement
+  HiLink eiffelException	Statement
+  HiLink eiffelGenericCreate	Statement
+
+
+  HiLink eiffelTopStruct	PreProc
+
+  HiLink eiffelAll		Special
+  HiLink eiffelAnchored		Special
+  HiLink eiffelBitType		Special
+
+
+  HiLink eiffelBool		Boolean
+  HiLink eiffelString		String
+  HiLink eiffelCharacter	Character
+  HiLink eiffelClassName	Type
+  HiLink eiffelNumber		Number
+
+  HiLink eiffelStringEscape	Special
+
+  HiLink eiffelOperator		Special
+  HiLink eiffelArray		Special
+  HiLink eiffelExport		Special
+  HiLink eiffelCreation		Special
+  HiLink eiffelBrackets		Special
+  HiLink eiffelGeneric		Special
+  HiLink eiffelGenericDecl	Special
+  HiLink eiffelConstraint	Special
+  HiLink eiffelCreate		Special
+
+  HiLink eiffelPredefined	Constant
+
+  HiLink eiffelComment		Comment
+
+  HiLink eiffelError		Error
+  HiLink eiffelBadConstant	Error
+  HiLink eiffelStringError	Error
+  HiLink eiffelParenError	Error
+  HiLink eiffelBracketError	Error
+
+  HiLink eiffelTodo		Todo
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "eiffel"
+
+" vim: ts=8