home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / mac / vim55rt.sit / runtime / syntax / eiffel.vim < prev    next >
Encoding:
Text File  |  1999-09-25  |  6.3 KB  |  183 lines  |  [TEXT/VIM!]

  1. " Eiffel syntax file
  2. " Language:    Eiffel
  3. " Maintainer:    Reimer Behrends <behrends@cse.msu.edu>
  4. "               With much input from Jocelyn Fiat <fiat@eiffel.com>
  5. " See http://www.cse.msu.edu/~behrends/vim/ for the most current version.
  6. " Last change:    1999 Sep 19
  7.  
  8. " Remove any old syntax stuff hanging around
  9.  
  10. syn clear
  11.  
  12. " Option handling
  13.  
  14. if exists("eiffel_ignore_case")
  15.   syn case ignore
  16. else
  17.   syn case match
  18.   if exists("eiffel_pedantic") || exists("eiffel_strict")
  19.     syn keyword eiffelError    current void result precursor none
  20.     syn keyword eiffelError    CURRENT VOID RESULT PRECURSOR None
  21.     syn keyword eiffelError    TRUE FALSE
  22.   endif
  23.   if exists("eiffel_pedantic")
  24.     syn keyword eiffelError    true false
  25.     syn match eiffelError    "\<[a-z_]\+[A-Z][a-zA_Z_]*\>"
  26.     syn match eiffelError    "\<[A-Z][a-z_]*[A-Z][a-zA-Z_]*\>"
  27.   endif
  28.   if exists("eiffel_lower_case_predef")
  29.     syn keyword eiffelPredefined current void result precursor
  30.   endif
  31. endif
  32.  
  33. if exists("eiffel_hex_constants")
  34.   syn match  eiffelNumber    "\d[0-9a-fA-F]*[xX]"
  35. endif
  36.  
  37. " Keyword definitions
  38.  
  39. syn keyword eiffelTopStruct    indexing feature creation inherit
  40. syn match   eiffelTopStruct    "\<class\>"
  41. syn match   eiffelKeyword    "\<end\>"
  42. syn match   eiffelTopStruct    "^end\>\(\s*--\s\+class\s\+\<[A-Z][A-Z0-9_]*\>\)\=" contains=eiffelClassName
  43. syn match   eiffelBrackets    "[[\]]"
  44. syn match eiffelBracketError    "\]"
  45. syn region eiffelGeneric    transparent matchgroup=eiffelBrackets start="\[" end="\]" contains=ALLBUT,eiffelBracketError,eiffelGenericDecl,eiffelStringError,eiffelStringEscape,eiffelGenericCreate,eiffelTopStruct
  46. if exists("eiffel_ise")
  47.   syn match   eiffelCreate    "\<create\>"
  48.   syn match   eiffelTopStruct    contained "\<create\>"
  49.   syn match   eiffelGenericCreate  contained "\<create\>"
  50.   syn match   eiffelTopStruct    "^create\>"
  51.   syn region  eiffelGenericDecl    transparent matchgroup=eiffelBrackets contained start="\[" end="\]" contains=ALLBUT,eiffelCreate,eiffelTopStruct,eiffelGeneric,eiffelBracketError,eiffelStringEscape,eiffelStringError,eiffelBrackets
  52.   syn region  eiffelClassHeader    start="^class\>" end="$" contains=ALLBUT,eiffelCreate,eiffelGenericCreate,eiffelGeneric,eiffelStringEscape,eiffelStringError,eiffelBrackets
  53. endif
  54. syn keyword eiffelDeclaration    is do once deferred unique local
  55. syn keyword eiffelDeclaration    Unique
  56. syn keyword eiffelProperty    expanded obsolete separate frozen
  57. syn keyword eiffelProperty    prefix infix
  58. syn keyword eiffelInheritClause    rename redefine undefine select export as
  59. syn keyword eiffelAll        all
  60. syn keyword eiffelKeyword    external alias
  61. syn keyword eiffelStatement    if else elseif inspect
  62. syn keyword eiffelStatement    when then
  63. syn match   eiffelAssertion    "\<require\(\s\+else\)\=\>"
  64. syn match   eiffelAssertion    "\<ensure\(\s\+then\)\=\>"
  65. syn keyword eiffelAssertion    check
  66. syn keyword eiffelDebug        debug
  67. syn keyword eiffelStatement    from until loop
  68. syn keyword eiffelAssertion    variant
  69. syn match   eiffelAssertion    "\<invariant\>"
  70. syn match   eiffelTopStruct    "^invariant\>"
  71. syn keyword eiffelException    rescue retry
  72.  
  73. syn keyword eiffelPredefined    Current Void Result Precursor
  74.  
  75. " Operators
  76. syn match   eiffelOperator    "\<and\(\s\+then\)\=\>"
  77. syn match   eiffelOperator    "\<or\(\s\+else\)\=\>"
  78. syn keyword eiffelOperator    xor implies not
  79. syn keyword eiffelOperator    strip old
  80. syn keyword eiffelOperator    Strip
  81. syn match   eiffelOperator    "\$"
  82. syn match   eiffelCreation    "!"
  83. syn match   eiffelExport    "[{}]"
  84. syn match   eiffelArray        "<<"
  85. syn match   eiffelArray        ">>"
  86. syn match   eiffelConstraint    "->"
  87. syn match   eiffelOperator    "[@#|&][^ \e\t\b%]*"
  88.  
  89. " Special classes
  90. syn keyword eiffelAnchored    like
  91. syn keyword eiffelBitType    BIT
  92.  
  93. " Constants
  94. if !exists("eiffel_pedantic")
  95.   syn keyword eiffelBool    true false
  96. endif
  97. syn keyword eiffelBool        True False
  98. syn region  eiffelString    start=+"+ skip=+%"+ end=+"+ contains=eiffelStringEscape,eiffelStringError
  99. syn match   eiffelStringEscape    contained "%[^/]"
  100. syn match   eiffelStringEscape    contained "%/\d\+/"
  101. syn match   eiffelStringEscape    contained "^[ \t]*%"
  102. syn match   eiffelStringEscape    contained "%[ \t]*$"
  103. syn match   eiffelStringError    contained "%/[^0-9]"
  104. syn match   eiffelStringError    contained "%/\d\+[^0-9/]"
  105. syn match   eiffelBadConstant    "'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
  106. syn match   eiffelBadConstant    "''"
  107. syn match   eiffelCharacter    "'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=eiffelStringEscape
  108. syn match   eiffelNumber    "-\=\<\d\+\(_\d\+\)*\>"
  109. syn match   eiffelNumber    "\<[01]\+[bB]\>"
  110. syn match   eiffelNumber    "-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
  111. syn match   eiffelNumber    "-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
  112. syn match   eiffelComment    "--.*" contains=eiffelTodo
  113.  
  114. syn case match
  115.  
  116. " Case sensitive stuff
  117.  
  118. syn keyword eiffelTodo        contained TODO XXX FIXME
  119. syn match   eiffelClassName    "\<[A-Z][A-Z0-9_]*\>"
  120.  
  121. " Catch mismatched parentheses
  122. syn match eiffelParenError    ")"
  123. syn region eiffelParen        transparent start="(" end=")" contains=ALLBUT,eiffelParenError,eiffelStringError,eiffelStringEscape
  124.  
  125. " Should suffice for even very long strings and expressions
  126. syn sync lines=40
  127.  
  128. if !exists("did_eiffel_syntax_inits")
  129.   let did_eiffel_syntax_inits = 1
  130.   " The default methods for hilighting.  Can be overridden later
  131.   hi link eiffelKeyword        Statement
  132.   hi link eiffelProperty    Statement
  133.   hi link eiffelInheritClause    Statement
  134.   hi link eiffelStatement    Statement
  135.   hi link eiffelDeclaration    Statement
  136.   hi link eiffelAssertion    Statement
  137.   hi link eiffelDebug        Statement
  138.   hi link eiffelException    Statement
  139.   hi link eiffelGenericCreate    Statement
  140.  
  141.  
  142.   hi link eiffelTopStruct    PreProc
  143.  
  144.   hi link eiffelAll        Special
  145.   hi link eiffelAnchored    Special
  146.   hi link eiffelBitType        Special
  147.  
  148.  
  149.   hi link eiffelBool        Boolean
  150.   hi link eiffelString        String
  151.   hi link eiffelCharacter    Character
  152.   hi link eiffelClassName    Type
  153.   hi link eiffelNumber        Number
  154.  
  155.   hi link eiffelStringEscape    Special
  156.  
  157.   hi link eiffelOperator    Special
  158.   hi link eiffelArray        Special
  159.   hi link eiffelExport        Special
  160.   hi link eiffelCreation    Special
  161.   hi link eiffelBrackets    Special
  162.   hi link eiffelGeneric        Special
  163.   hi link eiffelGenericDecl    Special
  164.   hi link eiffelConstraint    Special
  165.   hi link eiffelCreate        Special
  166.  
  167.   hi link eiffelPredefined    Constant
  168.  
  169.   hi link eiffelComment        Comment
  170.  
  171.   hi link eiffelError        Error
  172.   hi link eiffelBadConstant    Error
  173.   hi link eiffelStringError    Error
  174.   hi link eiffelParenError    Error
  175.   hi link eiffelBracketError    Error
  176.  
  177.   hi link eiffelTodo        Todo
  178. endif
  179.  
  180. let b:current_syntax = "eiffel"
  181.  
  182. " vim: ts=8
  183.