xref: /vim-8.2.3635/runtime/syntax/abap.vim (revision 3a0d8090)
1" Vim ABAP syntax file
2"    Language: SAP - ABAP/R4
3"    Revision: 2.0
4"  Maintainer: Marius Piedallu van Wyk <[email protected]>
5" Last Change: 2012 Oct 12
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
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\)\|USING\)"
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"
71
72" hyphenated-word statements
73syn match   abapComplexStatement "LINE-COUNT"
74syn match   abapComplexStatement "ADD-CORRESPONDING"
75syn match   abapComplexStatement "AUTHORITY-CHECK"
76syn match   abapComplexStatement "BREAK-POINT"
77syn match   abapComplexStatement "CLASS-DATA"
78syn match   abapComplexStatement "CLASS-METHODS"
79syn match   abapComplexStatement "CLASS-METHOD"
80syn match   abapComplexStatement "DIVIDE-CORRESPONDING"
81syn match   abapComplexStatement "EDITOR-CALL"
82syn match   abapComplexStatement "END-OF-DEFINITION"
83syn match   abapComplexStatement "END-OF-PAGE"
84syn match   abapComplexStatement "END-OF-SELECTION"
85syn match   abapComplexStatement "FIELD-GROUPS"
86syn match   abapComplexStatement "FIELD-SYMBOLS"
87syn match   abapComplexStatement "FUNCTION-POOL"
88syn match   abapComplexStatement "MOVE-CORRESPONDING"
89syn match   abapComplexStatement "MULTIPLY-CORRESPONDING"
90syn match   abapComplexStatement "NEW-LINE"
91syn match   abapComplexStatement "NEW-PAGE"
92syn match   abapComplexStatement "NEW-SECTION"
93syn match   abapComplexStatement "PRINT-CONTROL"
94syn match   abapComplexStatement "RP-PROVIDE-FROM-LAST"
95syn match   abapComplexStatement "SELECT-OPTIONS"
96syn match   abapComplexStatement "SELECTION-SCREEN"
97syn match   abapComplexStatement "START-OF-SELECTION"
98syn match   abapComplexStatement "SUBTRACT-CORRESPONDING"
99syn match   abapComplexStatement "SYNTAX-CHECK"
100syn match   abapComplexStatement "SYNTAX-TRACE"
101syn match   abapComplexStatement "TOP-OF-PAGE"
102syn match   abapComplexStatement "TYPE-POOL"
103syn match   abapComplexStatement "TYPE-POOLS"
104syn match   abapComplexStatement "LINE-SIZE"
105syn match   abapComplexStatement "LINE-COUNT"
106syn match   abapComplexStatement "MESSAGE-ID"
107syn match   abapComplexStatement "DISPLAY-MODE"
108syn match   abapComplexStatement "READ\(-ONLY\)\?"
109
110" ABAP statements
111syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT
112syn keyword abapStatement BACK BOUND
113syn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY
114syn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO
115syn 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
116syn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION
117syn keyword abapStatement GENERATE GET
118syn keyword abapStatement HIDE
119syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIAL INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION IS
120syn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP
121syn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY
122syn keyword abapStatement ON OVERLAY OPTIONAL OTHERS
123syn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT
124syn keyword abapStatement RAISE RANGES RECEIVE REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK
125syn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS
126syn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES
127syn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE
128syn keyword abapStatement WHEN WHILE WINDOW WRITE
129
130" More statemets
131syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
132syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
133syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT
134syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT
135
136" Special ABAP specific tables:
137syn match   abapSpecial       "\(\W\|^\)\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)\(\W\|$\)"ms=s+1,me=e-1
138syn match   abapSpecialTables "\(sy\|\(p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
139syn match   abapSpecial       "\(\W\|^\)\w\+-\(\w\+-\w\+\|\w\+\)"ms=s+1 contains=abapSpecialTables,abapStatement,abapComplexStatement
140
141" Pointer
142syn match   abapSpecial  "<\w\+>"
143
144" Abap constants:
145syn keyword abapSpecial  TRUE FALSE NULL SPACE
146
147" Includes
148syn region abapInclude   start="include" end="." contains=abapComment
149
150" Types
151syn keyword abapTypes    c n i p f d t x string xstring decfloat16 decfloat34
152
153" Atritmitic operators
154syn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan
155syn keyword abapOperator cosh sinh tanh exp log log10 sqrt
156
157" String operators
158syn keyword abapOperator strlen xstrlen charlen numofchar dbmaxlen
159
160" Table operators
161syn keyword abapOperator lines
162
163" Table operators (SELECT operators)
164syn keyword abapOperator INTO WHERE GROUP BY HAVING ORDER BY SINGLE
165syn keyword abapOperator APPENDING CORRESPONDING FIELDS OF TABLE
166syn keyword abapOperator LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING
167syn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN
168
169" An error? Not strictly... but cannot think of reason this is intended.
170syn match   abapError    "\.\."
171
172" Comments
173syn region  abapComment  start="^\*" end="$" contains=abapTodo
174syn match   abapComment  "\".*" contains=abapTodo
175syn keyword abapTodo     contained TODO NOTE
176syn match   abapTodo     "\#EC\W\+\w\+"
177
178" Define the default highlighting.
179" For version 5.7 and earlier: only when not done already
180" For version 5.8 and later: only when an item doesn't have highlighting yet
181if version >= 508 || !exists("did_abap_syntax_inits")
182  if version < 508
183    let did_abap_syntax_inits = 1
184    command -nargs=+ HiLink hi link <args>
185  else
186    command -nargs=+ HiLink hi def link <args>
187  endif
188
189  HiLink abapError          Error
190  HiLink abapComment        Comment
191  HiLink abapInclude        Include
192  HiLink abapStatement      Statement
193  HiLink abapComplexStatement      Statement
194  HiLink abapSpecial        Special
195  HiLink abapNamespace      Special
196  HiLink abapSpecialTables  PreProc
197  HiLink abapSymbolOperator abapOperator
198  HiLink abapOperator       Operator
199  HiLink abapCharString     String
200  HiLink abapString         String
201  HiLink abapFloat          Float
202  HiLink abapTypes          Type
203  HiLink abapSymbol         Structure
204  HiLink abapNumber         Number
205  HiLink abapHex            Number
206
207  delcommand HiLink
208endif
209
210let b:current_syntax = "abap"
211
212" vim: ts=8 sw=2
213
214