diff runtime/syntax/j.vim @ 5362:ab1508486b12

Update runtime files. Add support for J.
author Bram Moolenaar <bram@vim.org>
date Sun, 22 Sep 2013 14:42:24 +0200
parents
children 9521463d4fc1
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/j.vim
@@ -0,0 +1,43 @@
+" Vim syntax file
+" Language:	J
+" Maintainer:	David Bürgin <676c7473@gmail.com>
+" Last Change:	2013-09-21
+
+if exists("b:current_syntax")
+  finish
+endif
+
+syntax case match
+syntax sync minlines=50
+
+syn match jControl /\<\%(assert\|break\|case\|catch[dt]\=\|continue\|do\|else\%(if\)\=\|end\|fcase\|for\|if\|return\|select\|throw\|try\|whil\%(e\|st\)\)\./
+syn match jControl /\<\%(for\|goto\|label\)_\a\k*\./
+
+syn region jString oneline start=/'/ skip=/''/ end=/'/
+
+" Patterns for numbers in general, rational numbers, numbers with explicit
+" base, infinities, and numbers with extended precision.
+"
+" Matching J numbers is difficult. The regular expression used for the general
+" case roughly embodies this grammar sketch:
+"
+"         EXP     := /_?\d+(\.\d*)?([eE]_?\d+)?/
+"         COMP    := EXP  |  EXP (j|a[dr]) EXP
+"         PIEU    := COMP  |  COMP [px] COMP
+"
+" For the rest, a compromise between correctness and practicality was made.
+" See http://www.jsoftware.com/help/dictionary/dcons.htm for reference.
+syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\%(\%(j\|a[dr]\)_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\)\=\%([px]_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\%(\%(j\|a[dr]\)_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=\)\=\)\=/
+syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=r_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=/
+syn match jNumber /\<_\=\d\+\%([eE]\d\+\)\=b_\=[0-9a-z]\+/
+syn match jNumber /\<__\=\>/
+syn match jNumber /\<_\=\d\+x\>/
+
+syn match jComment /NB\..*$/
+
+hi def link jControl Statement
+hi def link jString String
+hi def link jNumber Number
+hi def link jComment Comment
+
+let b:current_syntax = "j"