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 / runtime / dos / syntax / asm.vim < prev    next >
Encoding:
Text File  |  2012-05-31  |  4.5 KB  |  140 lines

  1. " Vim syntax file
  2. " Language:    GNU Assembler
  3. " Maintainer:    Erik Wognsen <erik.wognsen@gmail.com>
  4. "        Previous maintainer:
  5. "        Kevin Dahlhausen <kdahlhaus@yahoo.com>
  6. " Last Change:    2012 Apr 09
  7.  
  8. " Thanks to Ori Avtalion for feedback on the comment markers!
  9.  
  10. " For version 5.x: Clear all syntax items
  11. " For version 6.0 and later: Quit when a syntax file was already loaded
  12. if version < 600
  13.   syntax clear
  14. elseif exists("b:current_syntax")
  15.   finish
  16. endif
  17.  
  18. let s:cpo_save = &cpo
  19. set cpo&vim
  20.  
  21. syn case ignore
  22.  
  23. " storage types
  24. syn match asmType "\.long"
  25. syn match asmType "\.ascii"
  26. syn match asmType "\.asciz"
  27. syn match asmType "\.byte"
  28. syn match asmType "\.double"
  29. syn match asmType "\.float"
  30. syn match asmType "\.hword"
  31. syn match asmType "\.int"
  32. syn match asmType "\.octa"
  33. syn match asmType "\.quad"
  34. syn match asmType "\.short"
  35. syn match asmType "\.single"
  36. syn match asmType "\.space"
  37. syn match asmType "\.string"
  38. syn match asmType "\.word"
  39.  
  40. syn match asmLabel        "[a-z_][a-z0-9_]*:"he=e-1
  41. syn match asmIdentifier        "[a-z_][a-z0-9_]*"
  42.  
  43. " Various #'s as defined by GAS ref manual sec 3.6.2.1
  44. " Technically, the first decNumber def is actually octal,
  45. " since the value of 0-7 octal is the same as 0-7 decimal,
  46. " I (Kevin) prefer to map it as decimal:
  47. syn match decNumber        "0\+[1-7]\=[\t\n$,; ]"
  48. syn match decNumber        "[1-9]\d*"
  49. syn match octNumber        "0[0-7][0-7]\+"
  50. syn match hexNumber        "0[xX][0-9a-fA-F]\+"
  51. syn match binNumber        "0[bB][0-1]*"
  52.  
  53. syn keyword asmTodo        contained TODO
  54.  
  55.  
  56. " GAS supports one type of multi line comments:
  57. syn region asmComment        start="/\*" end="\*/" contains=asmTodo
  58.  
  59. " GAS (undocumentedly?) supports C++ style comments. Unlike in C/C++ however,
  60. " a backslash ending a C++ style comment does not extend the comment to the
  61. " next line (hence the syntax region does not define 'skip="\\$"')
  62. syn region asmComment        start="//" end="$" keepend contains=asmTodo
  63.  
  64. " Line comment characters depend on the target architecture and command line
  65. " options and some comments may double as logical line number directives or
  66. " preprocessor commands. This situation is described at
  67. " http://sourceware.org/binutils/docs-2.22/as/Comments.html
  68. " Some line comment characters have other meanings for other targets. For
  69. " example, .type directives may use the `@' character which is also an ARM
  70. " comment marker.
  71. " As a compromise to accommodate what I arbitrarily assume to be the most
  72. " frequently used features of the most popular architectures (and also the
  73. " non-GNU assembly languages that use this syntax file because their asm files
  74. " are also named *.asm), the following are used as line comment characters:
  75. syn match asmComment        "[#;!|].*" contains=asmTodo
  76.  
  77. " Side effects of this include:
  78. " - When `;' is used to separate statements on the same line (many targets
  79. "   support this), all statements except the first get highlighted as
  80. "   comments. As a remedy, remove `;' from the above.
  81. " - ARM comments are not highlighted correctly. For ARM, uncomment the
  82. "   following two lines and comment the one above.
  83. "syn match asmComment        "@.*" contains=asmTodo
  84. "syn match asmComment        "^#.*" contains=asmTodo
  85.  
  86. " Advanced users of specific architectures will probably want to change the
  87. " comment highlighting or use a specific, more comprehensive syntax file.
  88.  
  89. syn match asmInclude        "\.include"
  90. syn match asmCond        "\.if"
  91. syn match asmCond        "\.else"
  92. syn match asmCond        "\.endif"
  93. syn match asmMacro        "\.macro"
  94. syn match asmMacro        "\.endm"
  95.  
  96. syn match asmDirective        "\.[a-z][a-z]\+"
  97.  
  98.  
  99. syn case match
  100.  
  101. " Define the default highlighting.
  102. " For version 5.7 and earlier: only when not done already
  103. " For version 5.8 and later: only when an item doesn't have highlighting yet
  104. if version >= 508 || !exists("did_asm_syntax_inits")
  105.   if version < 508
  106.     let did_asm_syntax_inits = 1
  107.     command -nargs=+ HiLink hi link <args>
  108.   else
  109.     command -nargs=+ HiLink hi def link <args>
  110.   endif
  111.  
  112.   " The default methods for highlighting.  Can be overridden later
  113.   HiLink asmSection    Special
  114.   HiLink asmLabel    Label
  115.   HiLink asmComment    Comment
  116.   HiLink asmTodo    Todo
  117.   HiLink asmDirective    Statement
  118.  
  119.   HiLink asmInclude    Include
  120.   HiLink asmCond    PreCondit
  121.   HiLink asmMacro    Macro
  122.  
  123.   HiLink hexNumber    Number
  124.   HiLink decNumber    Number
  125.   HiLink octNumber    Number
  126.   HiLink binNumber    Number
  127.  
  128.   HiLink asmIdentifier    Identifier
  129.   HiLink asmType    Type
  130.  
  131.   delcommand HiLink
  132. endif
  133.  
  134. let b:current_syntax = "asm"
  135.  
  136. let &cpo = s:cpo_save
  137. unlet s:cpo_save
  138.  
  139. " vim: ts=8
  140.