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 / syntax / freebasic.vim < prev    next >
Encoding:
Text File  |  2010-08-15  |  10.3 KB  |  253 lines

  1. " Vim syntax file
  2. " Language:    FreeBasic
  3. " Maintainer:  Mark Manning <markem@airmail.net>
  4. " Updated:     10/22/2006
  5. "
  6. " Description:
  7. "
  8. "    Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
  9. "    Updated by Mark Manning <markem@airmail.net>
  10. "    Applied FreeBasic support to the already excellent support
  11. "    for standard basic syntax (like QB).
  12. "
  13. "    First version based on Micro$soft QBASIC circa
  14. "    1989, as documented in 'Learn BASIC Now' by
  15. "    Halvorson&Rygmyr. Microsoft Press 1989.  This syntax file
  16. "    not a complete implementation yet.  Send suggestions to
  17. "    the maintainer.
  18. "
  19. "    Quit when a (custom) syntax file was already loaded (Taken from c.vim)
  20. "
  21. if exists("b:current_syntax")
  22.   finish
  23. endif
  24. "
  25. "    Be sure to turn on the "case ignore" since current versions
  26. "    of freebasic support both upper as well as lowercase
  27. "    letters. - MEM 10/1/2006
  28. "
  29. syn case ignore
  30. "
  31. "    This list of keywords is taken directly from the FreeBasic
  32. "    user's guide as presented by the FreeBasic online site.
  33. "
  34. syn keyword    freebasicArrays            ERASE LBOUND REDIM PRESERVE UBOUND
  35.  
  36. syn keyword    freebasicBitManipulation    BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD SHL SHR
  37.  
  38. syn keyword    freebasicCompilerSwitches    DEFBYTE DEFDBL DEFINT DEFLNG DEFLNGINT DEFSHORT DEFSNG DEFSTR
  39. syn keyword    freebasicCompilerSwitches    DEFUBYTE DEFUINT DEFULNGINT DEFUSHORT
  40. syn match    freebasicCompilerSwitches    "\<option\s+\(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|NOKEYWORD\)\>"
  41. syn match    freebasicCompilerSwitches    "\<option\s+\(PRIVATE\|STATIC\)\>"
  42.  
  43. syn region    freebasicConditional        start="\son\s+" skip=".*" end="gosub"
  44. syn region    freebasicConditional        start="\son\s+" skip=".*" end="goto"
  45. syn match    freebasicConditional        "\<select\s+case\>"
  46. syn keyword    freebasicConditional        if iif then case else elseif with
  47.  
  48. syn match    freebasicConsole        "\<open\s+\(CONS\|ERR\|PIPE\|SCRN\)\>"
  49. syn keyword    freebasicConsole        BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB VIEW WIDTH
  50.  
  51. syn keyword    freebasicDataTypes        BYTE AS DIM CONST DOUBLE ENUM INTEGER LONG LONGINT SHARED SHORT STRING
  52. syn keyword    freebasicDataTypes        SINGLE TYPE UBYTE UINTEGER ULONGINT UNION UNSIGNED USHORT WSTRING ZSTRING
  53.  
  54. syn keyword    freebasicDateTime        DATE DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR MINUTE
  55. syn keyword    freebasicDateTime        MONTH MONTHNAME NOW SECOND SETDATE SETTIME TIME TIMESERIAL TIMEVALUE
  56. syn keyword    freebasicDateTime        TIMER YEAR WEEKDAY WEEKDAYNAME
  57.  
  58. syn keyword    freebasicDebug            ASSERT STOP
  59.  
  60. syn keyword    freebasicErrorHandling        ERR ERL ERROR LOCAL RESUME
  61. syn match    freebasicErrorHandling        "\<resume\s+next\>"
  62. syn match    freebasicErrorHandling        "\<on\s+error\>"
  63.  
  64. syn match    freebasicFiles            "\<get\s+#\>"
  65. syn match    freebasicFiles            "\<input\s+#\>"
  66. syn match    freebasicFiles            "\<line\s+input\s+#\>"
  67. syn match    freebasicFiles            "\<put\s+#\>"
  68. syn keyword    freebasicFiles            ACCESS APPEND BINARY BLOAD BSAVE CLOSE EOF FREEFILE INPUT LOC
  69. syn keyword    freebasicFiles            LOCK LOF OPEN OUTPUT RANDOM RESET SEEK UNLOCK WRITE
  70.  
  71. syn keyword    freebasicFunctions        ALIAS ANY BYREF BYVAL CALL CDECL CONSTRUCTOR DESTRUCTOR
  72. syn keyword    freebasicFunctions        DECLARE FUNCTION LIB OVERLOAD PASCAL STATIC SUB STDCALL
  73. syn keyword    freebasicFunctions        VA_ARG VA_FIRST VA_NEXT
  74.  
  75. syn match    freebasicGraphics        "\<palette\s+get\>"
  76. syn keyword    freebasicGraphics        ALPHA CIRCLE CLS COLOR CUSTOM DRAW FLIP GET
  77. syn keyword    freebasicGraphics        IMAGECREATE IMAGEDESTROY LINE PAINT PALETTE PCOPY PMAP POINT
  78. syn keyword    freebasicGraphics        PRESET PSET PUT RGB RGBA SCREEN SCREENCOPY SCREENINFO SCREENLIST
  79. syn keyword    freebasicGraphics        SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC SCREENUNLOCK
  80. syn keyword    freebasicGraphics        TRANS USING VIEW WINDOW
  81.  
  82. syn match    freebasicHardware        "\<open\s+com\>"
  83. syn keyword    freebasicHardware        INP OUT WAIT LPT LPOS LPRINT
  84.  
  85. syn keyword    freebasicLogical        AND EQV IMP OR NOT XOR
  86.  
  87. syn keyword    freebasicMath            ABS ACOS ASIN ATAN2 ATN COS EXP FIX INT LOG MOD RANDOMIZE
  88. syn keyword    freebasicMath            RND SGN SIN SQR TAN
  89.  
  90. syn keyword    freebasicMemory            ALLOCATE CALLOCATE CLEAR DEALLOCATE FIELD FRE PEEK POKE REALLOCATE
  91.  
  92. syn keyword    freebasicMisc            ASM DATA LET TO READ RESTORE SIZEOF SWAP OFFSETOF
  93.  
  94. syn keyword    freebasicModularizing        CHAIN COMMON EXPORT EXTERN DYLIBFREE DYLIBLOAD DYLIBSYMBOL
  95. syn keyword    freebasicModularizing        PRIVATE PUBLIC
  96.  
  97. syn keyword    freebasicMultithreading        MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT
  98.  
  99. syn keyword    freebasicShell            CHDIR DIR COMMAND ENVIRON EXEC EXEPATH KILL NAME MKDIR RMDIR RUN
  100.  
  101. syn keyword    freebasicEnviron        SHELL SYSTEM WINDOWTITLE POINTERS
  102.  
  103. syn keyword    freebasicLoops            FOR LOOP WHILE WEND DO CONTINUE STEP UNTIL next
  104.  
  105. syn match    freebasicInclude        "\<#\s*\(inclib\|include\)\>"
  106. syn match    freebasicInclude        "\<\$\s*include\>"
  107.  
  108. syn keyword    freebasicPointer        PROCPTR PTR SADD STRPTR VARPTR
  109.  
  110. syn keyword    freebasicPredefined        __DATE__ __FB_DOS__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__
  111. syn keyword    freebasicPredefined        __FB_SIGNATURE__ __FB_VERSION__ __FB_WIN32__ __FB_VER_MAJOR__
  112. syn keyword    freebasicPredefined        __FB_VER_MINOR__ __FB_VER_PATCH__ __FILE__ __FUNCTION__
  113. syn keyword    freebasicPredefined        __LINE__ __TIME__
  114.  
  115. syn match    freebasicPreProcessor        "\<^#\s*\(define\|undef\)\>"
  116. syn match    freebasicPreProcessor        "\<^#\s*\(ifdef\|ifndef\|else\|elseif\|endif\|if\)\>"
  117. syn match    freebasicPreProcessor        "\<#\s*error\>"
  118. syn match    freebasicPreProcessor        "\<#\s*\(print\|dynamic\|static\)\>"
  119. syn keyword    freebasicPreProcessor        DEFINED ONCE
  120.  
  121. syn keyword    freebasicProgramFlow        END EXIT GOSUB GOTO
  122. syn keyword    freebasicProgramFlow        IS RETURN SCOPE SLEEP
  123.  
  124. syn keyword    freebasicString            INSTR LCASE LEFT LEN LSET LTRIM MID RIGHT RSET RTRIM
  125. syn keyword    freebasicString            SPACE STRING TRIM UCASE ASC BIN CHR CVD CVI CVL CVLONGINT
  126. syn keyword    freebasicString            CVS CVSHORT FORMAT HEX MKD MKI MKL MKLONGINT MKS MKSHORT
  127. syn keyword    freebasicString            OCT STR VAL VALLNG VALINT VALUINT VALULNG
  128.  
  129. syn keyword    freebasicTypeCasting        CAST CBYTE CDBL CINT CLNG CLNGINT CPTR CSHORT CSIGN CSNG
  130. syn keyword    freebasicTypeCasting        CUBYTE CUINT CULNGINT CUNSG CURDIR CUSHORT
  131.  
  132. syn match    freebasicUserInput        "\<line\s+input\>"
  133. syn keyword    freebasicUserInput        GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY SETMOUSE
  134. "
  135. "    Do the Basic variables names first.  This is because it
  136. "    is the most inclusive of the tests.  Later on we change
  137. "    this so the identifiers are split up into the various
  138. "    types of identifiers like functions, basic commands and
  139. "    such. MEM 9/9/2006
  140. "
  141. syn match    freebasicIdentifier        "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
  142. syn match    freebasicGenericFunction    "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
  143. "
  144. "    Function list
  145. "
  146. syn keyword    freebasicTodo        contained TODO
  147. "
  148. "    Catch errors caused by wrong parenthesis
  149. "
  150. syn region    freebasicParen        transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup
  151. syn match    freebasicParenError    ")"
  152. syn match    freebasicInParen    contained "[{}]"
  153. syn cluster    freebasicParenGroup    contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField
  154. "
  155. "    Integer number, or floating point number without a dot and with "f".
  156. "
  157. syn region    freebasicHex        start="&h" end="\W"
  158. syn region    freebasicHexError    start="&h\x*[g-zG-Z]" end="\W"
  159. syn match    freebasicInteger    "\<\d\+\(u\=l\=\|lu\|f\)\>"
  160. "
  161. "    Floating point number, with dot, optional exponent
  162. "
  163. syn match    freebasicFloat        "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
  164. "
  165. "    Floating point number, starting with a dot, optional exponent
  166. "
  167. syn match    freebasicFloat        "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
  168. "
  169. "    Floating point number, without dot, with exponent
  170. "
  171. syn match    freebasicFloat        "\<\d\+e[-+]\=\d\+[fl]\=\>"
  172. "
  173. "    Hex number
  174. "
  175. syn case match
  176. syn match    freebasicOctal        "\<0\o*\>"
  177. syn match    freebasicOctalError    "\<0\o*[89]"
  178. "
  179. "    String and Character contstants
  180. "
  181. syn region    freebasicString        start='"' end='"' contains=freebasicSpecial,freebasicTodo
  182. syn region    freebasicString        start="'" end="'" contains=freebasicSpecial,freebasicTodo
  183. "
  184. "    Comments
  185. "
  186. syn match    freebasicSpecial    contained "\\."
  187. syn region    freebasicComment    start="^rem" end="$" contains=freebasicSpecial,freebasicTodo
  188. syn region    freebasicComment    start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo
  189. syn region    freebasicComment    start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo
  190. syn region    freebasicComment    start="^'" end="$" contains=freebasicSpecial,freebasicTodo
  191. "
  192. "    Now do the comments and labels
  193. "
  194. syn match    freebasicLabel        "^\d"
  195. syn match    freebasicLabel        "\<^\w+:\>"
  196. syn region    freebasicLineNumber    start="^\d" end="\s"
  197. "
  198. "    Create the clusters
  199. "
  200. syn cluster    freebasicNumber        contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat
  201. syn cluster    freebasicError        contains=freebasicHexError,freebasicOctalError
  202. "
  203. "    Used with OPEN statement
  204. "
  205. syn match    freebasicFilenumber    "#\d\+"
  206. syn match    freebasicMathOperator    "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen
  207. "
  208. "    The default methods for highlighting.  Can be overridden later
  209. "
  210. hi def link freebasicArrays        StorageClass
  211. hi def link freebasicBitManipulation    Operator
  212. hi def link freebasicCompilerSwitches    PreCondit
  213. hi def link freebasicConsole        Special
  214. hi def link freebasicDataTypes        Type
  215. hi def link freebasicDateTime        Type
  216. hi def link freebasicDebug        Special
  217. hi def link freebasicErrorHandling    Special
  218. hi def link freebasicFiles        Special
  219. hi def link freebasicFunctions        Function
  220. hi def link freebasicGraphics        Function
  221. hi def link freebasicHardware        Special
  222. hi def link freebasicLogical        Conditional
  223. hi def link freebasicMath        Function
  224. hi def link freebasicMemory        Function
  225. hi def link freebasicMisc        Special
  226. hi def link freebasicModularizing    Special
  227. hi def link freebasicMultithreading    Special
  228. hi def link freebasicShell        Special
  229. hi def link freebasicEnviron        Special
  230. hi def link freebasicPointer        Special
  231. hi def link freebasicPredefined        PreProc
  232. hi def link freebasicPreProcessor    PreProc
  233. hi def link freebasicProgramFlow    Statement
  234. hi def link freebasicString        String
  235. hi def link freebasicTypeCasting    Type
  236. hi def link freebasicUserInput        Statement
  237. hi def link freebasicComment        Comment
  238. hi def link freebasicConditional    Conditional
  239. hi def link freebasicError        Error
  240. hi def link freebasicIdentifier        Identifier
  241. hi def link freebasicInclude        Include
  242. hi def link freebasicGenericFunction    Function
  243. hi def link freebasicLabel        Label
  244. hi def link freebasicLineNumber        Label
  245. hi def link freebasicMathOperator    Operator
  246. hi def link freebasicNumber        Number
  247. hi def link freebasicSpecial        Special
  248. hi def link freebasicTodo        Todo
  249.  
  250. let b:current_syntax = "freebasic"
  251.  
  252. " vim: ts=8
  253.