xref: /vim-8.2.3635/runtime/syntax/jovial.vim (revision 251e1912)
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