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