xref: /vim-8.2.3635/runtime/syntax/abap.vim (revision 36e294c0)
1" Vim ABAP syntax file
2"    Language: SAP - ABAP/R4
3"    Revision: 2.1
4"  Maintainer: Marius Piedallu van Wyk <[email protected]>
5" Last Change: 2013 Jun 13
6"     Comment: Thanks to EPI-USE Labs for all your assistance. :)
7
8" For version  < 6.0: Clear all syntax items
9" For version >= 6.0: Quit when a syntax file was already loaded
10if version < 600
11  syntax clear
12elseif exists("b:current_syntax")
13  finish
14endif
15
16" Always ignore case
17syn case ignore
18
19" Symbol Operators (space delimited)
20syn match   abapSymbolOperator  "\W+\W"
21syn match   abapSymbolOperator  "\W-\W"
22syn match   abapSymbolOperator  "\W/\W"
23syn match   abapSymbolOperator  "\W%\W"
24syn match   abapSymbolOperator  "\W=\W"
25syn match   abapSymbolOperator  "\W<\W"
26syn match   abapSymbolOperator  "\W>\W"
27syn match   abapSymbolOperator  "\W\*\W"
28syn match   abapSymbolOperator  "\W[<>]=\W"
29syn match   abapSymbolOperator  "\W<>\W"
30syn match   abapSymbolOperator  "\W\*\*\W"
31syn match   abapSymbolOperator  "\[\]"
32syn match   abapSymbolOperator  "->\*\?"
33syn match   abapSymbolOperator  "=>"
34syn match   abapSymbolOperator  "[()~:,\.&$]"
35
36" Literals
37syn region  abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape
38syn match   abapCharStringEscape contained "''"
39
40syn region  abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape
41syn match   abapStringEscape contained "``"
42
43syn match   abapNumber  "\-\=\<\d\+\>"
44syn region  abapHex     matchgroup=abapHex start="X'" end="'"
45
46if version >= 600
47  setlocal iskeyword=48-57,_,A-Z,a-z,/
48else
49  set iskeyword=48-57,_,A-Z,a-z,/
50endif
51
52syn match   abapNamespace        "\</\w\+/"
53
54" multi-word statements
55syn match   abapComplexStatement "\<\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\>"
56syn match   abapComplexStatement "\<NO\W\+STANDARD\W\+PAGE\W\+HEADING\>"
57syn match   abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>"
58syn match   abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>"
59syn match   abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>"
60syn match   abapComplexStatement "\<NO\W\+INTERVALS\>"
61syn match   abapComplexStatement "\<RESPECTING\W\+BLANKS\>"
62syn match   abapComplexStatement "\<SEPARATED\W\+BY\>"
63syn match   abapComplexStatement "\<USING\(\W\+EDIT\W\+MASK\)\?\>"
64syn match   abapComplexStatement "\<WHERE\(\W\+LINE\)\?\>"
65syn match   abapComplexStatement "\<RADIOBUTTON\W\+GROUP\>"
66syn match   abapComplexStatement "\<REF\W\+TO\>"
67syn match   abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>"
68syn match   abapComplexStatement "\<DELETING\W\+\(TRAILING\|LEADING\)\>"
69syn match   abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>"
70syn match   abapComplexStatement "\<INHERITING\W\+FROM\>"
71syn match   abapComplexStatement "\<\(UP\W\+\)\?TO\>"
72
73" hyphenated-word statements
74syn match   abapComplexStatement "\<LINE-COUNT\>"
75syn match   abapComplexStatement "\<ADD-CORRESPONDING\>"
76syn match   abapComplexStatement "\<AUTHORITY-CHECK\>"
77syn match   abapComplexStatement "\<BREAK-POINT\>"
78syn match   abapComplexStatement "\<CLASS-DATA\>"
79syn match   abapComplexStatement "\<CLASS-METHODS\>"
80syn match   abapComplexStatement "\<CLASS-METHOD\>"
81syn match   abapComplexStatement "\<DIVIDE-CORRESPONDING\>"
82syn match   abapComplexStatement "\<EDITOR-CALL\>"
83syn match   abapComplexStatement "\<END-OF-DEFINITION\>"
84syn match   abapComplexStatement "\<END-OF-PAGE\>"
85syn match   abapComplexStatement "\<END-OF-SELECTION\>"
86syn match   abapComplexStatement "\<FIELD-GROUPS\>"
87syn match   abapComplexStatement "\<FIELD-SYMBOLS\>"
88syn match   abapComplexStatement "\<FUNCTION-POOL\>"
89syn match   abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>"
90syn match   abapComplexStatement "\<MOVE-CORRESPONDING\>"
91syn match   abapComplexStatement "\<MULTIPLY-CORRESPONDING\>"
92syn match   abapComplexStatement "\<NEW-LINE\>"
93syn match   abapComplexStatement "\<NEW-PAGE\>"
94syn match   abapComplexStatement "\<NEW-SECTION\>"
95syn match   abapComplexStatement "\<PRINT-CONTROL\>"
96syn match   abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>"
97syn match   abapComplexStatement "\<SELECT-OPTIONS\>"
98syn match   abapComplexStatement "\<SELECTION-SCREEN\>"
99syn match   abapComplexStatement "\<START-OF-SELECTION\>"
100syn match   abapComplexStatement "\<SUBTRACT-CORRESPONDING\>"
101syn match   abapComplexStatement "\<SYNTAX-CHECK\>"
102syn match   abapComplexStatement "\<SYNTAX-TRACE\>"
103syn match   abapComplexStatement "\<TOP-OF-PAGE\>"
104syn match   abapComplexStatement "\<TYPE-POOL\>"
105syn match   abapComplexStatement "\<TYPE-POOLS\>"
106syn match   abapComplexStatement "\<LINE-SIZE\>"
107syn match   abapComplexStatement "\<LINE-COUNT\>"
108syn match   abapComplexStatement "\<MESSAGE-ID\>"
109syn match   abapComplexStatement "\<DISPLAY-MODE\>"
110syn match   abapComplexStatement "\<READ\(-ONLY\)\?\>"
111
112" ABAP statements
113syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT
114syn keyword abapStatement BACK
115syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY
116syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO
117syn keyword abapStatement ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT
118syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION
119syn keyword abapStatement GENERATE GET
120syn keyword abapStatement HIDE
121syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION
122syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP
123syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY
124syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS
125syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT
126syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK
127syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS
128syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES
129syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE
130syn keyword abapStatement WHEN WHILE WINDOW WRITE
131
132" More statemets
133syn keyword abapStatement LINES
134syn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE
135syn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE
136syn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING
137syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
138syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
139syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT
140syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT
141
142" Special ABAP specific tables:
143syn match   abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
144syn match   abapStructure     "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement
145syn match   abapField         "-\w\+"ms=s+1
146
147" Pointer
148syn match   abapSpecial  "<\w\+>"
149
150" Abap common constants:
151syn keyword abapSpecial  TRUE FALSE NULL SPACE
152
153" Includes
154syn region abapInclude   start="include" end="." contains=abapComment
155
156" Types
157syn keyword abapTypes    c n i p f d t x string xstring decfloat16 decfloat34
158
159" Atritmitic operators
160syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan
161syn keyword abapOperator cosh sinh tanh exp log log10 sqrt
162
163" String operators
164syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen
165
166syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN
167
168" An error? Not strictly... but cannot think of reason this is intended.
169syn match   abapError    "\.\."
170
171" Comments
172syn region  abapComment  start="^\*" end="$" contains=abapTodo
173syn match   abapComment  "\".*" contains=abapTodo
174syn keyword abapTodo     contained TODO NOTE
175syn match   abapTodo     "\#EC\W\+\w\+"
176
177" Define the default highlighting.
178" For version 5.7 and earlier: only when not done already
179" For version 5.8 and later: only when an item doesn't have highlighting yet
180if version >= 508 || !exists("did_abap_syntax_inits")
181  if version < 508
182    let did_abap_syntax_inits = 1
183    command -nargs=+ HiLink hi link <args>
184  else
185    command -nargs=+ HiLink hi def link <args>
186  endif
187
188  HiLink abapError          Error
189  HiLink abapComment        Comment
190  HiLink abapInclude        Include
191  HiLink abapStatement      Statement
192  HiLink abapComplexStatement      Statement
193  HiLink abapSpecial        Special
194  HiLink abapNamespace      Special
195  HiLink abapSpecialTables  Special
196  HiLink abapSymbolOperator abapOperator
197  HiLink abapOperator       Operator
198  HiLink abapCharString     String
199  HiLink abapString         String
200  HiLink abapFloat          Float
201  HiLink abapTypes          Type
202  HiLink abapSymbol         Structure
203  HiLink abapStructure      Structure
204  HiLink abapField          Variable
205  HiLink abapNumber         Number
206  HiLink abapHex            Number
207
208  delcommand HiLink
209endif
210
211let b:current_syntax = "abap"
212
213" vim: ts=8 sw=2
214
215