xref: /vim-8.2.3635/runtime/syntax/lprolog.vim (revision bb76f24a)
1" Vim syntax file
2" Language:     LambdaProlog (Teyjus)
3" Filenames:    *.mod *.sig
4" Maintainer:   Markus Mottl  <[email protected]>
5" URL:          http://www.ocaml.info/vim/syntax/lprolog.vim
6" Last Change:  2006 Feb 05
7"               2001 Apr 26 - Upgraded for new Vim version
8"               2000 Jun  5 - Initial release
9
10" quit when a syntax file was already loaded
11if exists("b:current_syntax")
12  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.
96" Only when an item doesn't have highlighting yet
97
98hi def link lprologComment     Comment
99hi def link lprologTodo	    Todo
100
101hi def link lprologKeyword     Keyword
102hi def link lprologSpecial     Special
103hi def link lprologOperator    Operator
104hi def link lprologIdentifier  Normal
105
106hi def link lprologInteger     Number
107hi def link lprologReal	    Number
108hi def link lprologString	    String
109
110hi def link lprologCommentErr  Error
111hi def link lprologBrackErr    Error
112hi def link lprologParenErr    Error
113
114hi def link lprologModuleName  Special
115hi def link lprologTypeName    Identifier
116
117hi def link lprologVariable    Keyword
118hi def link lprologAtom	    Normal
119hi def link lprologClause	    Type
120
121
122let b:current_syntax = "lprolog"
123
124" vim: ts=8
125