blob: 243bab351e12d4f7ec67140157d4ba3117896e6d [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Jess
3" Maintainer: Paul Baleme <pbaleme@mail.com>
4" Last change: September 14, 2000
5" Based on lisp.vim by : Dr. Charles E. Campbell, Jr.
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10 syntax clear
11elseif exists("b:current_syntax")
12 finish
13endif
14
15if version < 600
16 set iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
17else
18 setlocal iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
19endif
20
21" Lists
22syn match jessSymbol ![^()'`,"; \t]\+! contained
23syn match jessBarSymbol !|..\{-}|! contained
24syn region jessList matchgroup=Delimiter start="(" skip="|.\{-}|" matchgroup=Delimiter end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSymbol,jessSpecial,jessFunc,jessKey,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol,jessVar
25syn region jessBQList matchgroup=PreProc start="`(" skip="|.\{-}|" matchgroup=PreProc end=")" contains=jessAtom,jessBQList,jessConcat,jessDeclaration,jessList,jessNumber,jessSpecial,jessSymbol,jessFunc,jessKey,jessVar,jessAtomMark,jessString,jessComment,jessBarSymbol,jessAtomBarSymbol
26
27" Atoms
28syn match jessAtomMark "'"
29syn match jessAtom "'("me=e-1 contains=jessAtomMark nextgroup=jessAtomList
30syn match jessAtom "'[^ \t()]\+" contains=jessAtomMark
31syn match jessAtomBarSymbol !'|..\{-}|! contains=jessAtomMark
32syn region jessAtom start=+'"+ skip=+\\"+ end=+"+
33syn region jessAtomList matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contained contains=jessAtomList,jessAtomNmbr0,jessString,jessComment,jessAtomBarSymbol
34syn match jessAtomNmbr "\<[0-9]\+" contained
35
36" Standard jess Functions and Macros
37syn keyword jessFunc * + ** - / < > <= >= <> =
38syn keyword jessFunc long longp
39syn keyword jessFunc abs agenda and
40syn keyword jessFunc assert assert-string bag
41syn keyword jessFunc batch bind bit-and
42syn keyword jessFunc bit-not bit-or bload
43syn keyword jessFunc bsave build call
44syn keyword jessFunc clear clear-storage close
45syn keyword jessFunc complement$ context count-query-results
46syn keyword jessFunc create$
47syn keyword jessFunc delete$ div
48syn keyword jessFunc do-backward-chaining e
49syn keyword jessFunc engine eq eq*
50syn keyword jessFunc eval evenp exit
51syn keyword jessFunc exp explode$ external-addressp
52syn keyword jessFunc fact-slot-value facts fetch
53syn keyword jessFunc first$ float floatp
54syn keyword jessFunc foreach format gensym*
55syn keyword jessFunc get get-fact-duplication
56syn keyword jessFunc get-member get-multithreaded-io
57syn keyword jessFunc get-reset-globals get-salience-evaluation
58syn keyword jessFunc halt if implode$
59syn keyword jessFunc import insert$ integer
60syn keyword jessFunc integerp intersection$ jess-version-number
61syn keyword jessFunc jess-version-string length$
62syn keyword jessFunc lexemep list-function$ load-facts
63syn keyword jessFunc load-function load-package log
64syn keyword jessFunc log10 lowcase matches
65syn keyword jessFunc max member$ min
66syn keyword jessFunc mod modify multifieldp
67syn keyword jessFunc neq new not
68syn keyword jessFunc nth$ numberp oddp
69syn keyword jessFunc open or pi
70syn keyword jessFunc ppdeffunction ppdefglobal ddpefrule
71syn keyword jessFunc printout random read
72syn keyword jessFunc readline replace$ reset
73syn keyword jessFunc rest$ retract retract-string
74syn keyword jessFunc return round rules
75syn keyword jessFunc run run-query run-until-halt
76syn keyword jessFunc save-facts set set-fact-duplication
77syn keyword jessFunc set-factory set-member set-multithreaded-io
78syn keyword jessFunc set-node-index-hash set-reset-globals
79syn keyword jessFunc set-salience-evaluation set-strategy
80syn keyword jessFunc setgen show-deffacts show-deftemplates
81syn keyword jessFunc show-jess-listeners socket
82syn keyword jessFunc sqrt store str-cat
83syn keyword jessFunc str-compare str-index str-length
84syn keyword jessFunc stringp sub-string subseq$
85syn keyword jessFunc subsetp sym-cat symbolp
86syn keyword jessFunc system throw time
87syn keyword jessFunc try undefadvice undefinstance
88syn keyword jessFunc undefrule union$ unwatch
89syn keyword jessFunc upcase view watch
90syn keyword jessFunc while
91syn match jessFunc "\<c[ad]\+r\>"
92
93" jess Keywords (modifiers)
94syn keyword jessKey defglobal deffunction defrule
95syn keyword jessKey deffacts
96syn keyword jessKey defadvice defclass definstance
97
98" Standard jess Variables
99syn region jessVar start="?" end="[^a-zA-Z0-9]"me=e-1
100
101" Strings
102syn region jessString start=+"+ skip=+\\"+ end=+"+
103
104" Shared with Declarations, Macros, Functions
105"syn keyword jessDeclaration
106
107syn match jessNumber "[0-9]\+"
108
109syn match jessSpecial "\*[a-zA-Z_][a-zA-Z_0-9-]*\*"
110syn match jessSpecial !#|[^()'`,"; \t]\+|#!
111syn match jessSpecial !#x[0-9a-fA-F]\+!
112syn match jessSpecial !#o[0-7]\+!
113syn match jessSpecial !#b[01]\+!
114syn match jessSpecial !#\\[ -\~]!
115syn match jessSpecial !#[':][^()'`,"; \t]\+!
116syn match jessSpecial !#([^()'`,"; \t]\+)!
117
118syn match jessConcat "\s\.\s"
119syntax match jessParenError ")"
120
121" Comments
122syn match jessComment ";.*$"
123
124" synchronization
125syn sync lines=100
126
127" Define the default highlighting.
128" For version 5.7 and earlier: only when not done already
129" For version 5.8 and later: only when an item doesn't have highlighting yet
130if version >= 508 || !exists("did_jess_syntax_inits")
131 if version < 508
132 let did_jess_syntax_inits = 1
133 command -nargs=+ HiLink hi link <args>
134 else
135 command -nargs=+ HiLink hi def link <args>
136 endif
137
138 HiLink jessAtomNmbr jessNumber
139 HiLink jessAtomMark jessMark
140
141 HiLink jessAtom Identifier
142 HiLink jessAtomBarSymbol Special
143 HiLink jessBarSymbol Special
144 HiLink jessComment Comment
145 HiLink jessConcat Statement
146 HiLink jessDeclaration Statement
147 HiLink jessFunc Statement
148 HiLink jessKey Type
149 HiLink jessMark Delimiter
150 HiLink jessNumber Number
151 HiLink jessParenError Error
152 HiLink jessSpecial Type
153 HiLink jessString String
154 HiLink jessVar Identifier
155
156 delcommand HiLink
157endif
158
159let b:current_syntax = "jess"
160
161" vim: ts=18