diff options
Diffstat (limited to 'runtime/syntax/simula.vim')
-rw-r--r-- | runtime/syntax/simula.vim | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/runtime/syntax/simula.vim b/runtime/syntax/simula.vim new file mode 100644 index 000000000..e952ee26c --- /dev/null +++ b/runtime/syntax/simula.vim @@ -0,0 +1,99 @@ +" Vim syntax file +" Language: Simula +" Maintainer: Haakon Riiser <hakonrk@fys.uio.no> +" URL: http://folk.uio.no/hakonrk/vim/syntax/simula.vim +" Last Change: 2001 May 15 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syn clear +elseif exists("b:current_syntax") + finish +endif + +" No case sensitivity in Simula +syn case ignore + +syn match simulaComment "^%.*$" contains=simulaTodo +syn region simulaComment start="!\|\<comment\>" end=";" contains=simulaTodo + +" Text between the keyword 'end' and either a semicolon or one of the +" keywords 'end', 'else', 'when' or 'otherwise' is also a comment +syn region simulaComment start="\<end\>"lc=3 matchgroup=Statement end=";\|\<\(end\|else\|when\|otherwise\)\>" + +syn match simulaCharError "'.\{-2,}'" +syn match simulaCharacter "'.'" +syn match simulaCharacter "'!\d\{-}!'" contains=simulaSpecialChar +syn match simulaString '".\{-}"' contains=simulaSpecialChar,simulaTodo + +syn keyword simulaBoolean true false +syn keyword simulaCompound begin end +syn keyword simulaConditional else if otherwise then until when +syn keyword simulaConstant none notext +syn keyword simulaFunction procedure +syn keyword simulaOperator eq eqv ge gt imp in is le lt ne new not qua +syn keyword simulaRepeat while for +syn keyword simulaReserved activate after at before delay go goto label prior reactivate switch to +syn keyword simulaStatement do inner inspect step this +syn keyword simulaStorageClass external hidden name protected value +syn keyword simulaStructure class +syn keyword simulaType array boolean character integer long real short text virtual +syn match simulaAssigned "\<\h\w*\s*\((.*)\)\=\s*:\(=\|-\)"me=e-2 +syn match simulaOperator "[&:=<>+\-*/]" +syn match simulaOperator "\<and\(\s\+then\)\=\>" +syn match simulaOperator "\<or\(\s\+else\)\=\>" +syn match simulaReferenceType "\<ref\s*(.\{-})" +syn match simulaSemicolon ";" +syn match simulaSpecial "[(),.]" +syn match simulaSpecialCharErr "!\d\{-4,}!" contained +syn match simulaSpecialCharErr "!!" contained +syn match simulaSpecialChar "!\d\{-}!" contains=simulaSpecialCharErr contained +syn match simulaTodo "xxx\+" contained + +" Integer number (or float without `.') +syn match simulaNumber "-\=\<\d\+\>" +" Real with optional exponent +syn match simulaReal "-\=\<\d\+\(\.\d\+\)\=\(&&\=[+-]\=\d\+\)\=\>" +" Real starting with a `.', optional exponent +syn match simulaReal "-\=\.\d\+\(&&\=[+-]\=\d\+\)\=\>" + +if version >= 508 || !exists("did_simula_syntax_inits") + if version < 508 + let did_simula_syntax_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink simulaAssigned Identifier + HiLink simulaBoolean Boolean + HiLink simulaCharacter Character + HiLink simulaCharError Error + HiLink simulaComment Comment + HiLink simulaCompound Statement + HiLink simulaConditional Conditional + HiLink simulaConstant Constant + HiLink simulaFunction Function + HiLink simulaNumber Number + HiLink simulaOperator Operator + HiLink simulaReal Float + HiLink simulaReferenceType Type + HiLink simulaRepeat Repeat + HiLink simulaReserved Error + HiLink simulaSemicolon Statement + HiLink simulaSpecial Special + HiLink simulaSpecialChar SpecialChar + HiLink simulaSpecialCharErr Error + HiLink simulaStatement Statement + HiLink simulaStorageClass StorageClass + HiLink simulaString String + HiLink simulaStructure Structure + HiLink simulaTodo Todo + HiLink simulaType Type + + delcommand HiLink +endif + +let b:current_syntax = "simula" +" vim: sts=4 sw=4 ts=8 |