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 / monk.vim < prev    next >
Encoding:
Text File  |  2012-05-31  |  10.7 KB  |  235 lines

  1. " Vim syntax file
  2. " Language: Monk (See-Beyond Technologies)
  3. " Maintainer: Mike Litherland <litherm@ccf.org>
  4. " Last Change: 2012 Feb 03 by Thilo Six
  5.  
  6. " This syntax file is good enough for my needs, but others
  7. " may desire more features.  Suggestions and bug reports
  8. " are solicited by the author (above).
  9.  
  10. " Originally based on the Scheme syntax file by:
  11.  
  12. " Maintainer:    Dirk van Deun <dvandeun@poboxes.com>
  13. " Last Change:    April 30, 1998
  14.  
  15. " In fact it's almost identical. :)
  16.  
  17. " The original author's notes:
  18. " This script incorrectly recognizes some junk input as numerals:
  19. " parsing the complete system of Scheme numerals using the pattern
  20. " language is practically impossible: I did a lax approximation.
  21.  
  22. " Initializing:
  23.  
  24. " For version 5.x: Clear all syntax items
  25. " For version 6.x: Quit when a syntax file was already loaded
  26. if version < 600
  27.   syntax clear
  28. elseif exists("b:current_syntax")
  29.   finish
  30. endif
  31.  
  32. let s:cpo_save = &cpo
  33. set cpo&vim
  34.  
  35. syn case ignore
  36.  
  37. " Fascist highlighting: everything that doesn't fit the rules is an error...
  38.  
  39. syn match    monkError    oneline    ![^ \t()";]*!
  40. syn match    monkError    oneline    ")"
  41.  
  42. " Quoted and backquoted stuff
  43.  
  44. syn region monkQuoted matchgroup=Delimiter start="['`]" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  45.  
  46. syn region monkQuoted matchgroup=Delimiter start="['`](" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  47. syn region monkQuoted matchgroup=Delimiter start="['`]#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  48.  
  49. syn region monkStrucRestricted matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  50. syn region monkStrucRestricted matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  51.  
  52. syn region monkUnquote matchgroup=Delimiter start="," end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  53. syn region monkUnquote matchgroup=Delimiter start=",@" end=![ \t()";]!me=e-1 contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  54.  
  55. syn region monkUnquote matchgroup=Delimiter start=",(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  56. syn region monkUnquote matchgroup=Delimiter start=",@(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  57.  
  58. syn region monkUnquote matchgroup=Delimiter start=",#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  59. syn region monkUnquote matchgroup=Delimiter start=",@#(" end=")" contains=ALLBUT,monkStruc,monkSyntax,monkFunc
  60.  
  61. " R5RS Scheme Functions and Syntax:
  62.  
  63. if version < 600
  64.   set iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
  65. else
  66.   setlocal iskeyword=33,35-39,42-58,60-90,94,95,97-122,126,_
  67. endif
  68.  
  69. syn keyword monkSyntax lambda and or if cond case define let let* letrec
  70. syn keyword monkSyntax begin do delay set! else =>
  71. syn keyword monkSyntax quote quasiquote unquote unquote-splicing
  72. syn keyword monkSyntax define-syntax let-syntax letrec-syntax syntax-rules
  73.  
  74. syn keyword monkFunc not boolean? eq? eqv? equal? pair? cons car cdr set-car!
  75. syn keyword monkFunc set-cdr! caar cadr cdar cddr caaar caadr cadar caddr
  76. syn keyword monkFunc cdaar cdadr cddar cdddr caaaar caaadr caadar caaddr
  77. syn keyword monkFunc cadaar cadadr caddar cadddr cdaaar cdaadr cdadar cdaddr
  78. syn keyword monkFunc cddaar cddadr cdddar cddddr null? list? list length
  79. syn keyword monkFunc append reverse list-ref memq memv member assq assv assoc
  80. syn keyword monkFunc symbol? symbol->string string->symbol number? complex?
  81. syn keyword monkFunc real? rational? integer? exact? inexact? = < > <= >=
  82. syn keyword monkFunc zero? positive? negative? odd? even? max min + * - / abs
  83. syn keyword monkFunc quotient remainder modulo gcd lcm numerator denominator
  84. syn keyword monkFunc floor ceiling truncate round rationalize exp log sin cos
  85. syn keyword monkFunc tan asin acos atan sqrt expt make-rectangular make-polar
  86. syn keyword monkFunc real-part imag-part magnitude angle exact->inexact
  87. syn keyword monkFunc inexact->exact number->string string->number char=?
  88. syn keyword monkFunc char-ci=? char<? char-ci<? char>? char-ci>? char<=?
  89. syn keyword monkFunc char-ci<=? char>=? char-ci>=? char-alphabetic? char?
  90. syn keyword monkFunc char-numeric? char-whitespace? char-upper-case?
  91. syn keyword monkFunc char-lower-case?
  92. syn keyword monkFunc char->integer integer->char char-upcase char-downcase
  93. syn keyword monkFunc string? make-string string string-length string-ref
  94. syn keyword monkFunc string-set! string=? string-ci=? string<? string-ci<?
  95. syn keyword monkFunc string>? string-ci>? string<=? string-ci<=? string>=?
  96. syn keyword monkFunc string-ci>=? substring string-append vector? make-vector
  97. syn keyword monkFunc vector vector-length vector-ref vector-set! procedure?
  98. syn keyword monkFunc apply map for-each call-with-current-continuation
  99. syn keyword monkFunc call-with-input-file call-with-output-file input-port?
  100. syn keyword monkFunc output-port? current-input-port current-output-port
  101. syn keyword monkFunc open-input-file open-output-file close-input-port
  102. syn keyword monkFunc close-output-port eof-object? read read-char peek-char
  103. syn keyword monkFunc write display newline write-char call/cc
  104. syn keyword monkFunc list-tail string->list list->string string-copy
  105. syn keyword monkFunc string-fill! vector->list list->vector vector-fill!
  106. syn keyword monkFunc force with-input-from-file with-output-to-file
  107. syn keyword monkFunc char-ready? load transcript-on transcript-off eval
  108. syn keyword monkFunc dynamic-wind port? values call-with-values
  109. syn keyword monkFunc monk-report-environment null-environment
  110. syn keyword monkFunc interaction-environment
  111.  
  112. " Keywords specific to STC's implementation
  113.  
  114. syn keyword monkFunc $event-clear $event-parse $event->string $make-event-map
  115. syn keyword monkFunc $resolve-event-definition change-pattern copy copy-strip
  116. syn keyword monkFunc count-data-children count-map-children count-rep data-map
  117. syn keyword monkFunc duplicate duplicate-strip file-check file-lookup get
  118. syn keyword monkFunc insert list-lookup node-has-data? not-verify path?
  119. syn keyword monkFunc path-defined-as-repeating? path-nodeclear path-nodedepth
  120. syn keyword monkFunc path-nodename path-nodeparentname path->string path-valid?
  121. syn keyword monkFunc regex string->path timestamp uniqueid verify
  122.  
  123. " Keywords from the Monk function library (from e*Gate 4.1 programmers ref)
  124. syn keyword monkFunc allcap? capitalize char-punctuation? char-substitute
  125. syn keyword monkFunc char-to-char conv count-used-children degc->degf
  126. syn keyword monkFunc diff-two-dates display-error empty-string? fail_id
  127. syn keyword monkFunc fail_id_if fail_translation fail_translation_if
  128. syn keyword monkFunc find-get-after find-get-before get-timestamp julian-date?
  129. syn keyword monkFunc julian->standard leap-year? map-string not-empty-string?
  130. syn keyword monkFunc standard-date? standard->julian string-begins-with?
  131. syn keyword monkFunc string-contains? string-ends-with? string-search-from-left
  132. syn keyword monkFunc string-search-from-right string->ssn strip-punct
  133. syn keyword monkFunc strip-string substring=? symbol-table-get symbol-table-put
  134. syn keyword monkFunc trim-string-left trim-string-right valid-decimal?
  135. syn keyword monkFunc valid-integer? verify-type
  136.  
  137. " Writing out the complete description of Scheme numerals without
  138. " using variables is a day's work for a trained secretary...
  139. " This is a useful lax approximation:
  140.  
  141. syn match    monkNumber    oneline    "[-#+0-9.][-#+/0-9a-f@i.boxesfdl]*"
  142. syn match    monkError    oneline    ![-#+0-9.][-#+/0-9a-f@i.boxesfdl]*[^-#+/0-9a-f@i.boxesfdl \t()";][^ \t()";]*!
  143.  
  144. syn match    monkOther    oneline    ![+-][ \t()";]!me=e-1
  145. syn match    monkOther    oneline    ![+-]$!
  146. " ... so that a single + or -, inside a quoted context, would not be
  147. " interpreted as a number (outside such contexts, it's a monkFunc)
  148.  
  149. syn match    monkDelimiter    oneline    !\.[ \t()";]!me=e-1
  150. syn match    monkDelimiter    oneline    !\.$!
  151. " ... and a single dot is not a number but a delimiter
  152.  
  153. " Simple literals:
  154.  
  155. syn match    monkBoolean    oneline    "#[tf]"
  156. syn match    monkError    oneline    !#[tf][^ \t()";]\+!
  157.  
  158. syn match    monkChar    oneline    "#\\"
  159. syn match    monkChar    oneline    "#\\."
  160. syn match    monkError    oneline    !#\\.[^ \t()";]\+!
  161. syn match    monkChar    oneline    "#\\space"
  162. syn match    monkError    oneline    !#\\space[^ \t()";]\+!
  163. syn match    monkChar    oneline    "#\\newline"
  164. syn match    monkError    oneline    !#\\newline[^ \t()";]\+!
  165.  
  166. " This keeps all other stuff unhighlighted, except *stuff* and <stuff>:
  167.  
  168. syn match    monkOther    oneline    ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*,
  169. syn match    monkError    oneline    ,[a-z!$%&*/:<=>?^_~][-a-z!$%&*/:<=>?^_~0-9+.@]*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
  170.  
  171. syn match    monkOther    oneline    "\.\.\."
  172. syn match    monkError    oneline    !\.\.\.[^ \t()";]\+!
  173. " ... a special identifier
  174.  
  175. syn match    monkConstant    oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[ \t()";],me=e-1
  176. syn match    monkConstant    oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*$,
  177. syn match    monkError    oneline    ,\*[-a-z!$%&*/:<=>?^_~0-9+.@]*\*[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
  178.  
  179. syn match    monkConstant    oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[ \t()";],me=e-1
  180. syn match    monkConstant    oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>$,
  181. syn match    monkError    oneline    ,<[-a-z!$%&*/:<=>?^_~0-9+.@]*>[^-a-z!$%&*/:<=>?^_~0-9+.@ \t()";]\+[^ \t()";]*,
  182.  
  183. " Monk input and output structures
  184. syn match    monkSyntax    oneline    "\(\~input\|\[I\]->\)[^ \t]*"
  185. syn match    monkFunc    oneline    "\(\~output\|\[O\]->\)[^ \t]*"
  186.  
  187. " Non-quoted lists, and strings:
  188.  
  189. syn region monkStruc matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALL
  190. syn region monkStruc matchgroup=Delimiter start="#(" matchgroup=Delimiter end=")" contains=ALL
  191.  
  192. syn region    monkString    start=+"+  skip=+\\[\\"]+ end=+"+
  193.  
  194. " Comments:
  195.  
  196. syn match    monkComment    ";.*$"
  197.  
  198. " Synchronization and the wrapping up...
  199.  
  200. syn sync match matchPlace grouphere NONE "^[^ \t]"
  201. " ... i.e. synchronize on a line that starts at the left margin
  202.  
  203. " Define the default highlighting.
  204. " For version 5.7 and earlier: only when not done already
  205. " For version 5.8 and later: only when an item doesn't have highlighting yet
  206. if version >= 508 || !exists("did_monk_syntax_inits")
  207.   if version < 508
  208.     let did_monk_syntax_inits = 1
  209.     command -nargs=+ HiLink hi link <args>
  210.   else
  211.     command -nargs=+ HiLink hi def link <args>
  212.   endif
  213.  
  214.   HiLink monkSyntax        Statement
  215.   HiLink monkFunc        Function
  216.  
  217.   HiLink monkString        String
  218.   HiLink monkChar        Character
  219.   HiLink monkNumber        Number
  220.   HiLink monkBoolean        Boolean
  221.  
  222.   HiLink monkDelimiter    Delimiter
  223.   HiLink monkConstant    Constant
  224.  
  225.   HiLink monkComment        Comment
  226.   HiLink monkError        Error
  227.  
  228.   delcommand HiLink
  229. endif
  230.  
  231. let b:current_syntax = "monk"
  232.  
  233. let &cpo = s:cpo_save
  234. unlet s:cpo_save
  235.