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