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