blob: fd4b48003455ac7454c29b3040a04bb8ebd81d83 [file] [log] [blame]
Bram Moolenaard4755bb2004-09-02 19:12:26 +00001" Vim ABAP syntax file
Bram Moolenaar7fc904b2006-04-13 20:37:35 +00002" Language: SAP - ABAP/R4
Bram Moolenaar97d62492012-11-15 21:28:22 +01003" Revision: 2.1
Bram Moolenaar3a0d8092012-10-21 03:02:54 +02004" Maintainer: Marius Piedallu van Wyk <lailoken@gmail.com>
Bram Moolenaar97d62492012-11-15 21:28:22 +01005" Last Change: 2012 Oct 23
Bram Moolenaar3a0d8092012-10-21 03:02:54 +02006" Comment: Thanks to EPI-USE Labs for all your assistance. :)
Bram Moolenaard4755bb2004-09-02 19:12:26 +00007
Bram Moolenaar7fc904b2006-04-13 20:37:35 +00008" For version < 6.0: Clear all syntax items
9" For version >= 6.0: Quit when a syntax file was already loaded
Bram Moolenaard4755bb2004-09-02 19:12:26 +000010if version < 600
11 syntax clear
12elseif exists("b:current_syntax")
13 finish
14endif
15
16" Always ignore case
17syn case ignore
18
Bram Moolenaar97d62492012-11-15 21:28:22 +010019" Symbol Operators (space delimited)
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020020syn 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 "[()~:,\.&$]"
Bram Moolenaard4755bb2004-09-02 19:12:26 +000035
36" Literals
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020037syn region abapCharString matchgroup=abapCharString start="'" end="'" contains=abapCharStringEscape
38syn match abapCharStringEscape contained "''"
Bram Moolenaard4755bb2004-09-02 19:12:26 +000039
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020040syn region abapString matchgroup=abapString start="`" end="`" contains=abapStringEscape
41syn match abapStringEscape contained "``"
42
43syn match abapNumber "\-\=\<\d\+\>"
Bram Moolenaard4755bb2004-09-02 19:12:26 +000044syn region abapHex matchgroup=abapHex start="X'" end="'"
45
46if version >= 600
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020047 setlocal iskeyword=48-57,_,A-Z,a-z,/
Bram Moolenaard4755bb2004-09-02 19:12:26 +000048else
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020049 set iskeyword=48-57,_,A-Z,a-z,/
Bram Moolenaard4755bb2004-09-02 19:12:26 +000050endif
51
Bram Moolenaar97d62492012-11-15 21:28:22 +010052syn match abapNamespace "\</\w\+/"
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020053
54" multi-word statements
Bram Moolenaar97d62492012-11-15 21:28:22 +010055syn 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\>"
Bram Moolenaar3a0d8092012-10-21 03:02:54 +020072
73" hyphenated-word statements
Bram Moolenaar97d62492012-11-15 21:28:22 +010074syn 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\)\?\>"
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200111
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000112" ABAP statements
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200113syn keyword abapStatement ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT
Bram Moolenaar97d62492012-11-15 21:28:22 +0100114syn keyword abapStatement BACK
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200115syn 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
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000119syn keyword abapStatement GENERATE GET
120syn keyword abapStatement HIDE
Bram Moolenaar97d62492012-11-15 21:28:22 +0100121syn keyword abapStatement IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200122syn 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
Bram Moolenaar97d62492012-11-15 21:28:22 +0100126syn keyword abapStatement RAISE RANGES RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200127syn 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
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000130syn keyword abapStatement WHEN WHILE WINDOW WRITE
131
132" More statemets
Bram Moolenaar97d62492012-11-15 21:28:22 +0100133syn 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
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000137syn keyword abapStatement OCCURS STRUCTURE OBJECT PROPERTY
138syn keyword abapStatement CASTING APPEND RAISING VALUE COLOR
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200139syn keyword abapStatement CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT
140syn keyword abapStatement ID NUMBER FOR TITLE OUTPUT
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000141
142" Special ABAP specific tables:
Bram Moolenaar97d62492012-11-15 21:28:22 +0100143syn match abapSpecialTables "\<\(sy\|\(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
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000146
147" Pointer
148syn match abapSpecial "<\w\+>"
149
Bram Moolenaar97d62492012-11-15 21:28:22 +0100150" Abap common constants:
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000151syn keyword abapSpecial TRUE FALSE NULL SPACE
152
153" Includes
154syn region abapInclude start="include" end="." contains=abapComment
155
156" Types
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200157syn keyword abapTypes c n i p f d t x string xstring decfloat16 decfloat34
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000158
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
Bram Moolenaar97d62492012-11-15 21:28:22 +0100164syn keyword abapStatement strlen xstrlen charlen numofchar dbmaxlen
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000165
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000166syn 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
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000174syn keyword abapTodo contained TODO NOTE
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200175syn match abapTodo "\#EC\W\+\w\+"
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000176
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
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000189 HiLink abapComment Comment
190 HiLink abapInclude Include
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200191 HiLink abapStatement Statement
192 HiLink abapComplexStatement Statement
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000193 HiLink abapSpecial Special
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200194 HiLink abapNamespace Special
Bram Moolenaar97d62492012-11-15 21:28:22 +0100195 HiLink abapSpecialTables Special
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000196 HiLink abapSymbolOperator abapOperator
197 HiLink abapOperator Operator
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200198 HiLink abapCharString String
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000199 HiLink abapString String
200 HiLink abapFloat Float
Bram Moolenaar3a0d8092012-10-21 03:02:54 +0200201 HiLink abapTypes Type
202 HiLink abapSymbol Structure
Bram Moolenaar97d62492012-11-15 21:28:22 +0100203 HiLink abapStructure Structure
204 HiLink abapField Variable
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000205 HiLink abapNumber Number
206 HiLink abapHex Number
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000207
208 delcommand HiLink
209endif
210
211let b:current_syntax = "abap"
212
213" vim: ts=8 sw=2
Bram Moolenaar7fc904b2006-04-13 20:37:35 +0000214