xref: /vim-8.2.3635/runtime/syntax/pascal.vim (revision 818c9e7e)
1" Vim syntax file
2" Language:	Pascal
3" Version: 2.8
4" Last Change:	2004/10/17 17:47:30
5" Maintainer:  Xavier Cr�gut <[email protected]>
6" Previous Maintainer:	Mario Eusebio <[email protected]>
7
8" Contributors: Tim Chase <[email protected]>,
9"	Stas Grabois <[email protected]>,
10"	Mazen NEIFER <[email protected]>,
11"	Klaus Hast <[email protected]>,
12"	Austin Ziegler <[email protected]>,
13"	Markus Koenig <[email protected]>
14
15" For version 5.x: Clear all syntax items
16" For version 6.x: Quit when a syntax file was already loaded
17if version < 600
18  syntax clear
19elseif exists("b:current_syntax")
20  finish
21endif
22
23
24syn case ignore
25syn sync lines=250
26
27syn keyword pascalBoolean	true false
28syn keyword pascalConditional	if else then
29syn keyword pascalConstant	nil maxint
30syn keyword pascalLabel		case goto label
31syn keyword pascalOperator	and div downto in mod not of or packed with
32syn keyword pascalRepeat	do for do repeat while to until
33syn keyword pascalStatement	procedure function
34syn keyword pascalStatement	program begin end const var type
35syn keyword pascalStruct	record
36syn keyword pascalType		array boolean char integer file pointer real set
37syn keyword pascalType		string text variant
38
39
40    " 20011222az: Added new items.
41syn keyword pascalTodo contained	TODO FIXME XXX DEBUG NOTE
42
43    " 20010723az: When wanted, highlight the trailing whitespace -- this is
44    " based on c_space_errors; to enable, use "pascal_space_errors".
45if exists("pascal_space_errors")
46    if !exists("pascal_no_trail_space_error")
47        syn match pascalSpaceError "\s\+$"
48    endif
49    if !exists("pascal_no_tab_space_error")
50        syn match pascalSpaceError " \+\t"me=e-1
51    endif
52endif
53
54
55
56" String
57if !exists("pascal_one_line_string")
58  syn region  pascalString matchgroup=pascalString start=+'+ end=+'+ contains=pascalStringEscape
59  if exists("pascal_gpc")
60    syn region  pascalString matchgroup=pascalString start=+"+ end=+"+ contains=pascalStringEscapeGPC
61  else
62    syn region  pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ contains=pascalStringEscape
63  endif
64else
65  "wrong strings
66  syn region  pascalStringError matchgroup=pascalStringError start=+'+ end=+'+ end=+$+ contains=pascalStringEscape
67  if exists("pascal_gpc")
68    syn region  pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscapeGPC
69  else
70    syn region  pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ end=+$+ contains=pascalStringEscape
71  endif
72
73  "right strings
74  syn region  pascalString matchgroup=pascalString start=+'+ end=+'+ oneline contains=pascalStringEscape
75  " To see the start and end of strings:
76  " syn region  pascalString matchgroup=pascalStringError start=+'+ end=+'+ oneline contains=pascalStringEscape
77  if exists("pascal_gpc")
78    syn region  pascalString matchgroup=pascalString start=+"+ end=+"+ oneline contains=pascalStringEscapeGPC
79  else
80    syn region  pascalStringError matchgroup=pascalStringError start=+"+ end=+"+ oneline contains=pascalStringEscape
81  endif
82end
83syn match   pascalStringEscape		contained "''"
84syn match   pascalStringEscapeGPC	contained '""'
85
86
87" syn match   pascalIdentifier		"\<[a-zA-Z_][a-zA-Z0-9_]*\>"
88
89
90if exists("pascal_symbol_operator")
91  syn match   pascalSymbolOperator      "[+\-/*=]"
92  syn match   pascalSymbolOperator      "[<>]=\="
93  syn match   pascalSymbolOperator      "<>"
94  syn match   pascalSymbolOperator      ":="
95  syn match   pascalSymbolOperator      "[()]"
96  syn match   pascalSymbolOperator      "\.\."
97  syn match   pascalSymbolOperator       "[\^.]"
98  syn match   pascalMatrixDelimiter	"[][]"
99  "if you prefer you can highlight the range
100  "syn match  pascalMatrixDelimiter	"[\d\+\.\.\d\+]"
101endif
102
103syn match  pascalNumber		"-\=\<\d\+\>"
104syn match  pascalFloat		"-\=\<\d\+\.\d\+\>"
105syn match  pascalFloat		"-\=\<\d\+\.\d\+[eE]-\=\d\+\>"
106syn match  pascalHexNumber	"\$[0-9a-fA-F]\+\>"
107
108if exists("pascal_no_tabs")
109  syn match pascalShowTab "\t"
110endif
111
112syn region pascalComment	start="(\*\|{"  end="\*)\|}" contains=pascalTodo,pascalSpaceError
113
114
115if !exists("pascal_no_functions")
116  " array functions
117  syn keyword pascalFunction	pack unpack
118
119  " memory function
120  syn keyword pascalFunction	Dispose New
121
122  " math functions
123  syn keyword pascalFunction	Abs Arctan Cos Exp Ln Sin Sqr Sqrt
124
125  " file functions
126  syn keyword pascalFunction	Eof Eoln Write Writeln
127  syn keyword pascalPredefined	Input Output
128
129  if exists("pascal_traditional")
130    " These functions do not seem to be defined in Turbo Pascal
131    syn keyword pascalFunction	Get Page Put
132  endif
133
134  " ordinal functions
135  syn keyword pascalFunction	Odd Pred Succ
136
137  " transfert functions
138  syn keyword pascalFunction	Chr Ord Round Trunc
139endif
140
141
142if !exists("pascal_traditional")
143
144  syn keyword pascalStatement	constructor destructor implementation inherited
145  syn keyword pascalStatement	interface unit uses
146  syn keyword pascalModifier	absolute assembler external far forward inline
147  syn keyword pascalModifier	interrupt near virtual
148  syn keyword pascalAcces	private public
149  syn keyword pascalStruct	object
150  syn keyword pascalOperator	shl shr xor
151
152  syn region pascalPreProc	start="(\*\$"  end="\*)" contains=pascalTodo
153  syn region pascalPreProc	start="{\$"  end="}"
154
155  syn region  pascalAsm		matchgroup=pascalAsmKey start="\<asm\>" end="\<end\>" contains=pascalComment,pascalPreProc
156
157  syn keyword pascalType	ShortInt LongInt Byte Word
158  syn keyword pascalType	ByteBool WordBool LongBool
159  syn keyword pascalType	Cardinal LongWord
160  syn keyword pascalType	Single Double Extended Comp
161  syn keyword pascalType	PChar
162
163
164  if !exists ("pascal_fpc")
165    syn keyword pascalPredefined	Result
166  endif
167
168  if exists("pascal_fpc")
169    syn region pascalComment        start="//" end="$" contains=pascalTodo,pascalSpaceError
170    syn keyword pascalStatement	fail otherwise operator
171    syn keyword pascalDirective	popstack
172    syn keyword pascalPredefined self
173    syn keyword pascalType	ShortString AnsiString WideString
174  endif
175
176  if exists("pascal_gpc")
177    syn keyword pascalType	SmallInt
178    syn keyword pascalType	AnsiChar
179    syn keyword pascalType	PAnsiChar
180  endif
181
182  if exists("pascal_delphi")
183    syn region pascalComment	start="//"  end="$" contains=pascalTodo,pascalSpaceError
184    syn keyword pascalType	SmallInt Int64
185    syn keyword pascalType	Real48 Currency
186    syn keyword pascalType	AnsiChar WideChar
187    syn keyword pascalType	ShortString AnsiString WideString
188    syn keyword pascalType	PAnsiChar PWideChar
189    syn match  pascalFloat	"-\=\<\d\+\.\d\+[dD]-\=\d\+\>"
190    syn match  pascalStringEscape	contained "#[12][0-9]\=[0-9]\="
191    syn keyword pascalStruct	class dispinterface
192    syn keyword pascalException	try except raise at on finally
193    syn keyword pascalStatement	out
194    syn keyword pascalStatement	library package
195    syn keyword pascalStatement	initialization finalization uses exports
196    syn keyword pascalStatement	property out resourcestring threadvar
197    syn keyword pascalModifier	contains
198    syn keyword pascalModifier	overridden reintroduce abstract
199    syn keyword pascalModifier	override export dynamic name message
200    syn keyword pascalModifier	dispid index stored default nodefault readonly
201    syn keyword pascalModifier	writeonly implements overload requires resident
202    syn keyword pascalAcces	protected published automated
203    syn keyword pascalDirective	register pascal cvar cdecl stdcall safecall
204    syn keyword pascalOperator	as is
205  endif
206
207  if exists("pascal_no_functions")
208    "syn keyword pascalModifier	read write
209    "may confuse with Read and Write functions.  Not easy to handle.
210  else
211    " control flow functions
212    syn keyword pascalFunction	Break Continue Exit Halt RunError
213
214    " ordinal functions
215    syn keyword pascalFunction	Dec Inc High Low
216
217    " math functions
218    syn keyword pascalFunction	Frac Int Pi
219
220    " string functions
221    syn keyword pascalFunction	Concat Copy Delete Insert Length Pos Str Val
222
223    " memory function
224    syn keyword pascalFunction	FreeMem GetMem MaxAvail MemAvail
225
226    " pointer and address functions
227    syn keyword pascalFunction	Addr Assigned CSeg DSeg Ofs Ptr Seg SPtr SSeg
228
229    " misc functions
230    syn keyword pascalFunction	Exclude FillChar Hi Include Lo Move ParamCount
231    syn keyword pascalFunction	ParamStr Random Randomize SizeOf Swap TypeOf
232    syn keyword pascalFunction	UpCase
233
234    " predefined variables
235    syn keyword pascalPredefined ErrorAddr ExitCode ExitProc FileMode FreeList
236    syn keyword pascalPredefined FreeZero HeapEnd HeapError HeapOrg HeapPtr
237    syn keyword pascalPredefined InOutRes OvrCodeList OvrDebugPtr OvrDosHandle
238    syn keyword pascalPredefined OvrEmsHandle OvrHeapEnd OvrHeapOrg OvrHeapPtr
239    syn keyword pascalPredefined OvrHeapSize OvrLoadList PrefixSeg RandSeed
240    syn keyword pascalPredefined SaveInt00 SaveInt02 SaveInt1B SaveInt21
241    syn keyword pascalPredefined SaveInt23 SaveInt24 SaveInt34 SaveInt35
242    syn keyword pascalPredefined SaveInt36 SaveInt37 SaveInt38 SaveInt39
243    syn keyword pascalPredefined SaveInt3A SaveInt3B SaveInt3C SaveInt3D
244    syn keyword pascalPredefined SaveInt3E SaveInt3F SaveInt75 SegA000 SegB000
245    syn keyword pascalPredefined SegB800 SelectorInc StackLimit Test8087
246
247    " file functions
248    syn keyword pascalFunction	Append Assign BlockRead BlockWrite ChDir Close
249    syn keyword pascalFunction	Erase FilePos FileSize Flush GetDir IOResult
250    syn keyword pascalFunction	MkDir Read Readln Rename Reset Rewrite RmDir
251    syn keyword pascalFunction	Seek SeekEof SeekEoln SetTextBuf Truncate
252
253    " crt unit
254    syn keyword pascalFunction	AssignCrt ClrEol ClrScr Delay DelLine GotoXY
255    syn keyword pascalFunction	HighVideo InsLine KeyPressed LowVideo NormVideo
256    syn keyword pascalFunction	NoSound ReadKey Sound TextBackground TextColor
257    syn keyword pascalFunction	TextMode WhereX WhereY Window
258    syn keyword pascalPredefined CheckBreak CheckEOF CheckSnow DirectVideo
259    syn keyword pascalPredefined LastMode TextAttr WindMin WindMax
260    syn keyword pascalFunction BigCursor CursorOff CursorOn
261    syn keyword pascalConstant Black Blue Green Cyan Red Magenta Brown
262    syn keyword pascalConstant LightGray DarkGray LightBlue LightGreen
263    syn keyword pascalConstant LightCyan LightRed LightMagenta Yellow White
264    syn keyword pascalConstant Blink ScreenWidth ScreenHeight bw40
265    syn keyword pascalConstant co40 bw80 co80 mono
266    syn keyword pascalPredefined TextChar
267
268    " DOS unit
269    syn keyword pascalFunction	AddDisk DiskFree DiskSize DosExitCode DosVersion
270    syn keyword pascalFunction	EnvCount EnvStr Exec Expand FindClose FindFirst
271    syn keyword pascalFunction	FindNext FSearch FSplit GetCBreak GetDate
272    syn keyword pascalFunction	GetEnv GetFAttr GetFTime GetIntVec GetTime
273    syn keyword pascalFunction	GetVerify Intr Keep MSDos PackTime SetCBreak
274    syn keyword pascalFunction	SetDate SetFAttr SetFTime SetIntVec SetTime
275    syn keyword pascalFunction	SetVerify SwapVectors UnPackTime
276    syn keyword pascalConstant	FCarry FParity FAuxiliary FZero FSign FOverflow
277    syn keyword pascalConstant	Hidden Sysfile VolumeId Directory Archive
278    syn keyword pascalConstant	AnyFile fmClosed fmInput fmOutput fmInout
279    syn keyword pascalConstant	TextRecNameLength TextRecBufSize
280    syn keyword pascalType	ComStr PathStr DirStr NameStr ExtStr SearchRec
281    syn keyword pascalType	FileRec TextBuf TextRec Registers DateTime
282    syn keyword pascalPredefined DosError
283
284    "Graph Unit
285    syn keyword pascalFunction	Arc Bar Bar3D Circle ClearDevice ClearViewPort
286    syn keyword pascalFunction	CloseGraph DetectGraph DrawPoly Ellipse
287    syn keyword pascalFunction	FillEllipse FillPoly FloodFill GetArcCoords
288    syn keyword pascalFunction	GetAspectRatio GetBkColor GetColor
289    syn keyword pascalFunction	GetDefaultPalette GetDriverName GetFillPattern
290    syn keyword pascalFunction	GetFillSettings GetGraphMode GetImage
291    syn keyword pascalFunction	GetLineSettings GetMaxColor GetMaxMode GetMaxX
292    syn keyword pascalFunction	GetMaxY GetModeName GetModeRange GetPalette
293    syn keyword pascalFunction	GetPaletteSize GetPixel GetTextSettings
294    syn keyword pascalFunction	GetViewSettings GetX GetY GraphDefaults
295    syn keyword pascalFunction	GraphErrorMsg GraphResult ImageSize InitGraph
296    syn keyword pascalFunction	InstallUserDriver InstallUserFont Line LineRel
297    syn keyword pascalFunction	LineTo MoveRel MoveTo OutText OutTextXY
298    syn keyword pascalFunction	PieSlice PutImage PutPixel Rectangle
299    syn keyword pascalFunction	RegisterBGIDriver RegisterBGIFont
300    syn keyword pascalFunction	RestoreCRTMode Sector SetActivePage
301    syn keyword pascalFunction	SetAllPallette SetAspectRatio SetBkColor
302    syn keyword pascalFunction	SetColor SetFillPattern SetFillStyle
303    syn keyword pascalFunction	SetGraphBufSize SetGraphMode SetLineStyle
304    syn keyword pascalFunction	SetPalette SetRGBPalette SetTextJustify
305    syn keyword pascalFunction	SetTextStyle SetUserCharSize SetViewPort
306    syn keyword pascalFunction	SetVisualPage SetWriteMode TextHeight TextWidth
307    syn keyword pascalType	ArcCoordsType FillPatternType FillSettingsType
308    syn keyword pascalType	LineSettingsType PaletteType PointType
309    syn keyword pascalType	TextSettingsType ViewPortType
310
311    " string functions
312    syn keyword pascalFunction	StrAlloc StrBufSize StrCat StrComp StrCopy
313    syn keyword pascalFunction	StrDispose StrECopy StrEnd StrFmt StrIComp
314    syn keyword pascalFunction	StrLCat StrLComp StrLCopy StrLen StrLFmt
315    syn keyword pascalFunction	StrLIComp StrLower StrMove StrNew StrPas
316    syn keyword pascalFunction	StrPCopy StrPLCopy StrPos StrRScan StrScan
317    syn keyword pascalFunction	StrUpper
318  endif
319
320endif
321
322" Define the default highlighting.
323" For version 5.7 and earlier: only when not done already
324" For version 5.8 and later: only when an item doesn't have highlighting yet
325if version >= 508 || !exists("did_pascal_syn_inits")
326  if version < 508
327    let did_pascal_syn_inits = 1
328    command -nargs=+ HiLink hi link <args>
329  else
330    command -nargs=+ HiLink hi def link <args>
331  endif
332
333  HiLink pascalAcces		pascalStatement
334  HiLink pascalBoolean		Boolean
335  HiLink pascalComment		Comment
336  HiLink pascalConditional	Conditional
337  HiLink pascalConstant		Constant
338  HiLink pascalDelimiter	Identifier
339  HiLink pascalDirective	pascalStatement
340  HiLink pascalException	Exception
341  HiLink pascalFloat		Float
342  HiLink pascalFunction		Function
343  HiLink pascalLabel		Label
344  HiLink pascalMatrixDelimiter	Identifier
345  HiLink pascalModifier		Type
346  HiLink pascalNumber		Number
347  HiLink pascalOperator		Operator
348  HiLink pascalPredefined	pascalStatement
349  HiLink pascalPreProc		PreProc
350  HiLink pascalRepeat		Repeat
351  HiLink pascalSpaceError	Error
352  HiLink pascalStatement	Statement
353  HiLink pascalString		String
354  HiLink pascalStringEscape	Special
355  HiLink pascalStringEscapeGPC	Special
356  HiLink pascalStringError	Error
357  HiLink pascalStruct		pascalStatement
358  HiLink pascalSymbolOperator	pascalOperator
359  HiLink pascalTodo		Todo
360  HiLink pascalType		Type
361  HiLink pascalUnclassified	pascalStatement
362  "  HiLink pascalAsm		Assembler
363  HiLink pascalError		Error
364  HiLink pascalAsmKey		pascalStatement
365  HiLink pascalShowTab		Error
366
367  delcommand HiLink
368endif
369
370
371let b:current_syntax = "pascal"
372
373" vim: ts=8 sw=2
374