home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_vim.idb / usr / freeware / share / vim / syntax / eiffel.vim.z / eiffel.vim
Encoding:
Text File  |  1998-10-28  |  3.6 KB  |  95 lines

  1. " Vim syntax file
  2. " Language:    Eiffel
  3. " Maintainer:    Reimer Behrends <behrends@student.uni-kl.de>
  4. " Last change:    1998 Feb 5
  5. " Note: There should be better handling of multi-line strings
  6.  
  7. " Remove any old syntax stuff hanging around
  8. syn clear
  9.  
  10. " keyword definitions
  11. syn keyword eiffelKeyword        indexing expanded class obsolete
  12. syn keyword eiffelKeyword        separate
  13. syn keyword eiffelKeyword        inherit rename redefine undefine as
  14. syn keyword eiffelKeyword        select export
  15. syn keyword eiffelKeyword        external alias
  16. syn keyword eiffelKeyword        if else elseif end inspect
  17. syn keyword eiffelKeyword        when then
  18. syn keyword eiffelKeyword        check debug require ensure
  19. syn keyword eiffelKeyword        from until invariant variant loop
  20. syn keyword eiffelKeyword        feature creation is do once
  21. syn keyword eiffelKeyword        deferred frozen unique local
  22. syn keyword eiffelKeyword        prefix infix
  23. syn keyword eiffelKeyword        rescue retry
  24.  
  25. syn keyword eiffelValue          Current Void Result Precursor
  26. " Uncomment the following line if you want to be warned against accidentally
  27. " using certain reserved words as variables.
  28.  
  29. " syntax keyword eiffelError        current result precursor void
  30.  
  31. " Operators
  32. syn match eiffelOperator         "\<and\([ \t]\+then\)\=\>"
  33. syn match eiffelOperator         "\<or\([ \t]\+else\)\=\>"
  34. syn keyword eiffelOperator       xor not
  35. syn keyword eiffelOperator       strip old
  36. syn match eiffelOperator         "[!{}[\]]"
  37. syn match eiffelOperator         "<<"
  38. syn match eiffelOperator         ">>"
  39. syn match eiffelOperator         "->"
  40. syn match eiffelOperator         "[@#|&][^ \e\t\b%]*"
  41.  
  42. " Classes
  43. syn keyword eiffelKeyword        like BIT
  44. syn match   eiffelClassName      "\<[A-Z][A-Z0-9_]*\>"
  45.  
  46. " Constants
  47. syn keyword eiffelConst          true false
  48. syn region  eiffelString         start=+"+  skip=+%"+  end=+"+ contains=eiffelSpecial,eiffelStringError
  49. syn match   eiffelSpecial        contained "%[^/]"
  50. syn match   eiffelSpecial        contained "%/[0-9]\+/"
  51. syn match   eiffelSpecial        contained "^[ \t]*%"
  52. syn match   eiffelSpecial        contained "%[ \t]*$"
  53. syn match   eiffelStringError    contained "%/[^0-9]"
  54. syn match   eiffelStringError    contained "%/[0-9]\+[^0-9/]"
  55. syn match   eiffelStringError    "'\(%[^/]\|%/[0-9]\+/\|[^'%]\)\+'"
  56. syn match   eiffelCharacter      "'\(%[^/]\|%/[0-9]\+/\|[^'%]\)'" contains=eiffelSpecial
  57. syn match   eiffelNumber         "-\=\<[0-9]\+"
  58. syn match   eiffelNumber         "\<[01]\+[bB]\>"
  59. syn match   eiffelNumber         "-\=\<[0-9]\+\.[0-9]*\([eE]-\=[0-9]\+\)\="
  60. syn match   eiffelNumber         "-\=\.[0-9]\+\([eE]-\=[0-9]\+\)\="
  61. syn match   eiffelComment        "--.*"
  62.  
  63. " Catch mismatched parentheses
  64. syn region eiffelGeneric         transparent start="\[" end="\]" contains=ALLBUT,eiffelBracketError
  65. syn region eiffelParen           transparent start="(" end=")" contains=ALLBUT,eiffelParenError
  66. syn match eiffelParenError       ")"
  67. syn match eiffelBracketError     "]"
  68.  
  69. syn sync lines=10
  70.  
  71. if !exists("did_eiffel_syntax_inits")
  72.   let did_eiffel_syntax_inits = 1
  73.   " The default methods for highlighting.  Can be overridden later
  74.   hi link eiffelClassName     Type
  75.   hi link eiffelKeyword        Statement
  76.   hi link eiffelBoolValue     Boolean
  77.   hi link eiffelString         String
  78.   hi link eiffelCharacter    Character
  79.   hi link eiffelSpecial     Special
  80.   hi link eiffelNumber         Number
  81.   hi link eiffelOperator    Special
  82.   hi link eiffelComment        Comment
  83.   hi link eiffelType        Statement
  84.   hi link eiffelValue        String
  85.   hi link eiffelConst        String
  86.   hi link eiffelError        Error
  87.   hi link eiffelStringError    Error
  88.   hi link eiffelParenError    Error
  89.   hi link eiffelBracketError    Error
  90. endif
  91.  
  92. let b:current_syntax = "eiffel"
  93.  
  94. " vim: ts=8
  95.