xref: /vim-8.2.3635/runtime/syntax/modula3.vim (revision 56994d21)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:		Modula-3
3*56994d21SBram Moolenaar" Maintainer:		Doug Kearns <[email protected]>
4*56994d21SBram Moolenaar" Previous Maintainer:	Timo Pedersen <[email protected]>
5*56994d21SBram Moolenaar" Last Change:		2021 Apr 08
6071d4279SBram Moolenaar
789bcfda6SBram Moolenaarif exists("b:current_syntax")
8071d4279SBram Moolenaar  finish
9071d4279SBram Moolenaarendif
10071d4279SBram Moolenaar
11071d4279SBram Moolenaar" Modula-3 keywords
12*56994d21SBram Moolenaarsyn keyword modula3Keyword ANY ARRAY AS BITS BRANDED BY CASE CONST DEFINITION
13*56994d21SBram Moolenaarsyn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION EXIT EXPORTS FINALLY
14*56994d21SBram Moolenaarsyn keyword modula3Keyword FROM GENERIC IMPORT LOCK METHOD OF RAISE RAISES
15*56994d21SBram Moolenaarsyn keyword modula3Keyword READONLY RECORD REF RETURN SET TRY TYPE TYPECASE
16*56994d21SBram Moolenaarsyn keyword modula3Keyword UNSAFE VALUE VAR WITH
17*56994d21SBram Moolenaar
18*56994d21SBram Moolenaarsyn match modula3keyword "\<UNTRACED\>"
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" Special keywords, block delimiters etc
21071d4279SBram Moolenaarsyn keyword modula3Block PROCEDURE FUNCTION MODULE INTERFACE REPEAT THEN
22071d4279SBram Moolenaarsyn keyword modula3Block BEGIN END OBJECT METHODS OVERRIDES RECORD REVEAL
23071d4279SBram Moolenaarsyn keyword modula3Block WHILE UNTIL DO TO IF FOR ELSIF ELSE LOOP
24071d4279SBram Moolenaar
25*56994d21SBram Moolenaar" Reserved identifiers
26*56994d21SBram Moolenaarsyn keyword modula3Identifier ABS ADR ADRSIZE BITSIZE BYTESIZE CEILING DEC
27*56994d21SBram Moolenaarsyn keyword modula3Identifier DISPOSE FIRST FLOAT FLOOR INC ISTYPE LAST
28*56994d21SBram Moolenaarsyn keyword modula3Identifier LOOPHOLE MAX MIN NARROW NEW NUMBER ORD ROUND
29*56994d21SBram Moolenaarsyn keyword modula3Identifier SUBARRAY TRUNC TYPECODE VAL
30*56994d21SBram Moolenaar
31*56994d21SBram Moolenaar" Predefined types
32*56994d21SBram Moolenaarsyn keyword modula3Type ADDRESS BOOLEAN CARDINAL CHAR EXTENDED INTEGER
33*56994d21SBram Moolenaarsyn keyword modula3Type LONGCARD LONGINT LONGREAL MUTEX NULL REAL REFANY TEXT
34*56994d21SBram Moolenaarsyn keyword modula3Type WIDECHAR
35*56994d21SBram Moolenaar
36*56994d21SBram Moolenaarsyn match modula3Type "\<\%(UNTRACED\s\+\)\=ROOT\>"
37*56994d21SBram Moolenaar
38*56994d21SBram Moolenaar" Operators
39*56994d21SBram Moolenaarsyn keyword modulaOperator DIV MOD IN AND OR NOT
40*56994d21SBram Moolenaar
41*56994d21SBram Moolenaarif exists("modula3_operators")
42*56994d21SBram Moolenaar  syn match modula3Operator "\^"
43*56994d21SBram Moolenaar  syn match modula3Operator "+\|-\|\*\|/\|&"
44*56994d21SBram Moolenaar  " TODO: need to exclude = in procedure definitions
45*56994d21SBram Moolenaar  syn match modula3Operator "<=\|<\|>=\|>\|:\@<!=\|#"
46*56994d21SBram Moolenaarendif
47*56994d21SBram Moolenaar
48*56994d21SBram Moolenaar" Booleans
49*56994d21SBram Moolenaarsyn keyword modula3Boolean TRUE FALSE
50*56994d21SBram Moolenaar
51*56994d21SBram Moolenaar" Nil
52*56994d21SBram Moolenaarsyn keyword modula3Nil NIL
53*56994d21SBram Moolenaar
54*56994d21SBram Moolenaar" Integers
55*56994d21SBram Moolenaarsyn match modula3Integer "\<\d\+L\=\>"
56*56994d21SBram Moolenaarsyn match modula3Integer "\<\d\d\=_\x\+L\=\>"
57*56994d21SBram Moolenaar
58*56994d21SBram Moolenaar" Reals
59*56994d21SBram Moolenaarsyn match modula3Real	 "\c\<\d\+\.\d\+\%([EDX][+-]\=\d\+\)\=\>"
60*56994d21SBram Moolenaar
61*56994d21SBram Moolenaar" String escape sequences
62*56994d21SBram Moolenaarsyn match modula3Escape "\\['"ntrf]" contained display
63*56994d21SBram Moolenaarsyn match modula3Escape "\\\o\{3}"   contained display
64*56994d21SBram Moolenaarsyn match modula3Escape "\\\\"	     contained display
65*56994d21SBram Moolenaar
66*56994d21SBram Moolenaar" Characters
67*56994d21SBram Moolenaarsyn match modula3Character "'\%([^']\|\\.\|\\\o\{3}\)'" contains=modula3Escape
68071d4279SBram Moolenaar
69071d4279SBram Moolenaar" Strings
70*56994d21SBram Moolenaarsyn region modula3String start=+"+ end=+"+ contains=modula3Escape
71071d4279SBram Moolenaar
72*56994d21SBram Moolenaar" Pragmas
73*56994d21SBram Moolenaarsyn region modula3Pragma start="<\*" end="\*>"
74071d4279SBram Moolenaar
75*56994d21SBram Moolenaar" Comments
76*56994d21SBram Moolenaarsyn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell
77*56994d21SBram Moolenaar
78*56994d21SBram Moolenaar" Default highlighting
79*56994d21SBram Moolenaarhi def link modula3Block	Statement
80*56994d21SBram Moolenaarhi def link modula3Boolean	Boolean
81*56994d21SBram Moolenaarhi def link modula3Character	Character
82f37506f6SBram Moolenaarhi def link modula3Comment	Comment
83*56994d21SBram Moolenaarhi def link modula3Escape	Special
84*56994d21SBram Moolenaarhi def link modula3Identifier	Keyword
85*56994d21SBram Moolenaarhi def link modula3Integer	Number
86*56994d21SBram Moolenaarhi def link modula3Keyword	Statement
87*56994d21SBram Moolenaarhi def link modula3Nil		Constant
88*56994d21SBram Moolenaarhi def link modula3Operator	Operator
89*56994d21SBram Moolenaarhi def link modula3Pragma	PreProc
90*56994d21SBram Moolenaarhi def link modula3Real		Float
91f37506f6SBram Moolenaarhi def link modula3String	String
92*56994d21SBram Moolenaarhi def link modula3Type		Type
93071d4279SBram Moolenaar
94071d4279SBram Moolenaarlet b:current_syntax = "modula3"
95071d4279SBram Moolenaar
96*56994d21SBram Moolenaar" vim: nowrap sw=2 sts=2 ts=8 noet:
97