" 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 loadedif version < 600 syntax clearelseif exists("b:current_syntax") finishendif" Option handlingif exists("eiffel_ignore_case") syn case ignoreelse 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 endifendifif exists("eiffel_hex_constants") syn match eiffelNumber "\d[0-9a-fA-F]*[xX]"endif" Keyword definitionssyn keyword eiffelTopStruct indexing feature creation inheritsyn match eiffelTopStruct "\<class\>"syn match eiffelKeyword "\<end\>"syn match eiffelTopStruct "^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassNamesyn match eiffelBrackets "[[\]]"syn match eiffelBracketError "\]"syn region eiffelGeneric transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStructif 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,eiffelBracketsendifsyn keyword eiffelDeclaration is do once deferred unique localsyn keyword eiffelDeclaration Uniquesyn keyword eiffelProperty expanded obsolete separate frozensyn keyword eiffelProperty prefix infixsyn keyword eiffelInheritClause rename redefine undefine select export assyn keyword eiffelAll allsyn keyword eiffelKeyword external aliassyn keyword eiffelStatement if else elseif inspectsyn keyword eiffelStatement when thensyn match eiffelAssertion "\<require\(\s\+else\)\=\>"syn match eiffelAssertion "\<ensure\(\s\+then\)\=\>"syn keyword eiffelAssertion checksyn keyword eiffelDebug debugsyn keyword eiffelStatement from until loopsyn keyword eiffelAssertion variantsyn match eiffelAssertion "\<invariant\>"syn match eiffelTopStruct "^invariant\>"syn keyword eiffelException rescue retrysyn keyword eiffelPredefined Current Void Result Precursor" Operatorssyn match eiffelOperator "\<and\(\s\+then\)\=\>"syn match eiffelOperator "\<or\(\s\+else\)\=\>"syn keyword eiffelOperator xor implies notsyn keyword eiffelOperator strip oldsyn keyword eiffelOperator Stripsyn match eiffelOperator "\$"syn match eiffelCreation "!"syn match eiffelExport "[{}]"syn match eiffelArray "<<"syn match eiffelArray ">>"syn match eiffelConstraint "->"syn match eiffelOperator "[@#|&][^ \e\t\b%]*"" Special classessyn keyword eiffelAnchored likesyn keyword eiffelBitType BIT" Constantsif !exists("eiffel_pedantic") syn keyword eiffelBool true falseendifsyn keyword eiffelBool True Falsesyn region eiffelString start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringErrorsyn 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=eiffelStringEscapesyn 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=eiffelTodosyn case match" Case sensitive stuffsyn keyword eiffelTodo contained TODO XXX FIXMEsyn match eiffelClassName "\<[A-Z][A-Z0-9_]*\>"" Catch mismatched parenthesessyn match eiffelParenError ")"syn region eiffelParen transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape" Should suffice for even very long strings and expressionssyn 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 yetif 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 HiLinkendiflet b:current_syntax = "eiffel"" vim: ts=8
" 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