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 / ibasic.vim < prev    next >
Encoding:
Text File  |  2010-08-14  |  7.0 KB  |  177 lines

  1. " Vim syntax file
  2. " Language:    ibasic
  3. " Maintainer:    Mark Manning <markem@airmail.net>
  4. " Originator:    Allan Kelly <Allan.Kelly@ed.ac.uk>
  5. " Created:    10/1/2006
  6. " Updated:    10/21/2006
  7. " Description:  A vim file to handle the IBasic file format.
  8. " Notes:
  9. "    Updated by Mark Manning <markem@airmail.net>
  10. "    Applied IBasic support to the already excellent support for standard
  11. "    basic syntax (like QB).
  12. "
  13. "    First version based on Micro$soft QBASIC circa 1989, as documented in
  14. "    'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
  15. "    This syntax file not a complete implementation yet.
  16. "    Send suggestions to the maintainer.
  17. "
  18. "    This version is based upon the commands found in IBasic (www.pyxia.com).
  19. "    MEM 10/6/2006
  20. "
  21. "    Quit when a (custom) syntax file was already loaded (Taken from c.vim)
  22. "
  23. if exists("b:current_syntax")
  24.   finish
  25. endif
  26. "
  27. "    Be sure to turn on the "case ignore" since current versions of basic
  28. "    support both upper as well as lowercase letters.
  29. "
  30. syn case ignore
  31. "
  32. " A bunch of useful BASIC keywords
  33. "
  34. syn keyword ibasicStatement    beep bload bsave call absolute chain chdir circle
  35. syn keyword ibasicStatement    clear close cls color com common const data
  36. syn keyword ibasicStatement    loop draw end environ erase error exit field
  37. syn keyword ibasicStatement    files function get gosub goto
  38. syn keyword ibasicStatement    input input# ioctl key kill let line locate
  39. syn keyword ibasicStatement    lock unlock lprint using lset mkdir name
  40. syn keyword ibasicStatement    on error open option base out paint palette pcopy
  41. syn keyword ibasicStatement    pen play pmap poke preset print print# using pset
  42. syn keyword ibasicStatement    put randomize read redim reset restore resume
  43. syn keyword ibasicStatement    return rmdir rset run seek screen
  44. syn keyword ibasicStatement    shared shell sleep sound static stop strig sub
  45. syn keyword ibasicStatement    swap system timer troff tron type unlock
  46. syn keyword ibasicStatement    view wait width window write
  47. syn keyword ibasicStatement    date$ mid$ time$
  48. "
  49. "    Do the basic variables names first.  This is because it
  50. "    is the most inclusive of the tests.  Later on we change
  51. "    this so the identifiers are split up into the various
  52. "    types of identifiers like functions, basic commands and
  53. "    such. MEM 9/9/2006
  54. "
  55. syn match    ibasicIdentifier            "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
  56. syn match    ibasicGenericFunction    "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
  57. "
  58. "    Function list
  59. "
  60. syn keyword ibasicBuiltInFunction    abs asc atn cdbl cint clng cos csng csrlin cvd cvdmbf
  61. syn keyword ibasicBuiltInFunction    cvi cvl cvs cvsmbf eof erdev erl err exp fileattr
  62. syn keyword ibasicBuiltInFunction    fix fre freefile inp instr lbound len loc lof
  63. syn keyword ibasicBuiltInFunction    log lpos mod peek pen point pos rnd sadd screen seek
  64. syn keyword ibasicBuiltInFunction    setmem sgn sin spc sqr stick strig tab tan ubound
  65. syn keyword ibasicBuiltInFunction    val valptr valseg varptr varseg
  66. syn keyword ibasicBuiltInFunction    chr\$ command$ date$ environ$ erdev$ hex$ inkey$
  67. syn keyword ibasicBuiltInFunction    input$ ioctl$ lcases$ laft$ ltrim$ mid$ mkdmbf$ mkd$
  68. syn keyword ibasicBuiltInFunction    mki$ mkl$ mksmbf$ mks$ oct$ right$ rtrim$ space$
  69. syn keyword ibasicBuiltInFunction    str$ string$ time$ ucase$ varptr$
  70. syn keyword ibasicTodo contained    TODO
  71. syn cluster    ibasicFunctionCluster    contains=ibasicBuiltInFunction,ibasicGenericFunction
  72.  
  73. syn keyword Conditional    if else then elseif endif select case endselect
  74. syn keyword Repeat    for do while next enddo endwhile wend
  75.  
  76. syn keyword ibasicTypeSpecifier    single double defdbl defsng
  77. syn keyword ibasicTypeSpecifier    int integer uint uinteger int64 uint64 defint deflng
  78. syn keyword ibasicTypeSpecifier    byte char string istring defstr
  79. syn keyword ibasicDefine    dim def declare
  80. "
  81. "catch errors caused by wrong parenthesis
  82. "
  83. syn cluster    ibasicParenGroup    contains=ibasicParenError,ibasicIncluded,ibasicSpecial,ibasicTodo,ibasicUserCont,ibasicUserLabel,ibasicBitField
  84. syn region    ibasicParen        transparent start='(' end=')' contains=ALLBUT,@bParenGroup
  85. syn match    ibasicParenError    ")"
  86. syn match    ibasicInParen    contained "[{}]"
  87. "
  88. "integer number, or floating point number without a dot and with "f".
  89. "
  90. syn region    ibasicHex        start="&h" end="\W"
  91. syn region    ibasicHexError    start="&h\x*[g-zG-Z]" end="\W"
  92. syn match    ibasicInteger    "\<\d\+\(u\=l\=\|lu\|f\)\>"
  93. "
  94. "floating point number, with dot, optional exponent
  95. "
  96. syn match    ibasicFloat        "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
  97. "
  98. "floating point number, starting with a dot, optional exponent
  99. "
  100. syn match    ibasicFloat        "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
  101. "
  102. "floating point number, without dot, with exponent
  103. "
  104. syn match    ibasicFloat        "\<\d\+e[-+]\=\d\+[fl]\=\>"
  105. "
  106. "hex number
  107. "
  108. syn match    ibasicIdentifier    "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
  109. syn match    ibasicFunction    "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
  110. syn case match
  111. syn match    ibasicOctalError    "\<0\o*[89]"
  112. "
  113. " String and Character contstants
  114. "
  115. syn region    ibasicString        start='"' end='"' contains=ibasicSpecial,ibasicTodo
  116. syn region    ibasicString        start="'" end="'" contains=ibasicSpecial,ibasicTodo
  117. "
  118. "    Comments
  119. "
  120. syn match    ibasicSpecial    contained "\\."
  121. syn region  ibasicComment    start="^rem" end="$" contains=ibasicSpecial,ibasicTodo
  122. syn region  ibasicComment    start=":\s*rem" end="$" contains=ibasicSpecial,ibasicTodo
  123. syn region    ibasicComment    start="\s*'" end="$" contains=ibasicSpecial,ibasicTodo
  124. syn region    ibasicComment    start="^'" end="$" contains=ibasicSpecial,ibasicTodo
  125. "
  126. "    Now do the comments and labels
  127. "
  128. syn match    ibasicLabel        "^\d"
  129. syn region  ibasicLineNumber    start="^\d" end="\s"
  130. "
  131. "    Pre-compiler options : FreeBasic
  132. "
  133. syn region    ibasicPreCondit    start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ibasicString,ibasicCharacter,ibasicNumber,ibasicCommentError,ibasicSpaceError
  134. syn match    ibasicInclude    "^\s*#\s*include\s*"
  135. "
  136. "    Create the clusters
  137. "
  138. syn cluster ibasicNumber contains=ibasicHex,ibasicInteger,ibasicFloat
  139. syn cluster    ibasicError    contains=ibasicHexError
  140. "
  141. "    Used with OPEN statement
  142. "
  143. syn match   ibasicFilenumber  "#\d\+"
  144. "
  145. "syn sync ccomment ibasicComment
  146. "
  147. syn match    ibasicMathOperator    "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=ibasicParen
  148. "
  149. " The default methods for highlighting.  Can be overridden later
  150. "
  151. hi def link ibasicLabel            Label
  152. hi def link ibasicConditional        Conditional
  153. hi def link ibasicRepeat        Repeat
  154. hi def link ibasicHex            Number
  155. hi def link ibasicInteger        Number
  156. hi def link ibasicFloat            Number
  157. hi def link ibasicError            Error
  158. hi def link ibasicHexError        Error
  159. hi def link ibasicStatement        Statement
  160. hi def link ibasicString        String
  161. hi def link ibasicComment        Comment
  162. hi def link ibasicLineNumber        Comment
  163. hi def link ibasicSpecial        Special
  164. hi def link ibasicTodo            Todo
  165. hi def link ibasicGenericFunction    Function
  166. hi def link ibasicBuiltInFunction    Function
  167. hi def link ibasicTypeSpecifier        Type
  168. hi def link ibasicDefine        Type
  169. hi def link ibasicInclude        Include
  170. hi def link ibasicIdentifier        Identifier
  171. hi def link ibasicFilenumber        ibasicTypeSpecifier
  172. hi def link ibasicMathOperator        Operator
  173.  
  174. let b:current_syntax = "ibasic"
  175.  
  176. " vim: ts=8
  177.