summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/modsim3.vim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--runtime/syntax/modsim3.vim97
1 files changed, 97 insertions, 0 deletions
diff --git a/runtime/syntax/modsim3.vim b/runtime/syntax/modsim3.vim
new file mode 100644
index 0000000..ce35033
--- /dev/null
+++ b/runtime/syntax/modsim3.vim
@@ -0,0 +1,97 @@
+" Vim syntax file
+" Language: Modsim III, by compuware corporation (www.compuware.com)
+" Maintainer: Philipp Jocham <flip@sbox.tu-graz.ac.at>
+" Extension: *.mod
+" Last Change: 2001 May 10
+"
+" 2001 March 24:
+" - Modsim III is a registered trademark from compuware corporation
+" - made compatible with Vim 6.0
+"
+" 1999 Apr 22 : Changed modsim3Literal from region to match
+"
+" very basic things only (based on the modula2 and c files).
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+
+" syn case match " case sensitiv match is default
+
+" A bunch of keywords
+syn keyword modsim3Keyword ACTID ALL AND AS ASK
+syn keyword modsim3Keyword BY CALL CASE CLASS CONST DIV
+syn keyword modsim3Keyword DOWNTO DURATION ELSE ELSIF EXIT FALSE FIXED FOR
+syn keyword modsim3Keyword FOREACH FORWARD IF IN INHERITED INOUT
+syn keyword modsim3Keyword INTERRUPT LOOP
+syn keyword modsim3Keyword MOD MONITOR NEWVALUE
+syn keyword modsim3Keyword NONMODSIM NOT OBJECT OF ON OR ORIGINAL OTHERWISE OUT
+syn keyword modsim3Keyword OVERRIDE PRIVATE PROTO REPEAT
+syn keyword modsim3Keyword RETURN REVERSED SELF STRERR TELL
+syn keyword modsim3Keyword TERMINATE THISMETHOD TO TRUE TYPE UNTIL VALUE VAR
+syn keyword modsim3Keyword WAIT WAITFOR WHEN WHILE WITH
+
+" Builtin functions and procedures
+syn keyword modsim3Builtin ABS ACTIVATE ADDMONITOR CAP CHARTOSTR CHR CLONE
+syn keyword modsim3Builtin DEACTIVATE DEC DISPOSE FLOAT GETMONITOR HIGH INC
+syn keyword modsim3Builtin INPUT INSERT INTTOSTR ISANCESTOR LOW LOWER MAX MAXOF
+syn keyword modsim3Builtin MIN MINOF NEW OBJTYPEID OBJTYPENAME OBJVARID ODD
+syn keyword modsim3Builtin ONERROR ONEXIT ORD OUTPUT POSITION PRINT REALTOSTR
+syn keyword modsim3Builtin REPLACE REMOVEMONITOR ROUND SCHAR SIZEOF SPRINT
+syn keyword modsim3Builtin STRLEN STRTOCHAR STRTOINT STRTOREAL SUBSTR TRUNC
+syn keyword modsim3Builtin UPDATEVALUE UPPER VAL
+
+syn keyword modsim3BuiltinNoParen HALT TRACE
+
+" Special keywords
+syn keyword modsim3Block PROCEDURE METHOD MODULE MAIN DEFINITION IMPLEMENTATION
+syn keyword modsim3Block BEGIN END
+
+syn keyword modsim3Include IMPORT FROM
+
+syn keyword modsim3Type ANYARRAY ANYOBJ ANYREC ARRAY BOOLEAN CHAR INTEGER
+syn keyword modsim3Type LMONITORED LRMONITORED NILARRAY NILOBJ NILREC REAL
+syn keyword modsim3Type RECORD RMONITOR RMONITORED STRING
+
+" catch errros cause by wrong parenthesis
+" slight problem with "( *)" or "(* )". Hints?
+syn region modsim3Paren transparent start='(' end=')' contains=ALLBUT,modsim3ParenError
+syn match modsim3ParenError ")"
+
+" Comments
+syn region modsim3Comment1 start="{" end="}" contains=modsim3Comment1,modsim3Comment2
+syn region modsim3Comment2 start="(\*" end="\*)" contains=modsim3Comment1,modsim3Comment2
+" highlighting is wrong for constructs like "{ (* } *)",
+" which are allowed in Modsim III, but
+" I think something like that shouldn't be used anyway.
+
+" Strings
+syn region modsim3String start=+"+ end=+"+
+
+" Literals
+"syn region modsim3Literal start=+'+ end=+'+
+syn match modsim3Literal "'[^']'\|''''"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+" The default methods for highlighting. Can be overridden later
+hi def link modsim3Keyword Statement
+hi def link modsim3Block Statement
+hi def link modsim3Comment1 Comment
+hi def link modsim3Comment2 Comment
+hi def link modsim3String String
+hi def link modsim3Literal Character
+hi def link modsim3Include Statement
+hi def link modsim3Type Type
+hi def link modsim3ParenError Error
+hi def link modsim3Builtin Function
+hi def link modsim3BuiltinNoParen Function
+
+
+let b:current_syntax = "modsim3"
+
+" vim: ts=8 sw=2
+