blob: dbdaf8bec8ce2dac458f972ca7be3f621eb8ae1e [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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020012" quit when a syntax file was already loaded
13if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000014 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.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020085" Only when an item doesn't have highlighting yet
86command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000087
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020088HiLink laceTopStruct PreProc
Bram Moolenaar071d4272004-06-13 20:20:40 +000089
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020090HiLink laceOptionClause Statement
91HiLink laceOptionMark Constant
92HiLink laceClusterProp Label
93HiLink laceAdaptClassName Label
94HiLink laceExternal Statement
95HiLink laceCluster ModeMsg
Bram Moolenaar071d4272004-06-13 20:20:40 +000096
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020097HiLink laceEscape Special
Bram Moolenaar071d4272004-06-13 20:20:40 +000098
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020099HiLink laceBool Boolean
100HiLink laceString String
101HiLink laceCharacter Character
102HiLink laceClassName Type
103HiLink laceNumber Number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200105HiLink laceOperator Special
106HiLink laceArray Special
107HiLink laceExport Special
108HiLink laceCreation Special
109HiLink laceBrackets Special
110HiLink laceConstraint Special
Bram Moolenaar071d4272004-06-13 20:20:40 +0000111
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200112HiLink laceComment Comment
Bram Moolenaar071d4272004-06-13 20:20:40 +0000113
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200114HiLink laceError Error
115HiLink laceStringError Error
116HiLink laceParenError Error
117HiLink laceBracketError Error
118HiLink laceTodo Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000119
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200120delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000121
122let b:current_syntax = "lace"
123
124" vim: ts=4