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