| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Vim syntax file | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | " Language:		Modula-3 | 
					
						
							|  |  |  | " Maintainer:		Doug Kearns <dougkearns@gmail.com> | 
					
						
							|  |  |  | " Previous Maintainer:	Timo Pedersen <dat97tpe@ludat.lth.se> | 
					
						
							|  |  |  | " Last Change:		2021 Apr 08 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | if exists("b:current_syntax") | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Modula-3 keywords | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | syn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION | 
					
						
							|  |  |  | syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY | 
					
						
							|  |  |  | syn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES | 
					
						
							|  |  |  | syn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE | 
					
						
							|  |  |  | syn keyword modula3Keyword UNSAFE VALUE VAR WITH | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match modula3keyword "\<UNTRACED\>" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Special keywords, block delimiters etc | 
					
						
							|  |  |  | syn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN | 
					
						
							|  |  |  | syn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL | 
					
						
							|  |  |  | syn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | " Reserved identifiers | 
					
						
							|  |  |  | syn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC | 
					
						
							|  |  |  | syn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST | 
					
						
							|  |  |  | syn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND | 
					
						
							|  |  |  | syn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Predefined types | 
					
						
							|  |  |  | syn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER | 
					
						
							|  |  |  | syn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT | 
					
						
							|  |  |  | syn keyword modula3Type WIDECHAR | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | syn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Operators | 
					
						
							|  |  |  | syn keyword modulaOperator DIV MOD IN AND OR NOT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if exists("modula3_operators") | 
					
						
							|  |  |  |   syn match modula3Operator "\^" | 
					
						
							|  |  |  |   syn match modula3Operator "+\|-\|\*\|/\|&" | 
					
						
							|  |  |  |   " TODO: need to exclude = in procedure definitions | 
					
						
							|  |  |  |   syn match modula3Operator "<=\|<\|>=\|>\|:\@<!=\|#" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Booleans | 
					
						
							|  |  |  | syn keyword modula3Boolean TRUE FALSE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Nil | 
					
						
							|  |  |  | syn keyword modula3Nil NIL | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Integers | 
					
						
							|  |  |  | syn match modula3Integer "\<\d\+L\=\>" | 
					
						
							|  |  |  | syn match modula3Integer "\<\d\d\=_\x\+L\=\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Reals | 
					
						
							|  |  |  | syn match modula3Real	 "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " String escape sequences | 
					
						
							|  |  |  | syn match modula3Escape "\\['"ntrf]" contained display | 
					
						
							|  |  |  | syn match modula3Escape "\\\o\{3}"   contained display | 
					
						
							|  |  |  | syn match modula3Escape "\\\\"	     contained display | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Characters | 
					
						
							|  |  |  | syn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Strings | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | syn region modula3String start=+"+ end=+"+ contains=modula3Escape | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | " Pragmas | 
					
						
							|  |  |  | syn region modula3Pragma start="<\*" end="\*>" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | " Comments | 
					
						
							|  |  |  | syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | " Default highlighting | 
					
						
							|  |  |  | hi def link modula3Block	Statement | 
					
						
							|  |  |  | hi def link modula3Boolean	Boolean | 
					
						
							|  |  |  | hi def link modula3Character	Character | 
					
						
							|  |  |  | hi def link modula3Comment	Comment | 
					
						
							|  |  |  | hi def link modula3Escape	Special | 
					
						
							|  |  |  | hi def link modula3Identifier	Keyword | 
					
						
							|  |  |  | hi def link modula3Integer	Number | 
					
						
							|  |  |  | hi def link modula3Keyword	Statement | 
					
						
							|  |  |  | hi def link modula3Nil		Constant | 
					
						
							|  |  |  | hi def link modula3Operator	Operator | 
					
						
							|  |  |  | hi def link modula3Pragma	PreProc | 
					
						
							|  |  |  | hi def link modula3Real		Float | 
					
						
							|  |  |  | hi def link modula3String	String | 
					
						
							|  |  |  | hi def link modula3Type		Type | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | let b:current_syntax = "modula3" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-17 16:31:09 +02:00
										 |  |  | " vim: nowrap sw=2 sts=2 ts=8 noet: |