xref: /vim-8.2.3635/runtime/syntax/simula.vim (revision cb03397a)
1" Vim syntax file
2" Language:	Simula
3" Maintainer:	Haakon Riiser <[email protected]>
4" URL:		http://folk.uio.no/hakonrk/vim/syntax/simula.vim
5" Last Change:	2001 May 15
6
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10    syn clear
11elseif exists("b:current_syntax")
12    finish
13endif
14
15" No case sensitivity in Simula
16syn case	ignore
17
18syn match	simulaComment		"^%.*$" contains=simulaTodo
19syn region	simulaComment		start="!\|\<comment\>" end=";" contains=simulaTodo
20
21" Text between the keyword 'end' and either a semicolon or one of the
22" keywords 'end', 'else', 'when' or 'otherwise' is also a comment
23syn region	simulaComment		start="\<end\>"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>"
24
25syn match	simulaCharError		"'.\{-2,}'"
26syn match	simulaCharacter		"'.'"
27syn match	simulaCharacter		"'!\d\{-}!'" contains=simulaSpecialChar
28syn match	simulaString		'".\{-}"' contains=simulaSpecialChar,simulaTodo
29
30syn keyword	simulaBoolean		true false
31syn keyword	simulaCompound		begin end
32syn keyword	simulaConditional	else if otherwise then until when
33syn keyword	simulaConstant		none notext
34syn keyword	simulaFunction		procedure
35syn keyword	simulaOperator		eq eqv ge gt imp in is le lt ne new not qua
36syn keyword	simulaRepeat		while for
37syn keyword	simulaReserved		activate after at before delay go goto label prior reactivate switch to
38syn keyword	simulaStatement		do inner inspect step this
39syn keyword	simulaStorageClass	external hidden name protected value
40syn keyword	simulaStructure		class
41syn keyword	simulaType		array boolean character integer long real short text virtual
42syn match	simulaAssigned		"\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2
43syn match	simulaOperator		"[&:=<>+\-*/]"
44syn match	simulaOperator		"\<and\(\s\+then\)\=\>"
45syn match	simulaOperator		"\<or\(\s\+else\)\=\>"
46syn match	simulaReferenceType	"\<ref\s*(.\{-})"
47syn match	simulaSemicolon		";"
48syn match	simulaSpecial		"[(),.]"
49syn match	simulaSpecialCharErr	"!\d\{-4,}!" contained
50syn match	simulaSpecialCharErr	"!!" contained
51syn match	simulaSpecialChar	"!\d\{-}!" contains=simulaSpecialCharErr contained
52syn match	simulaTodo		"xxx\+" contained
53
54" Integer number (or float without `.')
55syn match	simulaNumber		"-\=\<\d\+\>"
56" Real with optional exponent
57syn match	simulaReal		"-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>"
58" Real starting with a `.', optional exponent
59syn match	simulaReal		"-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>"
60
61if version >= 508 || !exists("did_simula_syntax_inits")
62    if version < 508
63	let did_simula_syntax_inits = 1
64	command -nargs=+ HiLink hi link <args>
65    else
66	command -nargs=+ HiLink hi def link <args>
67    endif
68
69    HiLink simulaAssigned		Identifier
70    HiLink simulaBoolean		Boolean
71    HiLink simulaCharacter		Character
72    HiLink simulaCharError		Error
73    HiLink simulaComment		Comment
74    HiLink simulaCompound		Statement
75    HiLink simulaConditional		Conditional
76    HiLink simulaConstant		Constant
77    HiLink simulaFunction		Function
78    HiLink simulaNumber			Number
79    HiLink simulaOperator		Operator
80    HiLink simulaReal			Float
81    HiLink simulaReferenceType		Type
82    HiLink simulaRepeat			Repeat
83    HiLink simulaReserved		Error
84    HiLink simulaSemicolon		Statement
85    HiLink simulaSpecial		Special
86    HiLink simulaSpecialChar		SpecialChar
87    HiLink simulaSpecialCharErr		Error
88    HiLink simulaStatement		Statement
89    HiLink simulaStorageClass		StorageClass
90    HiLink simulaString			String
91    HiLink simulaStructure		Structure
92    HiLink simulaTodo			Todo
93    HiLink simulaType			Type
94
95    delcommand HiLink
96endif
97
98let b:current_syntax = "simula"
99" vim: sts=4 sw=4 ts=8
100