125 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:     LambdaProlog (Teyjus)
 | |
| " Filenames:    *.mod *.sig
 | |
| " Maintainer:   Markus Mottl  <markus.mottl@gmail.com>
 | |
| " URL:          http://www.ocaml.info/vim/syntax/lprolog.vim
 | |
| " Last Change:  2006 Feb 05
 | |
| "               2001 Apr 26 - Upgraded for new Vim version
 | |
| "               2000 Jun  5 - Initial release
 | |
| 
 | |
| " quit when a syntax file was already loaded
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " Lambda Prolog is case sensitive.
 | |
| syn case match
 | |
| 
 | |
| syn match   lprologBrackErr    "\]"
 | |
| syn match   lprologParenErr    ")"
 | |
| 
 | |
| syn cluster lprologContained contains=lprologTodo,lprologModuleName,lprologTypeNames,lprologTypeName
 | |
| 
 | |
| " Enclosing delimiters
 | |
| syn region  lprologEncl transparent matchgroup=lprologKeyword start="(" matchgroup=lprologKeyword end=")" contains=ALLBUT,@lprologContained,lprologParenErr
 | |
| syn region  lprologEncl transparent matchgroup=lprologKeyword start="\[" matchgroup=lprologKeyword end="\]" contains=ALLBUT,@lprologContained,lprologBrackErr
 | |
| 
 | |
| " General identifiers
 | |
| syn match   lprologIdentifier  "\<\(\w\|[-+*/\\^<>=`'~?@#$&!_]\)*\>"
 | |
| syn match   lprologVariable    "\<\(\u\|_\)\(\w\|[-+*/\\^<>=`'~?@#$&!]\)*\>"
 | |
| 
 | |
| syn match   lprologOperator  "/"
 | |
| 
 | |
| " Comments
 | |
| syn region  lprologComment  start="/\*" end="\*/" contains=lprologComment,lprologTodo
 | |
| syn region  lprologComment  start="%" end="$" contains=lprologTodo
 | |
| syn keyword lprologTodo  contained TODO FIXME XXX
 | |
| 
 | |
| syn match   lprologInteger  "\<\d\+\>"
 | |
| syn match   lprologReal     "\<\(\d\+\)\=\.\d+\>"
 | |
| syn region  lprologString   start=+"+ skip=+\\\\\|\\"+ end=+"+
 | |
| 
 | |
| " Clause definitions
 | |
| syn region  lprologClause start="^\w\+" end=":-\|\."
 | |
| 
 | |
| " Modules
 | |
| syn region  lprologModule matchgroup=lprologKeyword start="^\<module\>" matchgroup=lprologKeyword end="\."
 | |
| 
 | |
| " Types
 | |
| syn match   lprologKeyword "^\<type\>" skipwhite nextgroup=lprologTypeNames
 | |
| syn region  lprologTypeNames matchgroup=lprologBraceErr start="\<\w\+\>" matchgroup=lprologKeyword end="\." contained contains=lprologTypeName,lprologOperator
 | |
| syn match   lprologTypeName "\<\w\+\>" contained
 | |
| 
 | |
| " Keywords
 | |
| syn keyword lprologKeyword  end import accumulate accum_sig
 | |
| syn keyword lprologKeyword  local localkind closed sig
 | |
| syn keyword lprologKeyword  kind exportdef useonly
 | |
| syn keyword lprologKeyword  infixl infixr infix prefix
 | |
| syn keyword lprologKeyword  prefixr postfix postfixl
 | |
| 
 | |
| syn keyword lprologSpecial  pi sigma is true fail halt stop not
 | |
| 
 | |
| " Operators
 | |
| syn match   lprologSpecial ":-"
 | |
| syn match   lprologSpecial "->"
 | |
| syn match   lprologSpecial "=>"
 | |
| syn match   lprologSpecial "\\"
 | |
| syn match   lprologSpecial "!"
 | |
| 
 | |
| syn match   lprologSpecial ","
 | |
| syn match   lprologSpecial ";"
 | |
| syn match   lprologSpecial "&"
 | |
| 
 | |
| syn match   lprologOperator "+"
 | |
| syn match   lprologOperator "-"
 | |
| syn match   lprologOperator "*"
 | |
| syn match   lprologOperator "\~"
 | |
| syn match   lprologOperator "\^"
 | |
| syn match   lprologOperator "<"
 | |
| syn match   lprologOperator ">"
 | |
| syn match   lprologOperator "=<"
 | |
| syn match   lprologOperator ">="
 | |
| syn match   lprologOperator "::"
 | |
| syn match   lprologOperator "="
 | |
| 
 | |
| syn match   lprologOperator "\."
 | |
| syn match   lprologOperator ":"
 | |
| syn match   lprologOperator "|"
 | |
| 
 | |
| syn match   lprologCommentErr  "\*/"
 | |
| 
 | |
| syn sync minlines=50
 | |
| syn sync maxlines=500
 | |
| 
 | |
| 
 | |
| " Define the default highlighting.
 | |
| " Only when an item doesn't have highlighting yet
 | |
| 
 | |
| hi def link lprologComment     Comment
 | |
| hi def link lprologTodo	    Todo
 | |
| 
 | |
| hi def link lprologKeyword     Keyword
 | |
| hi def link lprologSpecial     Special
 | |
| hi def link lprologOperator    Operator
 | |
| hi def link lprologIdentifier  Normal
 | |
| 
 | |
| hi def link lprologInteger     Number
 | |
| hi def link lprologReal	    Number
 | |
| hi def link lprologString	    String
 | |
| 
 | |
| hi def link lprologCommentErr  Error
 | |
| hi def link lprologBrackErr    Error
 | |
| hi def link lprologParenErr    Error
 | |
| 
 | |
| hi def link lprologModuleName  Special
 | |
| hi def link lprologTypeName    Identifier
 | |
| 
 | |
| hi def link lprologVariable    Keyword
 | |
| hi def link lprologAtom	    Normal
 | |
| hi def link lprologClause	    Type
 | |
| 
 | |
| 
 | |
| let b:current_syntax = "lprolog"
 | |
| 
 | |
| " vim: ts=8
 |