xref: /vim-8.2.3635/runtime/syntax/abap.vim (revision 82be4849)
1d4755bb0SBram Moolenaar" Vim ABAP syntax file
27fc904b6SBram Moolenaar"    Language: SAP - ABAP/R4
33a0d8090SBram Moolenaar"  Maintainer: Marius Piedallu van Wyk <[email protected]>
4*82be4849SBram Moolenaar" Last Change: 2021 Jan 02
53a0d8090SBram Moolenaar"     Comment: Thanks to EPI-USE Labs for all your assistance. :)
6d4755bb0SBram Moolenaar
79d87a37eSBram Moolenaar" Quit when a syntax file was already loaded
889bcfda6SBram Moolenaarif exists("b:current_syntax")
9d4755bb0SBram Moolenaar  finish
10d4755bb0SBram Moolenaarendif
11d4755bb0SBram Moolenaar
12d4755bb0SBram Moolenaar" Always ignore case
13d4755bb0SBram Moolenaarsyn case ignore
14d4755bb0SBram Moolenaar
1597d62497SBram Moolenaar" Symbol Operators (space delimited)
163a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W+\W"
173a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W-\W"
183a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W/\W"
193a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W%\W"
203a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W=\W"
213a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W<\W"
223a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W>\W"
233a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W\*\W"
243a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W[<>]=\W"
253a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W<>\W"
263a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\W\*\*\W"
273a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "\[\]"
283a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "->\*\?"
293a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "=>"
303a0d8090SBram Moolenaarsyn match   abapSymbolOperator  "[()~:,\.&$]"
31d4755bb0SBram Moolenaar
32d4755bb0SBram Moolenaar" Literals
333a0d8090SBram Moolenaarsyn region  abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape
343a0d8090SBram Moolenaarsyn match   abapCharStringEscape contained "''"
35d4755bb0SBram Moolenaar
363a0d8090SBram Moolenaarsyn region  abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape
373a0d8090SBram Moolenaarsyn match   abapStringEscape contained "``"
383a0d8090SBram Moolenaar
393a0d8090SBram Moolenaarsyn match   abapNumber  "\-\=\<\d\+\>"
40d4755bb0SBram Moolenaarsyn region  abapHex     matchgroup=abapHex start="X'" end="'"
41d4755bb0SBram Moolenaar
423a0d8090SBram Moolenaarsetlocal iskeyword=48-57,_,A-Z,a-z,/
43d4755bb0SBram Moolenaar
4497d62497SBram Moolenaarsyn match   abapNamespace        "\</\w\+/"
453a0d8090SBram Moolenaar
463a0d8090SBram Moolenaar" multi-word statements
4797d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(WITH\W\+\(HEADER\W\+LINE\|FRAME\|KEY\)\|WITH\)\>"
4897d62497SBram Moolenaarsyn match   abapComplexStatement "\<NO\W\+STANDARD\W\+PAGE\W\+HEADING\>"
4997d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(EXIT\W\+FROM\W\+STEP\W\+LOOP\|EXIT\)\>"
5097d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(BEGIN\W\+OF\W\+\(BLOCK\|LINE\)\|BEGIN\W\+OF\)\>"
5197d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(END\W\+OF\W\+\(BLOCK\|LINE\)\|END\W\+OF\)\>"
5297d62497SBram Moolenaarsyn match   abapComplexStatement "\<NO\W\+INTERVALS\>"
5397d62497SBram Moolenaarsyn match   abapComplexStatement "\<RESPECTING\W\+BLANKS\>"
5497d62497SBram Moolenaarsyn match   abapComplexStatement "\<SEPARATED\W\+BY\>"
5597d62497SBram Moolenaarsyn match   abapComplexStatement "\<USING\(\W\+EDIT\W\+MASK\)\?\>"
5697d62497SBram Moolenaarsyn match   abapComplexStatement "\<WHERE\(\W\+LINE\)\?\>"
579d87a37eSBram Moolenaarsyn match   abapComplexStatement "\<GET\W\+\(TIME\(\W\+STAMP\)\?\(\W\+FIELD\)\?\|PF-STATUS\|BADI\|BIT\|CONNECTION\|CURSOR\|REFERENCE\W\+OF\)\>"
5897d62497SBram Moolenaarsyn match   abapComplexStatement "\<RADIOBUTTON\W\+GROUP\>"
5997d62497SBram Moolenaarsyn match   abapComplexStatement "\<REF\W\+TO\>"
6097d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(PUBLIC\|PRIVATE\|PROTECTED\)\(\W\+SECTION\)\?\>"
6197d62497SBram Moolenaarsyn match   abapComplexStatement "\<DELETING\W\+\(TRAILING\|LEADING\)\>"
6297d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(ALL\W\+OCCURRENCES\)\|\(\(FIRST\|LAST\)\W\+OCCURRENCE\)\>"
6397d62497SBram Moolenaarsyn match   abapComplexStatement "\<INHERITING\W\+FROM\>"
6497d62497SBram Moolenaarsyn match   abapComplexStatement "\<\(UP\W\+\)\?TO\>"
653a0d8090SBram Moolenaar
663a0d8090SBram Moolenaar" hyphenated-word statements
6797d62497SBram Moolenaarsyn match   abapComplexStatement "\<LINE-COUNT\>"
6897d62497SBram Moolenaarsyn match   abapComplexStatement "\<ADD-CORRESPONDING\>"
6997d62497SBram Moolenaarsyn match   abapComplexStatement "\<AUTHORITY-CHECK\>"
7097d62497SBram Moolenaarsyn match   abapComplexStatement "\<BREAK-POINT\>"
7197d62497SBram Moolenaarsyn match   abapComplexStatement "\<CLASS-DATA\>"
7297d62497SBram Moolenaarsyn match   abapComplexStatement "\<CLASS-METHODS\>"
7397d62497SBram Moolenaarsyn match   abapComplexStatement "\<CLASS-METHOD\>"
7497d62497SBram Moolenaarsyn match   abapComplexStatement "\<DIVIDE-CORRESPONDING\>"
7597d62497SBram Moolenaarsyn match   abapComplexStatement "\<EDITOR-CALL\>"
7697d62497SBram Moolenaarsyn match   abapComplexStatement "\<END-OF-DEFINITION\>"
7797d62497SBram Moolenaarsyn match   abapComplexStatement "\<END-OF-PAGE\>"
7897d62497SBram Moolenaarsyn match   abapComplexStatement "\<END-OF-SELECTION\>"
7997d62497SBram Moolenaarsyn match   abapComplexStatement "\<FIELD-GROUPS\>"
8097d62497SBram Moolenaarsyn match   abapComplexStatement "\<FIELD-SYMBOLS\>"
8197d62497SBram Moolenaarsyn match   abapComplexStatement "\<FUNCTION-POOL\>"
8297d62497SBram Moolenaarsyn match   abapComplexStatement "\<IS\W\+\(NOT\W\+\)\?\(ASSIGNED\|BOUND\|INITIAL\|SUPPLIED\)\>"
8397d62497SBram Moolenaarsyn match   abapComplexStatement "\<MOVE-CORRESPONDING\>"
8497d62497SBram Moolenaarsyn match   abapComplexStatement "\<MULTIPLY-CORRESPONDING\>"
8597d62497SBram Moolenaarsyn match   abapComplexStatement "\<NEW-LINE\>"
8697d62497SBram Moolenaarsyn match   abapComplexStatement "\<NEW-PAGE\>"
8797d62497SBram Moolenaarsyn match   abapComplexStatement "\<NEW-SECTION\>"
8897d62497SBram Moolenaarsyn match   abapComplexStatement "\<PRINT-CONTROL\>"
8997d62497SBram Moolenaarsyn match   abapComplexStatement "\<RP-PROVIDE-FROM-LAST\>"
9097d62497SBram Moolenaarsyn match   abapComplexStatement "\<SELECT-OPTIONS\>"
9197d62497SBram Moolenaarsyn match   abapComplexStatement "\<SELECTION-SCREEN\>"
9297d62497SBram Moolenaarsyn match   abapComplexStatement "\<START-OF-SELECTION\>"
9397d62497SBram Moolenaarsyn match   abapComplexStatement "\<SUBTRACT-CORRESPONDING\>"
9497d62497SBram Moolenaarsyn match   abapComplexStatement "\<SYNTAX-CHECK\>"
9597d62497SBram Moolenaarsyn match   abapComplexStatement "\<SYNTAX-TRACE\>"
9697d62497SBram Moolenaarsyn match   abapComplexStatement "\<TOP-OF-PAGE\>"
9797d62497SBram Moolenaarsyn match   abapComplexStatement "\<TYPE-POOL\>"
9897d62497SBram Moolenaarsyn match   abapComplexStatement "\<TYPE-POOLS\>"
9997d62497SBram Moolenaarsyn match   abapComplexStatement "\<LINE-SIZE\>"
10097d62497SBram Moolenaarsyn match   abapComplexStatement "\<LINE-COUNT\>"
10197d62497SBram Moolenaarsyn match   abapComplexStatement "\<MESSAGE-ID\>"
10297d62497SBram Moolenaarsyn match   abapComplexStatement "\<DISPLAY-MODE\>"
10397d62497SBram Moolenaarsyn match   abapComplexStatement "\<READ\(-ONLY\)\?\>"
1043a0d8090SBram Moolenaar
105d4755bb0SBram Moolenaar" ABAP statements
1063a0d8090SBram Moolenaarsyn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT
10797d62497SBram Moolenaarsyn keyword abapStatement BACK
1083a0d8090SBram Moolenaarsyn keyword abapStatement CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY
1093a0d8090SBram Moolenaarsyn keyword abapStatement DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO
1103a0d8090SBram Moolenaarsyn 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
1113a0d8090SBram Moolenaarsyn keyword abapStatement FETCH FIELDS FORM FORMAT FREE FROM FUNCTION
1129d87a37eSBram Moolenaarsyn keyword abapStatement GENERATE
113d4755bb0SBram Moolenaarsyn keyword abapStatement HIDE
11497d62497SBram Moolenaarsyn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION
1153a0d8090SBram Moolenaarsyn keyword abapStatement LEAVE LIKE LINE LOAD LOCAL LOOP
1163a0d8090SBram Moolenaarsyn keyword abapStatement MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY
1173a0d8090SBram Moolenaarsyn keyword abapStatement ON OVERLAY OPTIONAL OTHERS
1183a0d8090SBram Moolenaarsyn keyword abapStatement PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT
11997d62497SBram Moolenaarsyn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK
1203a0d8090SBram Moolenaarsyn keyword abapStatement SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS
1213a0d8090SBram Moolenaarsyn keyword abapStatement TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES
1223a0d8090SBram Moolenaarsyn keyword abapStatement UNASSIGN ULINE UNPACK UPDATE
123d4755bb0SBram Moolenaarsyn keyword abapStatement WHEN WHILE WINDOW WRITE
124d4755bb0SBram Moolenaar
125d4755bb0SBram Moolenaar" More statemets
12697d62497SBram Moolenaarsyn keyword abapStatement LINES
12797d62497SBram Moolenaarsyn keyword abapStatement INTO GROUP BY HAVING ORDER BY SINGLE
12897d62497SBram Moolenaarsyn keyword abapStatement APPENDING CORRESPONDING FIELDS OF TABLE
12997d62497SBram Moolenaarsyn keyword abapStatement LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER ROWS CONNECTING
130d4755bb0SBram Moolenaarsyn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
131d4755bb0SBram Moolenaarsyn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
1323a0d8090SBram Moolenaarsyn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT
1333a0d8090SBram Moolenaarsyn keyword abapStatement ID NUMBER FOR TITLE OUTPUT
134d4755bb0SBram Moolenaar
135d4755bb0SBram Moolenaar" Special ABAP specific tables:
13652b91d80SBram Moolenaarsyn match   abapSpecialTables "\<\(sy\|\(hrp\|p\|pa\)\d\d\d\d\|t\d\d\d.\|innnn\)-"me=e-1 contained
13797d62497SBram Moolenaarsyn match   abapStructure     "\<\w\+-[^\>]"me=e-2 contains=abapSpecialTables,abapStatement,abapComplexStatement
13897d62497SBram Moolenaarsyn match   abapField         "-\w\+"ms=s+1
139d4755bb0SBram Moolenaar
140d4755bb0SBram Moolenaar" Pointer
141d4755bb0SBram Moolenaarsyn match   abapSpecial  "<\w\+>"
142d4755bb0SBram Moolenaar
14397d62497SBram Moolenaar" Abap common constants:
144d4755bb0SBram Moolenaarsyn keyword abapSpecial  TRUE FALSE NULL SPACE
145d4755bb0SBram Moolenaar
146d4755bb0SBram Moolenaar" Includes
147d4755bb0SBram Moolenaarsyn region abapInclude   start="include" end="." contains=abapComment
148d4755bb0SBram Moolenaar
149d4755bb0SBram Moolenaar" Types
1509d87a37eSBram Moolenaarsyn keyword abapTypes    c n i int8 p f d t x string xstring decfloat16 decfloat34
151d4755bb0SBram Moolenaar
152d4755bb0SBram Moolenaar" Atritmitic operators
153d4755bb0SBram Moolenaarsyn keyword abapOperator abs sign ceil floor trunc frac acos asin atan cos sin tan
154d4755bb0SBram Moolenaarsyn keyword abapOperator cosh sinh tanh exp log log10 sqrt
155d4755bb0SBram Moolenaar
156d4755bb0SBram Moolenaar" String operators
15797d62497SBram Moolenaarsyn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen
158d4755bb0SBram Moolenaar
159d4755bb0SBram Moolenaarsyn keyword abapOperator EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN
160d4755bb0SBram Moolenaar
161d4755bb0SBram Moolenaar" An error? Not strictly... but cannot think of reason this is intended.
162d4755bb0SBram Moolenaarsyn match   abapError    "\.\."
163d4755bb0SBram Moolenaar
164d4755bb0SBram Moolenaar" Comments
165d4755bb0SBram Moolenaarsyn region  abapComment  start="^\*" end="$" contains=abapTodo
166d4755bb0SBram Moolenaarsyn match   abapComment  "\".*" contains=abapTodo
167d4755bb0SBram Moolenaarsyn keyword abapTodo     contained TODO NOTE
1683a0d8090SBram Moolenaarsyn match   abapTodo     "\#EC\W\+\w\+"
169d4755bb0SBram Moolenaar
170d4755bb0SBram Moolenaar" Define the default highlighting.
17189bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
172d4755bb0SBram Moolenaar
173f37506f6SBram Moolenaarhi def link abapError          Error
174f37506f6SBram Moolenaarhi def link abapComment        Comment
175f37506f6SBram Moolenaarhi def link abapInclude        Include
176f37506f6SBram Moolenaarhi def link abapStatement      Statement
177f37506f6SBram Moolenaarhi def link abapComplexStatement      Statement
178f37506f6SBram Moolenaarhi def link abapSpecial        Special
179f37506f6SBram Moolenaarhi def link abapNamespace      Special
180f37506f6SBram Moolenaarhi def link abapSpecialTables  Special
181f37506f6SBram Moolenaarhi def link abapSymbolOperator abapOperator
182f37506f6SBram Moolenaarhi def link abapOperator       Operator
183f37506f6SBram Moolenaarhi def link abapCharString     String
184f37506f6SBram Moolenaarhi def link abapString         String
185f37506f6SBram Moolenaarhi def link abapFloat          Float
186f37506f6SBram Moolenaarhi def link abapTypes          Type
187f37506f6SBram Moolenaarhi def link abapSymbol         Structure
188f37506f6SBram Moolenaarhi def link abapStructure      Structure
189f37506f6SBram Moolenaarhi def link abapField          Variable
190f37506f6SBram Moolenaarhi def link abapNumber         Number
191f37506f6SBram Moolenaarhi def link abapHex            Number
192d4755bb0SBram Moolenaar
193d4755bb0SBram Moolenaar
194d4755bb0SBram Moolenaarlet b:current_syntax = "abap"
195d4755bb0SBram Moolenaar
196d4755bb0SBram Moolenaar" vim: ts=8 sw=2
197