jovial.vim 4.0 KB

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