blob: 125675804958e44a11d72aec549b9851c4e1e030 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: LambdaProlog (Teyjus)
3" Filenames: *.mod *.sig
Bram Moolenaar8b6144b2006-02-08 09:20:24 +00004" Maintainer: Markus Mottl <markus.mottl@gmail.com>
5" URL: http://www.ocaml.info/vim/syntax/lprolog.vim
6" Last Change: 2006 Feb 05
Bram Moolenaar5eb86f92004-07-26 12:53:41 +00007" 2001 Apr 26 - Upgraded for new Vim version
8" 2000 Jun 5 - Initial release
Bram Moolenaar071d4272004-06-13 20:20:40 +00009
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020010" quit when a syntax file was already loaded
11if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000012 finish
13endif
14
15" Lambda Prolog is case sensitive.
16syn case match
17
18syn match lprologBrackErr "\]"
19syn match lprologParenErr ")"
20
21syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName
22
23" Enclosing delimiters
24syn region lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr
25syn region lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr
26
27" General identifiers
28syn match lprologIdentifier "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>"
29syn match lprologVariable "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>"
30
31syn match lprologOperator "/"
32
33" Comments
34syn region lprologComment start="/\*" end="\*/" contains=lprologComment,lprologTodo
35syn region lprologComment start="%" end="$" contains=lprologTodo
36syn keyword lprologTodo contained TODO FIXME XXX
37
38syn match lprologInteger "\<\d\+\>"
39syn match lprologReal "\<\(\d\+\)\=\.\d+\>"
40syn region lprologString start=+"+ skip=+\\\\\|\\"+ end=+"+
41
42" Clause definitions
43syn region lprologClause start="^\w\+" end=":-\|\."
44
45" Modules
46syn region lprologModule matchgroup=lprologKeyword start="^\<module\>" matchgroup=lprologKeyword end="\."
47
48" Types
49syn match lprologKeyword "^\<type\>" skipwhite nextgroup=lprologTypeNames
50syn region lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator
51syn match lprologTypeName "\<\w\+\>" contained
52
53" Keywords
54syn keyword lprologKeyword end import accumulate accum_sig
55syn keyword lprologKeyword local localkind closed sig
56syn keyword lprologKeyword kind exportdef useonly
57syn keyword lprologKeyword infixl infixr infix prefix
58syn keyword lprologKeyword prefixr postfix postfixl
59
60syn keyword lprologSpecial pi sigma is true fail halt stop not
61
62" Operators
63syn match lprologSpecial ":-"
64syn match lprologSpecial "->"
65syn match lprologSpecial "=>"
66syn match lprologSpecial "\\"
67syn match lprologSpecial "!"
68
69syn match lprologSpecial ","
70syn match lprologSpecial ";"
71syn match lprologSpecial "&"
72
73syn match lprologOperator "+"
74syn match lprologOperator "-"
75syn match lprologOperator "*"
76syn match lprologOperator "\~"
77syn match lprologOperator "\^"
78syn match lprologOperator "<"
79syn match lprologOperator ">"
80syn match lprologOperator "=<"
81syn match lprologOperator ">="
82syn match lprologOperator "::"
83syn match lprologOperator "="
84
85syn match lprologOperator "\."
86syn match lprologOperator ":"
87syn match lprologOperator "|"
88
89syn match lprologCommentErr "\*/"
90
91syn sync minlines=50
92syn sync maxlines=500
93
94
95" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020096" Only when an item doesn't have highlighting yet
97command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000098
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020099HiLink lprologComment Comment
100HiLink lprologTodo Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200102HiLink lprologKeyword Keyword
103HiLink lprologSpecial Special
104HiLink lprologOperator Operator
105HiLink lprologIdentifier Normal
Bram Moolenaar071d4272004-06-13 20:20:40 +0000106
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200107HiLink lprologInteger Number
108HiLink lprologReal Number
109HiLink lprologString String
Bram Moolenaar071d4272004-06-13 20:20:40 +0000110
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200111HiLink lprologCommentErr Error
112HiLink lprologBrackErr Error
113HiLink lprologParenErr Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000114
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200115HiLink lprologModuleName Special
116HiLink lprologTypeName Identifier
Bram Moolenaar071d4272004-06-13 20:20:40 +0000117
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200118HiLink lprologVariable Keyword
119HiLink lprologAtom Normal
120HiLink lprologClause Type
Bram Moolenaar071d4272004-06-13 20:20:40 +0000121
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200122delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000123
124let b:current_syntax = "lprolog"
125
126" vim: ts=8