diff options
Diffstat (limited to 'syntax/modula3.vim')
-rw-r--r-- | syntax/modula3.vim | 113 |
1 files changed, 75 insertions, 38 deletions
diff --git a/syntax/modula3.vim b/syntax/modula3.vim index 7ebb966e..20ce0f4e 100644 --- a/syntax/modula3.vim +++ b/syntax/modula3.vim @@ -3,61 +3,98 @@ if polyglot#init#is_disabled(expand('<sfile>:p'), 'modula3', 'syntax/modula3.vim endif " Vim syntax file -" Language: Modula-3 -" Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se> -" Last Change: 2001 May 10 +" Language: Modula-3 +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: Timo Pedersen <dat97tpe@ludat.lth.se> +" Last Change: 2021 Apr 08 -" Basic things only... -" Based on the modula 2 syntax file - -" quit when a syntax file was already loaded if exists("b:current_syntax") finish endif -" Modula-3 is case-sensitive -" syn case ignore - " Modula-3 keywords -syn keyword modula3Keyword ABS ADDRES ADR ADRSIZE AND ANY -syn keyword modula3Keyword ARRAY AS BITS BITSIZE BOOLEAN BRANDED BY BYTESIZE -syn keyword modula3Keyword CARDINAL CASE CEILING CHAR CONST DEC DEFINITION -syn keyword modula3Keyword DISPOSE DIV -syn keyword modula3Keyword EVAL EXIT EXCEPT EXCEPTION -syn keyword modula3Keyword EXIT EXPORTS EXTENDED FALSE FINALLY FIRST FLOAT -syn keyword modula3Keyword FLOOR FROM GENERIC IMPORT -syn keyword modula3Keyword IN INC INTEGER ISTYPE LAST LOCK -syn keyword modula3Keyword LONGREAL LOOPHOLE MAX METHOD MIN MOD MUTEX -syn keyword modula3Keyword NARROW NEW NIL NOT NULL NUMBER OF OR ORD RAISE -syn keyword modula3Keyword RAISES READONLY REAL RECORD REF REFANY -syn keyword modula3Keyword RETURN ROOT -syn keyword modula3Keyword ROUND SET SUBARRAY TEXT TRUE TRUNC TRY TYPE -syn keyword modula3Keyword TYPECASE TYPECODE UNSAFE UNTRACED VAL VALUE VAR WITH +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\>" " 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 -" Comments -syn region modula3Comment start="(\*" end="\*)" +" 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 " Strings -syn region modula3String start=+"+ end=+"+ -syn region modula3String start=+'+ end=+'+ +syn region modula3String start=+"+ end=+"+ contains=modula3Escape -" Define the default highlighting. -" Only when an item doesn't have highlighting yet +" Pragmas +syn region modula3Pragma start="<\*" end="\*>" -" The default methods for highlighting. Can be overridden later -hi def link modula3Keyword Statement -hi def link modula3Block PreProc -hi def link modula3Comment Comment -hi def link modula3String String +" Comments +syn region modula3Comment start="(\*" end="\*)" contains=modula3Comment,@Spell +" 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 let b:current_syntax = "modula3" -"I prefer to use this... -"set ai -"vim: ts=8 +" vim: nowrap sw=2 sts=2 ts=8 noet: |