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 / vim54rt.sit / runtime / syntax / eiffel.vim < prev    next >
Encoding:
Text File  |  1999-08-14  |  5.4 KB  |  161 lines  |  [TEXT/ALFA]

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