Bram Moolenaar | baca7f7 | 2013-09-22 14:42:24 +0200 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: J |
| 3 | " Maintainer: David Bürgin <676c7473@gmail.com> |
Bram Moolenaar | d5d015d | 2013-11-03 21:14:31 +0100 | [diff] [blame] | 4 | " Last Change: 2013-10-06 |
Bram Moolenaar | baca7f7 | 2013-09-22 14:42:24 +0200 | [diff] [blame] | 5 | |
| 6 | if exists("b:current_syntax") |
| 7 | finish |
| 8 | endif |
| 9 | |
| 10 | syntax case match |
| 11 | syntax sync minlines=50 |
| 12 | |
| 13 | syn match jControl /\<\%(assert\|break\|case\|catch[dt]\=\|continue\|do\|else\%(if\)\=\|end\|fcase\|for\|if\|return\|select\|throw\|try\|whil\%(e\|st\)\)\./ |
| 14 | syn match jControl /\<\%(for\|goto\|label\)_\a\k*\./ |
| 15 | |
| 16 | syn region jString oneline start=/'/ skip=/''/ end=/'/ |
| 17 | |
| 18 | " Patterns for numbers in general, rational numbers, numbers with explicit |
| 19 | " base, infinities, and numbers with extended precision. |
| 20 | " |
| 21 | " Matching J numbers is difficult. The regular expression used for the general |
| 22 | " case roughly embodies this grammar sketch: |
| 23 | " |
| 24 | " EXP := /_?\d+(\.\d*)?([eE]_?\d+)?/ |
| 25 | " COMP := EXP | EXP (j|a[dr]) EXP |
| 26 | " PIEU := COMP | COMP [px] COMP |
| 27 | " |
| 28 | " For the rest, a compromise between correctness and practicality was made. |
| 29 | " See http://www.jsoftware.com/help/dictionary/dcons.htm for reference. |
| 30 | 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\+\)\=\)\=\)\=/ |
| 31 | syn match jNumber /\<_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=r_\=\d\+\%(\.\d*\)\=\%([eE]_\=\d\+\)\=/ |
| 32 | syn match jNumber /\<_\=\d\+\%([eE]\d\+\)\=b_\=[0-9a-z]\+/ |
| 33 | syn match jNumber /\<__\=\>/ |
| 34 | syn match jNumber /\<_\=\d\+x\>/ |
| 35 | |
Bram Moolenaar | d5d015d | 2013-11-03 21:14:31 +0100 | [diff] [blame] | 36 | syn match jComment /NB\..*$/ contains=jTodo,@Spell |
| 37 | syn keyword jTodo TODO FIXME XXX contained |
Bram Moolenaar | baca7f7 | 2013-09-22 14:42:24 +0200 | [diff] [blame] | 38 | |
| 39 | hi def link jControl Statement |
| 40 | hi def link jString String |
| 41 | hi def link jNumber Number |
| 42 | hi def link jComment Comment |
Bram Moolenaar | d5d015d | 2013-11-03 21:14:31 +0100 | [diff] [blame] | 43 | hi def link jTodo Todo |
Bram Moolenaar | baca7f7 | 2013-09-22 14:42:24 +0200 | [diff] [blame] | 44 | |
| 45 | let b:current_syntax = "j" |