blob: 9e64eea7d10f06f6d25fb82006f744c95ed0d8c8 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: lace
3" Maintainer: Jocelyn Fiat <utilities@eiffel.com>
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 <utilities@eiffel.com>
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