blob: 2cc42f9edee5d9c4a1fffc84081f28ada7662339 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: LambdaProlog (Teyjus)
3" Filenames: *.mod *.sig
4" Maintainer: Markus Mottl <markus@oefai.at>
5" URL: http://www.ai.univie.ac.at/~markus/vim/syntax/lprolog.vim
6" Last Change: 2003 May 11
7" 2001 Apr 26 - Upgraded for new Vim version
8" 2000 Jun 5 - Initial release
9
10" For version 5.x: Clear all syntax items
11" For version 6.x: Quit when a syntax file was already loaded
12if version < 600
13 syntax clear
14elseif exists("b:current_syntax")
15 finish
16endif
17
18" Lambda Prolog is case sensitive.
19syn case match
20
21syn match lprologBrackErr "\]"
22syn match lprologParenErr ")"
23
24syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName
25
26" Enclosing delimiters
27syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr
28syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr
29
30" General identifiers
31syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>"
32syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>"
33
34syn match lprologOperator "/"
35
36" Comments
37syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo
38syn region lprologComment start="%" end="$" contains=lprologTodo
39syn keyword lprologTodo contained TODO FIXME XXX
40
41syn match lprologInteger "\<\d\+\>"
42syn match lprologReal "\<\(\d\+\)\=\.\d+\>"
43syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+
44
45" Clause definitions
46syn region lprologClause start="^\w\+" end=":-\|\."
47
48" Modules
49syn region lprologModule matchgroup=lprologKeyword start="^\<module\>" matchgroup=lprologKeyword end="\."
50
51" Types
52syn match lprologKeyword "^\<type\>" skipwhite nextgroup=lprologTypeNames
53syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator
54syn match lprologTypeName "\<\w\+\>" contained
55
56" Keywords
57syn keyword lprologKeyword end import accumulate accum_sig
58syn keyword lprologKeyword local localkind closed sig
59syn keyword lprologKeyword kind exportdef useonly
60syn keyword lprologKeyword infixl infixr infix prefix
61syn keyword lprologKeyword prefixr postfix postfixl
62
63syn keyword lprologSpecial pi sigma is true fail halt stop not
64
65" Operators
66syn match lprologSpecial ":-"
67syn match lprologSpecial "->"
68syn match lprologSpecial "=>"
69syn match lprologSpecial "\\"
70syn match lprologSpecial "!"
71
72syn match lprologSpecial ","
73syn match lprologSpecial ";"
74syn match lprologSpecial "&"
75
76syn match lprologOperator "+"
77syn match lprologOperator "-"
78syn match lprologOperator "*"
79syn match lprologOperator "\~"
80syn match lprologOperator "\^"
81syn match lprologOperator "<"
82syn match lprologOperator ">"
83syn match lprologOperator "=<"
84syn match lprologOperator ">="
85syn match lprologOperator "::"
86syn match lprologOperator "="
87
88syn match lprologOperator "\."
89syn match lprologOperator ":"
90syn match lprologOperator "|"
91
92syn match lprologCommentErr "\*/"
93
94syn sync minlines=50
95syn sync maxlines=500
96
97
98" Define the default highlighting.
99" For version 5.7 and earlier: only when not done already
100" For version 5.8 and later: only when an item doesn't have highlighting yet
101if version >= 508 || !exists("did_lprolog_syntax_inits")
102 if version < 508
103 let did_lprolog_syntax_inits = 1
104 command -nargs=+ HiLink hi link <args>
105 else
106 command -nargs=+ HiLink hi def link <args>
107 endif
108
109 HiLink lprologComment Comment
110 HiLink lprologTodo Todo
111
112 HiLink lprologKeyword Keyword
113 HiLink lprologSpecial Special
114 HiLink lprologOperator Operator
115 HiLink lprologIdentifier Normal
116
117 HiLink lprologInteger Number
118 HiLink lprologReal Number
119 HiLink lprologString String
120
121 HiLink lprologCommentErr Error
122 HiLink lprologBrackErr Error
123 HiLink lprologParenErr Error
124
125 HiLink lprologModuleName Special
126 HiLink lprologTypeName Identifier
127
128 HiLink lprologVariable Keyword
129 HiLink lprologAtom Normal
130 HiLink lprologClause Type
131
132 delcommand HiLink
133endif
134
135let b:current_syntax = "lprolog"
136
137" vim: ts=8