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