3 " Maintainer: Haakon Riiser <hakonrk@fys.uio.no>
4 " URL: http://folk.uio.no/hakonrk/vim/syntax/simula.vim
5 " Last Change: 2001 May 15
7 " For version 5.x: Clear all syntax items
8 " For version 6.x: Quit when a syntax file was already loaded
11 elseif exists("b:current_syntax")
15 " No case sensitivity in Simula
18 syn match simulaComment "^%.*$" contains=simulaTodo
19 syn region simulaComment start="!\|\<comment\>" end=";" contains=simulaTodo
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
23 syn region simulaComment start="\<end\>"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>"
25 syn match simulaCharError "'.\{-2,}'"
26 syn match simulaCharacter "'.'"
27 syn match simulaCharacter "'!\d\{-}!'" contains=simulaSpecialChar
28 syn match simulaString '".\{-}"' contains=simulaSpecialChar,simulaTodo
30 syn keyword simulaBoolean true false
31 syn keyword simulaCompound begin end
32 syn keyword simulaConditional else if otherwise then until when
33 syn keyword simulaConstant none notext
34 syn keyword simulaFunction procedure
35 syn keyword simulaOperator eq eqv ge gt imp in is le lt ne new not qua
36 syn keyword simulaRepeat while for
37 syn keyword simulaReserved activate after at before delay go goto label prior reactivate switch to
38 syn keyword simulaStatement do inner inspect step this
39 syn keyword simulaStorageClass external hidden name protected value
40 syn keyword simulaStructure class
41 syn keyword simulaType array boolean character integer long real short text virtual
42 syn match simulaAssigned "\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2
43 syn match simulaOperator "[&:=<>+\-*/]"
44 syn match simulaOperator "\<and\(\s\+then\)\=\>"
45 syn match simulaOperator "\<or\(\s\+else\)\=\>"
46 syn match simulaReferenceType "\<ref\s*(.\{-})"
47 syn match simulaSemicolon ";"
48 syn match simulaSpecial "[(),.]"
49 syn match simulaSpecialCharErr "!\d\{-4,}!" contained
50 syn match simulaSpecialCharErr "!!" contained
51 syn match simulaSpecialChar "!\d\{-}!" contains=simulaSpecialCharErr contained
52 syn match simulaTodo "xxx\+" contained
54 " Integer number (or float without `.')
55 syn match simulaNumber "-\=\<\d\+\>"
56 " Real with optional exponent
57 syn match simulaReal "-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>"
58 " Real starting with a `.', optional exponent
59 syn match simulaReal "-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>"
61 if version >= 508 || !exists("did_simula_syntax_inits")
63 let did_simula_syntax_inits = 1
64 command -nargs=+ HiLink hi link <args>
66 command -nargs=+ HiLink hi def link <args>
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
98 let b:current_syntax = "simula"
99 " vim: sts=4 sw=4 ts=8