xref: /vim-8.2.3635/runtime/syntax/simula.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Simula
3071d4279SBram Moolenaar" Maintainer:	Haakon Riiser <[email protected]>
4071d4279SBram Moolenaar" URL:		http://folk.uio.no/hakonrk/vim/syntax/simula.vim
5071d4279SBram Moolenaar" Last Change:	2001 May 15
6071d4279SBram Moolenaar
789bcfda6SBram Moolenaar" quit when a syntax file was already loaded
889bcfda6SBram Moolenaarif exists("b:current_syntax")
9071d4279SBram Moolenaar    finish
10071d4279SBram Moolenaarendif
11071d4279SBram Moolenaar
12071d4279SBram Moolenaar" No case sensitivity in Simula
13071d4279SBram Moolenaarsyn case	ignore
14071d4279SBram Moolenaar
15071d4279SBram Moolenaarsyn match	simulaComment		"^%.*$" contains=simulaTodo
16071d4279SBram Moolenaarsyn region	simulaComment		start="!\|\<comment\>" end=";" contains=simulaTodo
17071d4279SBram Moolenaar
18071d4279SBram Moolenaar" Text between the keyword 'end' and either a semicolon or one of the
19071d4279SBram Moolenaar" keywords 'end', 'else', 'when' or 'otherwise' is also a comment
20071d4279SBram Moolenaarsyn region	simulaComment		start="\<end\>"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>"
21071d4279SBram Moolenaar
22071d4279SBram Moolenaarsyn match	simulaCharError		"'.\{-2,}'"
23071d4279SBram Moolenaarsyn match	simulaCharacter		"'.'"
24071d4279SBram Moolenaarsyn match	simulaCharacter		"'!\d\{-}!'" contains=simulaSpecialChar
25071d4279SBram Moolenaarsyn match	simulaString		'".\{-}"' contains=simulaSpecialChar,simulaTodo
26071d4279SBram Moolenaar
27071d4279SBram Moolenaarsyn keyword	simulaBoolean		true false
28071d4279SBram Moolenaarsyn keyword	simulaCompound		begin end
29071d4279SBram Moolenaarsyn keyword	simulaConditional	else if otherwise then until when
30071d4279SBram Moolenaarsyn keyword	simulaConstant		none notext
31071d4279SBram Moolenaarsyn keyword	simulaFunction		procedure
32071d4279SBram Moolenaarsyn keyword	simulaOperator		eq eqv ge gt imp in is le lt ne new not qua
33071d4279SBram Moolenaarsyn keyword	simulaRepeat		while for
34071d4279SBram Moolenaarsyn keyword	simulaReserved		activate after at before delay go goto label prior reactivate switch to
35071d4279SBram Moolenaarsyn keyword	simulaStatement		do inner inspect step this
36071d4279SBram Moolenaarsyn keyword	simulaStorageClass	external hidden name protected value
37071d4279SBram Moolenaarsyn keyword	simulaStructure		class
38071d4279SBram Moolenaarsyn keyword	simulaType		array boolean character integer long real short text virtual
39071d4279SBram Moolenaarsyn match	simulaAssigned		"\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2
40071d4279SBram Moolenaarsyn match	simulaOperator		"[&:=<>+\-*/]"
41071d4279SBram Moolenaarsyn match	simulaOperator		"\<and\(\s\+then\)\=\>"
42071d4279SBram Moolenaarsyn match	simulaOperator		"\<or\(\s\+else\)\=\>"
43071d4279SBram Moolenaarsyn match	simulaReferenceType	"\<ref\s*(.\{-})"
44071d4279SBram Moolenaarsyn match	simulaSemicolon		";"
45071d4279SBram Moolenaarsyn match	simulaSpecial		"[(),.]"
46071d4279SBram Moolenaarsyn match	simulaSpecialCharErr	"!\d\{-4,}!" contained
47071d4279SBram Moolenaarsyn match	simulaSpecialCharErr	"!!" contained
48071d4279SBram Moolenaarsyn match	simulaSpecialChar	"!\d\{-}!" contains=simulaSpecialCharErr contained
49071d4279SBram Moolenaarsyn match	simulaTodo		"xxx\+" contained
50071d4279SBram Moolenaar
51071d4279SBram Moolenaar" Integer number (or float without `.')
52071d4279SBram Moolenaarsyn match	simulaNumber		"-\=\<\d\+\>"
53071d4279SBram Moolenaar" Real with optional exponent
54071d4279SBram Moolenaarsyn match	simulaReal		"-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>"
55071d4279SBram Moolenaar" Real starting with a `.', optional exponent
56071d4279SBram Moolenaarsyn match	simulaReal		"-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>"
57071d4279SBram Moolenaar
58071d4279SBram Moolenaar
59*f37506f6SBram Moolenaarhi def link simulaAssigned		Identifier
60*f37506f6SBram Moolenaarhi def link simulaBoolean		Boolean
61*f37506f6SBram Moolenaarhi def link simulaCharacter		Character
62*f37506f6SBram Moolenaarhi def link simulaCharError		Error
63*f37506f6SBram Moolenaarhi def link simulaComment		Comment
64*f37506f6SBram Moolenaarhi def link simulaCompound		Statement
65*f37506f6SBram Moolenaarhi def link simulaConditional		Conditional
66*f37506f6SBram Moolenaarhi def link simulaConstant		Constant
67*f37506f6SBram Moolenaarhi def link simulaFunction		Function
68*f37506f6SBram Moolenaarhi def link simulaNumber			Number
69*f37506f6SBram Moolenaarhi def link simulaOperator		Operator
70*f37506f6SBram Moolenaarhi def link simulaReal			Float
71*f37506f6SBram Moolenaarhi def link simulaReferenceType		Type
72*f37506f6SBram Moolenaarhi def link simulaRepeat			Repeat
73*f37506f6SBram Moolenaarhi def link simulaReserved		Error
74*f37506f6SBram Moolenaarhi def link simulaSemicolon		Statement
75*f37506f6SBram Moolenaarhi def link simulaSpecial		Special
76*f37506f6SBram Moolenaarhi def link simulaSpecialChar		SpecialChar
77*f37506f6SBram Moolenaarhi def link simulaSpecialCharErr		Error
78*f37506f6SBram Moolenaarhi def link simulaStatement		Statement
79*f37506f6SBram Moolenaarhi def link simulaStorageClass		StorageClass
80*f37506f6SBram Moolenaarhi def link simulaString			String
81*f37506f6SBram Moolenaarhi def link simulaStructure		Structure
82*f37506f6SBram Moolenaarhi def link simulaTodo			Todo
83*f37506f6SBram Moolenaarhi def link simulaType			Type
84071d4279SBram Moolenaar
85071d4279SBram Moolenaar
86071d4279SBram Moolenaarlet b:current_syntax = "simula"
87071d4279SBram Moolenaar" vim: sts=4 sw=4 ts=8
88