xref: /vim-8.2.3635/runtime/syntax/lace.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:		lace
3" Maintainer:	Jocelyn Fiat <[email protected]>
4" Last Change:	2001 May 09
5
6" Copyright Interactive Software Engineering, 1998
7" You are free to use this file as you please, but
8" if you make a change or improvement you must send
9" it to the maintainer at <[email protected]>
10
11
12" quit when a syntax file was already loaded
13if exists("b:current_syntax")
14  finish
15endif
16
17" LACE is case insensitive, but the style guide lines are not.
18
19if !exists("lace_case_insensitive")
20	syn case match
21else
22	syn case ignore
23endif
24
25" A bunch of useful LACE keywords
26syn keyword laceTopStruct		system root default option visible cluster
27syn keyword laceTopStruct		external generate end
28syn keyword laceOptionClause	collect assertion debug optimize trace
29syn keyword laceOptionClause	profile inline precompiled multithreaded
30syn keyword laceOptionClause	exception_trace dead_code_removal
31syn keyword laceOptionClause	array_optimization
32syn keyword laceOptionClause	inlining_size inlining
33syn keyword laceOptionClause	console_application dynamic_runtime
34syn keyword laceOptionClause	line_generation
35syn keyword laceOptionMark		yes no all
36syn keyword laceOptionMark		require ensure invariant loop check
37syn keyword laceClusterProp		use include exclude
38syn keyword laceAdaptClassName	adapt ignore rename as
39syn keyword laceAdaptClassName	creation export visible
40syn keyword laceExternal		include_path object makefile
41
42" Operators
43syn match   laceOperator		"\$"
44syn match   laceBrackets		"[[\]]"
45syn match   laceExport			"[{}]"
46
47" Constants
48syn keyword laceBool		true false
49syn keyword laceBool		True False
50syn region  laceString		start=+"+ skip=+%"+ end=+"+ contains=laceEscape,laceStringError
51syn match   laceEscape		contained "%[^/]"
52syn match   laceEscape		contained "%/\d\+/"
53syn match   laceEscape		contained "^[ \t]*%"
54syn match   laceEscape		contained "%[ \t]*$"
55syn match   laceStringError	contained "%/[^0-9]"
56syn match   laceStringError	contained "%/\d\+[^0-9/]"
57syn match   laceStringError	"'\(%[^/]\|%/\d\+/\|[^'%]\)\+'"
58syn match   laceCharacter	"'\(%[^/]\|%/\d\+/\|[^'%]\)'" contains=laceEscape
59syn match   laceNumber		"-\=\<\d\+\(_\d\+\)*\>"
60syn match   laceNumber		"\<[01]\+[bB]\>"
61syn match   laceNumber		"-\=\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\)\=\([eE][-+]\=\d\+\(_\d\+\)*\)\="
62syn match   laceNumber		"-\=\.\d\+\(_\d\+\)*\([eE][-+]\=\d\+\(_\d\+\)*\)\="
63syn match   laceComment		"--.*" contains=laceTodo
64
65
66syn case match
67
68" Case sensitive stuff
69
70syn keyword laceTodo		TODO XXX FIXME
71syn match	laceClassName	"\<[A-Z][A-Z0-9_]*\>"
72syn match	laceCluster		"[a-zA-Z][a-zA-Z0-9_]*\s*:"
73syn match	laceCluster		"[a-zA-Z][a-zA-Z0-9_]*\s*(\s*[a-zA-Z][a-zA-Z0-9_]*\s*)\s*:"
74
75" Catch mismatched parentheses
76syn match laceParenError	")"
77syn match laceBracketError	"\]"
78syn region laceGeneric		transparent matchgroup=laceBrackets start="\[" end="\]" contains=ALLBUT,laceBracketError
79syn region laceParen		transparent start="(" end=")" contains=ALLBUT,laceParenError
80
81" Should suffice for even very long strings and expressions
82syn sync lines=40
83
84" Define the default highlighting.
85" Only when an item doesn't have highlighting yet
86command -nargs=+ HiLink hi def link <args>
87
88HiLink laceTopStruct			PreProc
89
90HiLink laceOptionClause		Statement
91HiLink laceOptionMark			Constant
92HiLink laceClusterProp		Label
93HiLink laceAdaptClassName		Label
94HiLink laceExternal			Statement
95HiLink laceCluster			ModeMsg
96
97HiLink laceEscape				Special
98
99HiLink laceBool				Boolean
100HiLink laceString				String
101HiLink laceCharacter			Character
102HiLink laceClassName			Type
103HiLink laceNumber				Number
104
105HiLink laceOperator			Special
106HiLink laceArray				Special
107HiLink laceExport				Special
108HiLink laceCreation			Special
109HiLink laceBrackets			Special
110HiLink laceConstraint			Special
111
112HiLink laceComment			Comment
113
114HiLink laceError				Error
115HiLink laceStringError		Error
116HiLink laceParenError			Error
117HiLink laceBracketError		Error
118HiLink laceTodo				Todo
119
120delcommand HiLink
121
122let b:current_syntax = "lace"
123
124" vim: ts=4
125