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