jovial.vim (4107B)
1 " Vim syntax file 2 " Language: JOVIAL J73 3 " Version: 1.2 4 " Maintainer: Paul McGinnis <paulmcg@aol.com> 5 " Last Change: 2011/06/17 6 " Remark: Based on MIL-STD-1589C for JOVIAL J73 language 7 8 " Quit when a (custom) syntax file was already loaded 9 if exists("b:current_syntax") 10 finish 11 endif 12 13 syn case ignore 14 15 syn keyword jovialTodo TODO FIXME XXX contained 16 17 " JOVIAL beads - first digit is number of bits, [0-9A-V] is the bit value 18 " representing 0-31 (for 5 bits on the bead) 19 syn match jovialBitConstant "[1-5]B'[0-9A-V]'" 20 21 syn match jovialNumber "\<\d\+\>" 22 23 syn match jovialFloat "\d\+E[-+]\=\d\+" 24 syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\=" 25 syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\=" 26 27 syn region jovialComment start=/"/ end=/"/ contains=jovialTodo 28 syn region jovialComment start=/%/ end=/%/ contains=jovialTodo 29 30 " JOVIAL variable names. This rule is to prevent conflicts with strings. 31 " Handle special case where ' character can be part of a JOVIAL variable name. 32 syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+" 33 34 syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline 35 36 " JOVIAL compiler directives -- see Section 9 in MIL-STD-1589C 37 syn region jovialPreProc start="\s*![A-Z]\+" end=/;/ 38 39 syn keyword jovialOperator AND OR NOT XOR EQV MOD 40 41 " See Section 2.1 in MIL-STD-1589C for data types 42 syn keyword jovialType ITEM B C P V 43 syn match jovialType "\<S\(,R\|,T\|,Z\)\=\>" 44 syn match jovialType "\<U\(,R\|,T\|,Z\)\=\>" 45 syn match jovialType "\<F\(,R\|,T\|,Z\)\=\>" 46 syn match jovialType "\<A\(,R\|,T\|,Z\)\=\>" 47 48 syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W 49 50 syn keyword jovialStructure TABLE STATUS 51 52 syn keyword jovialConstant NULL 53 54 syn keyword jovialBoolean FALSE TRUE 55 56 syn keyword jovialTypedef TYPE 57 58 syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL 59 syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR 60 syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS 61 syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP 62 syn keyword jovialStatement TERM THEN WHILE 63 64 " JOVIAL extensions, see section 8.2.2 in MIL-STD-1589C 65 syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW 66 syn keyword jovialStatement PROTECTED READONLY REGISTER SIGNAL TO UPDATE WITH WRITEONLY ZONE 67 68 " implementation specific constants and functions, see section 1.4 in MIL-STD-1589C 69 syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD 70 syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION 71 syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX 72 syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION 73 syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS 74 syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS 75 syn keyword jovialFunction BYTEPOS MAXINT MININT 76 syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE 77 syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION 78 syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION 79 syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED 80 81 " JOVIAL built-in functions 82 syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE 83 syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST 84 syn keyword jovialFunction LAST NENT 85 86 " Define the default highlighting. 87 hi def link jovialBitConstant Number 88 hi def link jovialBoolean Boolean 89 hi def link jovialComment Comment 90 hi def link jovialConstant Constant 91 hi def link jovialFloat Float 92 hi def link jovialFunction Function 93 " No color highlighting for JOVIAL identifiers. See above, 94 " this is to prevent confusion with JOVIAL strings 95 "hi def link jovialIdentifier Identifier 96 hi def link jovialNumber Number 97 hi def link jovialOperator Operator 98 hi def link jovialPreProc PreProc 99 hi def link jovialStatement Statement 100 hi def link jovialStorageClass StorageClass 101 hi def link jovialString String 102 hi def link jovialStructure Structure 103 hi def link jovialTodo Todo 104 hi def link jovialType Type 105 hi def link jovialTypedef Typedef 106 107 108 let b:current_syntax = "jovial" 109 110 " vim: ts=8