blob: 7c638417299fddbdbb1e1e38670c16e151742499 [file] [log] [blame]
Bram Moolenaar251e1912011-06-19 05:09:16 +02001" 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
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