1" Vim syntax file 2" Language: Modsim III, by compuware corporation (www.compuware.com) 3" Maintainer: Philipp Jocham <flip@sbox.tu-graz.ac.at> 4" Extension: *.mod 5" Last Change: 2001 May 10 6" 7" 2001 March 24: 8" - Modsim III is a registered trademark from compuware corporation 9" - made compatible with Vim 6.0 10" 11" 1999 Apr 22 : Changed modsim3Literal from region to match 12" 13" very basic things only (based on the modula2 and c files). 14 15if version < 600 16 " Remove any old syntax stuff hanging around 17 syn clear 18elseif exists("b:current_syntax") 19 finish 20endif 21 22 23" syn case match " case sensitiv match is default 24 25" A bunch of keywords 26syn keyword modsim3Keyword ACTID ALL AND AS ASK 27syn keyword modsim3Keyword BY CALL CASE CLASS CONST DIV 28syn keyword modsim3Keyword DOWNTO DURATION ELSE ELSIF EXIT FALSE FIXED FOR 29syn keyword modsim3Keyword FOREACH FORWARD IF IN INHERITED INOUT 30syn keyword modsim3Keyword INTERRUPT LOOP 31syn keyword modsim3Keyword MOD MONITOR NEWVALUE 32syn keyword modsim3Keyword NONMODSIM NOT OBJECT OF ON OR ORIGINAL OTHERWISE OUT 33syn keyword modsim3Keyword OVERRIDE PRIVATE PROTO REPEAT 34syn keyword modsim3Keyword RETURN REVERSED SELF STRERR TELL 35syn keyword modsim3Keyword TERMINATE THISMETHOD TO TRUE TYPE UNTIL VALUE VAR 36syn keyword modsim3Keyword WAIT WAITFOR WHEN WHILE WITH 37 38" Builtin functions and procedures 39syn keyword modsim3Builtin ABS ACTIVATE ADDMONITOR CAP CHARTOSTR CHR CLONE 40syn keyword modsim3Builtin DEACTIVATE DEC DISPOSE FLOAT GETMONITOR HIGH INC 41syn keyword modsim3Builtin INPUT INSERT INTTOSTR ISANCESTOR LOW LOWER MAX MAXOF 42syn keyword modsim3Builtin MIN MINOF NEW OBJTYPEID OBJTYPENAME OBJVARID ODD 43syn keyword modsim3Builtin ONERROR ONEXIT ORD OUTPUT POSITION PRINT REALTOSTR 44syn keyword modsim3Builtin REPLACE REMOVEMONITOR ROUND SCHAR SIZEOF SPRINT 45syn keyword modsim3Builtin STRLEN STRTOCHAR STRTOINT STRTOREAL SUBSTR TRUNC 46syn keyword modsim3Builtin UPDATEVALUE UPPER VAL 47 48syn keyword modsim3BuiltinNoParen HALT TRACE 49 50" Special keywords 51syn keyword modsim3Block PROCEDURE METHOD MODULE MAIN DEFINITION IMPLEMENTATION 52syn keyword modsim3Block BEGIN END 53 54syn keyword modsim3Include IMPORT FROM 55 56syn keyword modsim3Type ANYARRAY ANYOBJ ANYREC ARRAY BOOLEAN CHAR INTEGER 57syn keyword modsim3Type LMONITORED LRMONITORED NILARRAY NILOBJ NILREC REAL 58syn keyword modsim3Type RECORD RMONITOR RMONITORED STRING 59 60" catch errros cause by wrong parenthesis 61" slight problem with "( *)" or "(* )". Hints? 62syn region modsim3Paren transparent start='(' end=')' contains=ALLBUT,modsim3ParenError 63syn match modsim3ParenError ")" 64 65" Comments 66syn region modsim3Comment1 start="{" end="}" contains=modsim3Comment1,modsim3Comment2 67syn region modsim3Comment2 start="(\*" end="\*)" contains=modsim3Comment1,modsim3Comment2 68" highlighting is wrong for constructs like "{ (* } *)", 69" which are allowed in Modsim III, but 70" I think something like that shouldn't be used anyway. 71 72" Strings 73syn region modsim3String start=+"+ end=+"+ 74 75" Literals 76"syn region modsim3Literal start=+'+ end=+'+ 77syn match modsim3Literal "'[^']'\|''''" 78 79" Define the default highlighting. 80" For version 5.7 and earlier: only when not done already 81" For version 5.8 and later: only when an item doesn't have highlighting yet 82if version >= 508 || !exists("did_modsim3_syntax_inits") 83 if version < 508 84 let did_modsim3_syntax_inits = 1 85 command -nargs=+ HiLink hi link <args> 86 else 87 command -nargs=+ HiLink hi def link <args> 88 endif 89 90 " The default methods for highlighting. Can be overridden later 91 HiLink modsim3Keyword Statement 92 HiLink modsim3Block Statement 93 HiLink modsim3Comment1 Comment 94 HiLink modsim3Comment2 Comment 95 HiLink modsim3String String 96 HiLink modsim3Literal Character 97 HiLink modsim3Include Statement 98 HiLink modsim3Type Type 99 HiLink modsim3ParenError Error 100 HiLink modsim3Builtin Function 101 HiLink modsim3BuiltinNoParen Function 102 103 delcommand HiLink 104endif 105 106let b:current_syntax = "modsim3" 107 108" vim: ts=8 sw=2 109 110