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