diff options
Diffstat (limited to 'runtime/syntax/jovial.vim')
-rw-r--r-- | runtime/syntax/jovial.vim | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/runtime/syntax/jovial.vim b/runtime/syntax/jovial.vim new file mode 100644 index 0000000..7c63841 --- /dev/null +++ b/runtime/syntax/jovial.vim @@ -0,0 +1,110 @@ +" Vim syntax file +" Language: JOVIAL J73 +" Version: 1.2 +" Maintainer: Paul McGinnis <paulmcg@aol.com> +" Last Change: 2011/06/17 +" Remark: Based on MIL-STD-1589C for JOVIAL J73 language + +" Quit when a (custom) syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +syn case ignore + +syn keyword jovialTodo TODO FIXME XXX contained + +" JOVIAL beads - first digit is number of bits, [0-9A-V] is the bit value +" representing 0-31 (for 5 bits on the bead) +syn match jovialBitConstant "[1-5]B'[0-9A-V]'" + +syn match jovialNumber "\<\d\+\>" + +syn match jovialFloat "\d\+E[-+]\=\d\+" +syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\=" +syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\=" + +syn region jovialComment start=/"/ end=/"/ contains=jovialTodo +syn region jovialComment start=/%/ end=/%/ contains=jovialTodo + +" JOVIAL variable names. This rule is to prevent conflicts with strings. +" Handle special case where ' character can be part of a JOVIAL variable name. +syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+" + +syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline + +" JOVIAL compiler directives -- see Section 9 in MIL-STD-1589C +syn region jovialPreProc start="\s*![A-Z]\+" end=/;/ + +syn keyword jovialOperator AND OR NOT XOR EQV MOD + +" See Section 2.1 in MIL-STD-1589C for data types +syn keyword jovialType ITEM B C P V +syn match jovialType "\<S\(,R\|,T\|,Z\)\=\>" +syn match jovialType "\<U\(,R\|,T\|,Z\)\=\>" +syn match jovialType "\<F\(,R\|,T\|,Z\)\=\>" +syn match jovialType "\<A\(,R\|,T\|,Z\)\=\>" + +syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W + +syn keyword jovialStructure TABLE STATUS + +syn keyword jovialConstant NULL + +syn keyword jovialBoolean FALSE TRUE + +syn keyword jovialTypedef TYPE + +syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL +syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR +syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS +syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP +syn keyword jovialStatement TERM THEN WHILE + +" JOVIAL extensions, see section 8.2.2 in MIL-STD-1589C +syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW +syn keyword jovialStatement PROTECTED READONLY REGISTER SIGNAL TO UPDATE WITH WRITEONLY ZONE + +" implementation specific constants and functions, see section 1.4 in MIL-STD-1589C +syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD +syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION +syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX +syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION +syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS +syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS +syn keyword jovialFunction BYTEPOS MAXINT MININT +syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE +syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION +syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION +syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED + +" JOVIAL built-in functions +syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE +syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST +syn keyword jovialFunction LAST NENT + +" Define the default highlighting. +hi def link jovialBitConstant Number +hi def link jovialBoolean Boolean +hi def link jovialComment Comment +hi def link jovialConstant Constant +hi def link jovialFloat Float +hi def link jovialFunction Function +" No color highlighting for JOVIAL identifiers. See above, +" this is to prevent confusion with JOVIAL strings +"hi def link jovialIdentifier Identifier +hi def link jovialNumber Number +hi def link jovialOperator Operator +hi def link jovialPreProc PreProc +hi def link jovialStatement Statement +hi def link jovialStorageClass StorageClass +hi def link jovialString String +hi def link jovialStructure Structure +hi def link jovialTodo Todo +hi def link jovialType Type +hi def link jovialTypedef Typedef + + +let b:current_syntax = "jovial" + +" vim: ts=8 |