xref: /vim-8.2.3635/runtime/syntax/dylan.vim (revision 5f1920ad)
1" Vim syntax file
2" Language:	Dylan
3" Authors:	Justus Pendleton <[email protected]>
4"		Brent A. Fulgham <[email protected]>
5" Last Change:	Fri Sep 29 13:45:55 PDT 2000
6"
7" This syntax file is based on the Haskell, Perl, Scheme, and C
8" syntax files.
9
10" Part 1:  Syntax definition
11" quit when a syntax file was already loaded
12if exists("b:current_syntax")
13  finish
14endif
15
16syn case ignore
17
18setlocal lisp
19
20" Highlight special characters (those that have backslashes) differently
21syn match	dylanSpecial		display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
22
23" Keywords
24syn keyword	dylanBlock		afterwards begin block cleanup end
25syn keyword	dylanClassMods		abstract concrete primary inherited virtual
26syn keyword	dylanException		exception handler signal
27syn keyword	dylanParamDefs		method class function library macro interface
28syn keyword	dylanSimpleDefs		constant variable generic primary
29syn keyword	dylanOther		above below from by in instance local slot subclass then to
30syn keyword	dylanConditional	if when select case else elseif unless finally otherwise then
31syn keyword	dylanRepeat		begin for until while from to
32syn keyword	dylanStatement		define let
33syn keyword	dylanImport		use import export exclude rename create
34syn keyword	dylanMiscMods		open sealed domain singleton sideways inline functional
35
36" Matching rules for special forms
37syn match	dylanOperator		"\s[-!%&\*\+/=\?@\\^|~:]\+[-#!>%&:\*\+/=\?@\\^|~]*"
38syn match	dylanOperator		"\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./=\?@\\^|~:]*"
39" Numbers
40syn match	dylanNumber		"\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
41syn match	dylanNumber		"\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
42" Booleans
43syn match	dylanBoolean		"#t\|#f"
44" Comments
45syn match	dylanComment		"//.*"
46syn region	dylanComment		start="/\*" end="\*/"
47" Strings
48syn region	dylanString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=dySpecial
49syn match	dylanCharacter		"'[^\\]'"
50" Constants, classes, and variables
51syn match	dylanConstant		"$\<[a-zA-Z0-9\-]\+\>"
52syn match	dylanClass		"<\<[a-zA-Z0-9\-]\+\>>"
53syn match	dylanVariable		"\*\<[a-zA-Z0-9\-]\+\>\*"
54" Preconditions
55syn region	dylanPrecondit		start="^\s*#\s*\(if\>\|else\>\|endif\>\)" skip="\\$" end="$"
56
57" These appear at the top of files (usually).  I like to highlight the whole line
58" so that the definition stands out.  They should probably really be keywords, but they
59" don't generally appear in the middle of a line of code.
60syn region	dylanHeader	start="^[Mm]odule:" end="^$"
61
62" Define the default highlighting.
63" Only when an item doesn't have highlighting yet
64
65hi def link dylanBlock		PreProc
66hi def link dylanBoolean		Boolean
67hi def link dylanCharacter		Character
68hi def link dylanClass		Structure
69hi def link dylanClassMods		StorageClass
70hi def link dylanComment		Comment
71hi def link dylanConditional	Conditional
72hi def link dylanConstant		Constant
73hi def link dylanException		Exception
74hi def link dylanHeader		Macro
75hi def link dylanImport		Include
76hi def link dylanLabel		Label
77hi def link dylanMiscMods		StorageClass
78hi def link dylanNumber		Number
79hi def link dylanOther		Keyword
80hi def link dylanOperator		Operator
81hi def link dylanParamDefs		Keyword
82hi def link dylanPrecondit		PreCondit
83hi def link dylanRepeat		Repeat
84hi def link dylanSimpleDefs	Keyword
85hi def link dylanStatement		Macro
86hi def link dylanString		String
87hi def link dylanVariable		Identifier
88
89
90let b:current_syntax = "dylan"
91
92" vim:ts=8
93