1" Vim syntax file 2" Language: JOVIAL J73 3" Version: 1.2 4" Maintainer: Paul McGinnis <[email protected]> 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 9if exists("b:current_syntax") 10 finish 11endif 12 13syn case ignore 14 15syn 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) 19syn match jovialBitConstant "[1-5]B'[0-9A-V]'" 20 21syn match jovialNumber "\<\d\+\>" 22 23syn match jovialFloat "\d\+E[-+]\=\d\+" 24syn match jovialFloat "\d\+\.\d*\(E[-+]\=\d\+\)\=" 25syn match jovialFloat "\.\d\+\(E[-+]\=\d\+\)\=" 26 27syn region jovialComment start=/"/ end=/"/ contains=jovialTodo 28syn 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. 32syn match jovialIdentifier "[A-Z\$][A-Z0-9'\$]\+" 33 34syn region jovialString start="\s*'" skip=/''/ end=/'/ oneline 35 36" JOVIAL compiler directives -- see Section 9 in MIL-STD-1589C 37syn region jovialPreProc start="\s*![A-Z]\+" end=/;/ 38 39syn keyword jovialOperator AND OR NOT XOR EQV MOD 40 41" See Section 2.1 in MIL-STD-1589C for data types 42syn keyword jovialType ITEM B C P V 43syn match jovialType "\<S\(,R\|,T\|,Z\)\=\>" 44syn match jovialType "\<U\(,R\|,T\|,Z\)\=\>" 45syn match jovialType "\<F\(,R\|,T\|,Z\)\=\>" 46syn match jovialType "\<A\(,R\|,T\|,Z\)\=\>" 47 48syn keyword jovialStorageClass STATIC CONSTANT PARALLEL BLOCK N M D W 49 50syn keyword jovialStructure TABLE STATUS 51 52syn keyword jovialConstant NULL 53 54syn keyword jovialBoolean FALSE TRUE 55 56syn keyword jovialTypedef TYPE 57 58syn keyword jovialStatement ABORT BEGIN BY BYREF BYRES BYVAL CASE COMPOOL 59syn keyword jovialStatement DEF DEFAULT DEFINE ELSE END EXIT FALLTHRU FOR 60syn keyword jovialStatement GOTO IF INLINE INSTANCE LABEL LIKE OVERLAY POS 61syn keyword jovialStatement PROC PROGRAM REC REF RENT REP RETURN START STOP 62syn keyword jovialStatement TERM THEN WHILE 63 64" JOVIAL extensions, see section 8.2.2 in MIL-STD-1589C 65syn keyword jovialStatement CONDITION ENCAPSULATION EXPORTS FREE HANDLER IN INTERRUPT NEW 66syn 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 69syn keyword jovialConstant BITSINBYTE BITSINWORD LOCSINWORD 70syn keyword jovialConstant BYTESINWORD BITSINPOINTER INTPRECISION 71syn keyword jovialConstant FLOATPRECISION FIXEDPRECISION FLOATRADIX 72syn keyword jovialConstant MAXFLOATPRECISION MAXFIXEDPRECISION 73syn keyword jovialConstant MAXINTSIZE MAXBYTES MAXBITS 74syn keyword jovialConstant MAXTABLESIZE MAXSTOP MINSTOP MAXSIGDIGITS 75syn keyword jovialFunction BYTEPOS MAXINT MININT 76syn keyword jovialFunction IMPLFLOATPRECISION IMPLFIXEDPRECISION IMPLINTSIZE 77syn keyword jovialFunction MINSIZE MINFRACTION MINSCALE MINRELPRECISION 78syn keyword jovialFunction MAXFLOAT MINFLOAT FLOATRELPRECISION 79syn keyword jovialFunction FLOATUNDERFLOW MAXFIXED MINFIXED 80 81" JOVIAL built-in functions 82syn keyword jovialFunction LOC NEXT BIT BYTE SHIFTL SHIFTR ABS SGN BITSIZE 83syn keyword jovialFunction BYTESIZE WORDSIZE LBOUND UBOUND NWDSEN FIRST 84syn keyword jovialFunction LAST NENT 85 86" Define the default highlighting. 87hi def link jovialBitConstant Number 88hi def link jovialBoolean Boolean 89hi def link jovialComment Comment 90hi def link jovialConstant Constant 91hi def link jovialFloat Float 92hi 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 96hi def link jovialNumber Number 97hi def link jovialOperator Operator 98hi def link jovialPreProc PreProc 99hi def link jovialStatement Statement 100hi def link jovialStorageClass StorageClass 101hi def link jovialString String 102hi def link jovialStructure Structure 103hi def link jovialTodo Todo 104hi def link jovialType Type 105hi def link jovialTypedef Typedef 106 107 108let b:current_syntax = "jovial" 109 110" vim: ts=8 111