xref: /vim-8.2.3635/runtime/syntax/lprolog.vim (revision cb03397a)
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" 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
138