xref: /vim-8.2.3635/runtime/syntax/plm.vim (revision cf2d8dee)
1" Vim syntax file
2" Language:	PL/M
3" Maintainer:	Philippe Coulonges <[email protected]>
4" Last change:	2003 May 11
5
6" For version 5.x: Clear all syntax items
7" For version 6.x: Quit when a syntax file was already loaded
8if version < 600
9  syntax clear
10elseif exists("b:current_syntax")
11  finish
12endif
13
14" PL/M is a case insensitive language
15syn case ignore
16
17syn keyword plmTodo contained	TODO FIXME XXX
18
19" String
20syn region  plmString		start=+'+  end=+'+
21
22syn match   plmOperator		"[@=\+\-\*\/\<\>]"
23
24syn match   plmIdentifier	"\<[a-zA-Z_][a-zA-Z0-9_]*\>"
25
26syn match   plmDelimiter	"[();,]"
27
28syn region  plmPreProc		start="^\s*\$\s*" skip="\\$" end="$"
29
30" FIXME : No Number support for floats, as I'm working on an embedded
31" project that doesn't use any.
32syn match   plmNumber		"-\=\<\d\+\>"
33syn match   plmNumber		"\<[0-9a-fA-F]*[hH]*\>"
34
35" If you don't like tabs
36"syn match plmShowTab "\t"
37"syn match plmShowTabc "\t"
38
39"when wanted, highlight trailing white space
40if exists("c_space_errors")
41  syn match	plmSpaceError	"\s*$"
42  syn match	plmSpaceError	" \+\t"me=e-1
43endif
44
45"
46  " Use the same control variable as C language for I believe
47  " users will want the same behavior
48if exists("c_comment_strings")
49  " FIXME : don't work fine with c_comment_strings set,
50  "	    which I don't care as I don't use
51
52  " A comment can contain plmString, plmCharacter and plmNumber.
53  " But a "*/" inside a plmString in a plmComment DOES end the comment!  So we
54  " need to use a special type of plmString: plmCommentString, which also ends on
55  " "*/", and sees a "*" at the start of the line as comment again.
56  syntax match	plmCommentSkip	contained "^\s*\*\($\|\s\+\)"
57  syntax region plmCommentString	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plmSpecial,plmCommentSkip
58  syntax region plmComment2String	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=plmSpecial
59  syntax region plmComment	start="/\*" end="\*/" contains=plmTodo,plmCommentString,plmCharacter,plmNumber,plmFloat,plmSpaceError
60  syntax match  plmComment	"//.*" contains=plmTodo,plmComment2String,plmCharacter,plmNumber,plmSpaceError
61else
62  syn region	plmComment	start="/\*" end="\*/" contains=plmTodo,plmSpaceError
63  syn match	plmComment	"//.*" contains=plmTodo,plmSpaceError
64endif
65
66syntax match	plmCommentError	"\*/"
67
68syn keyword plmReserved	ADDRESS AND AT BASED BY BYTE CALL CASE
69syn keyword plmReserved DATA DECLARE DISABLE DO DWORD
70syn keyword plmReserved	ELSE ENABLE END EOF EXTERNAL
71syn keyword plmReserved GO GOTO HALT IF INITIAL INTEGER INTERRUPT
72syn keyword plmReserved LABEL LITERALLY MINUS MOD NOT OR
73syn keyword plmReserved PLUS POINTER PROCEDURE PUBLIC
74syn keyword plmReserved REAL REENTRANT RETURN SELECTOR STRUCTURE
75syn keyword plmReserved THEN TO WHILE WORD XOR
76syn keyword plm386Reserved CHARINT HWORD LONGINT OFFSET QWORD SHORTINT
77
78syn keyword plmBuiltIn ABS ADJUSTRPL BLOCKINPUT BLOCKINWORD BLOCKOUTPUT
79syn keyword plmBuiltIn BLOCKOUTWORD BUILPTR CARRY CAUSEINTERRUPT CMPB
80syn keyword plmBuiltIn CMPW DEC DOUBLE FINDB FINDRB FINDRW FINDW FIX
81syn keyword plmBuiltIn FLAGS FLOAT GETREALERROR HIGH IABS INITREALMATHUNIT
82syn keyword plmBuiltIn INPUT INT INWORD LAST LOCKSET LENGTH LOW MOVB MOVE
83syn keyword plmBuiltIn MOVRB MOVRW MOVW NIL OUTPUT OUTWORD RESTOREREALSTATUS
84syn keyword plmBuiltIn ROL ROR SAL SAVEREALSTATUS SCL SCR SELECTOROF SETB
85syn keyword plmBuiltIn SETREALMODE SETW SHL SHR SIGN SIGNED SIZE SKIPB
86syn keyword plmBuiltIn SKIPRB SKIPRW SKIPW STACKBASE STACKPTR TIME SIZE
87syn keyword plmBuiltIn UNSIGN XLAT ZERO
88syn keyword plm386BuiltIn INTERRUPT SETINTERRUPT
89syn keyword plm286BuiltIn CLEARTASKSWITCHEDFLAG GETACCESSRIGHTS
90syn keyword plm286BuiltIn GETSEGMENTLIMIT LOCALTABLE MACHINESTATUS
91syn keyword plm286BuiltIn OFFSETOF PARITY RESTOREGLOBALTABLE
92syn keyword plm286BuiltIn RESTOREINTERRUPTTABLE SAVEGLOBALTABLE
93syn keyword plm286BuiltIn SAVEINTERRUPTTABLE SEGMENTREADABLE
94syn keyword plm286BuiltIn SEGMENTWRITABLE TASKREGISTER WAITFORINTERRUPT
95syn keyword plm386BuiltIn CONTROLREGISTER DEBUGREGISTER FINDHW
96syn keyword plm386BuiltIn FINDRHW INHWORD MOVBIT MOVRBIT MOVHW MOVRHW
97syn keyword plm386BuiltIn OUTHWORD SCANBIT SCANRBIT SETHW SHLD SHRD
98syn keyword plm386BuiltIn SKIPHW SKIPRHW TESTREGISTER
99syn keyword plm386w16BuiltIn BLOCKINDWORD BLOCKOUTDWORD CMPD FINDD
100syn keyword plm386w16BuiltIn FINDRD INDWORD MOVD MOVRD OUTDWORD
101syn keyword plm386w16BuiltIn SETD SKIPD SKIPRD
102
103syn sync lines=50
104
105" Define the default highlighting.
106" For version 5.7 and earlier: only when not done already
107" For version 5.8 and later: only when an item doesn't have highlighting yet
108if version >= 508 || !exists("did_plm_syntax_inits")
109  if version < 508
110    let did_plm_syntax_inits = 1
111    command -nargs=+ HiLink hi link <args>
112  else
113    command -nargs=+ HiLink hi def link <args>
114  endif
115
116 " The default methods for highlighting.  Can be overridden later
117"  HiLink plmLabel			Label
118"  HiLink plmConditional		Conditional
119"  HiLink plmRepeat			Repeat
120  HiLink plmTodo			Todo
121  HiLink plmNumber			Number
122  HiLink plmOperator			Operator
123  HiLink plmDelimiter			Operator
124  "HiLink plmShowTab			Error
125  "HiLink plmShowTabc			Error
126  HiLink plmIdentifier			Identifier
127  HiLink plmBuiltIn			Statement
128  HiLink plm286BuiltIn			Statement
129  HiLink plm386BuiltIn			Statement
130  HiLink plm386w16BuiltIn		Statement
131  HiLink plmReserved			Statement
132  HiLink plm386Reserved			Statement
133  HiLink plmPreProc			PreProc
134  HiLink plmCommentError		plmError
135  HiLink plmCommentString		plmString
136  HiLink plmComment2String		plmString
137  HiLink plmCommentSkip			plmComment
138  HiLink plmString			String
139  HiLink plmComment			Comment
140
141  delcommand HiLink
142endif
143
144let b:current_syntax = "plm"
145
146" vim: ts=8 sw=2
147
148