blob: a274cc40bfdfa7abcfff69e0aa055e4b9f905076 [file] [log] [blame]
Bram Moolenaare2db6952013-07-24 19:53:36 +02001" Vim syntax file
2" Modified from http://plnet.org/files/vim/
3" using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html
4" 2012-11-13 Alan Thompson
5
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaare2db6952013-07-24 19:53:36 +02008 finish
9endif
10
11syn case ignore
12
13" Todo.
14syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE
15
16" pl1CommentGroup allows adding matches for special things in comments
17" 20010723az: Added this so that these could be matched in comments...
18syn cluster pl1CommentGroup contains=pl1Todo
19
20syn match pl1Garbage "[^ \t()]"
21syn match pl1Identifier "[a-z][a-z0-9$_#]*"
22syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*"
23
24" 20010723az: When wanted, highlight the trailing whitespace -- this is
25" based on c_space_errors
26if exists("c_space_errors")
27 if !exists("c_no_trail_space_error")
28 syn match pl1SpaceError "\s\+$"
29 endif
30 if !exists("c_no_tab_space_error")
31 syn match pl1SpaceError " \+\t"me=e-1
32 endif
33endif
34
35" Symbols.
36syn match pl1Symbol "\(;\|,\|\.\)"
37syn match pl1PreProcSym "%"
38
39" Operators.
40syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)"
41syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)"
42
43" Attributes
44syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT
45syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL
46syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY
47syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED
48syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE
49syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED
50syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS
51syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION
52syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL
53syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE
54syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT
55syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM
56syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL
57
58" Functions
59syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT
60syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG
61syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS
62syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION
63syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE
64syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY
65syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH
66syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2
67syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL
68syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT
69syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND
70syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT
71syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM
72syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN
73
74" Other keywords
75syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION
76syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE
77syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE
78syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD
79syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ
80syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2
81syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO
82syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O
83syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS
84syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE
85syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT
86syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE
87syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL
88syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO
89syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION
90syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL
91syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE
92syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL
93syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER
94syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT
95syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER
96syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER
97syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT
98syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS
99syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT
100syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE
101syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE
102syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG
103syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY
104syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL
105syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE
106syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV
107
108" PreProcessor keywords
109syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR
110syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC
111syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE
112
113" Statements
114syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY
115syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE
116syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP
117syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE
118syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF
119syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT
120syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP
121syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE
122
123" PL1's own keywords
124" syn match pl1Keyword "\<END\>"
125" syn match pl1Keyword "\.COUNT\>"hs=s+1
126" syn match pl1Keyword "\.EXISTS\>"hs=s+1
127" syn match pl1Keyword "\.FIRST\>"hs=s+1
128" syn match pl1Keyword "\.LAST\>"hs=s+1
129" syn match pl1Keyword "\.DELETE\>"hs=s+1
130" syn match pl1Keyword "\.PREV\>"hs=s+1
131" syn match pl1Keyword "\.NEXT\>"hs=s+1
132
133if exists("pl1_highlight_triggers")
134 syn keyword pl1Trigger INSERTING UPDATING DELETING
135endif
136
137" Conditionals.
138syn keyword pl1Conditional ELSIF ELSE IF
139syn match pl1Conditional "\<END\s\+IF\>"
140
141" Loops.
142syn keyword pl1Repeat FOR LOOP WHILE FORALL
143syn match pl1Repeat "\<END\s\+LOOP\>"
144
145" Various types of comments.
146" 20010723az: Added the ability to treat strings within comments just like
147" C does.
148if exists("c_comment_strings")
149 syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)"
150 syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip
151 syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$"
152 syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
153 syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
154else
155 syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError
156 syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError
157endif
158
159" 20010723az: These are the old comment commands ... commented out.
160" syn match pl1Comment "--.*$" contains=pl1Todo
161" syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo
162syn sync ccomment pl1Comment
163syn sync ccomment pl1CommentL
164
165" To catch unterminated string literals.
166syn match pl1StringError "'.*$"
167
168" Various types of literals.
169" 20010723az: Added stuff for comment matching.
170syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
171syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
172syn match pl1IntLiteral contained "[+-]\=\d\+"
173syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*"
174syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*"
175"syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\="
176syn match pl1CharLiteral "'[^']'"
177syn match pl1StringLiteral "'\([^']\|''\)*'"
178syn keyword pl1BooleanLiteral TRUE FALSE NULL
179
180" The built-in types.
181syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN
182syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL
183syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR
184syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE
185syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB
186syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER
187syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD
188syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME
189syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED
190syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED
191syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR
192syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE
193
194" A type-attribute is really a type.
195" 20020916bp: Removed leading part of pattern to avoid highlighting the
196" object
197syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>"
198
199" All other attributes.
200syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>"
201
202" Catch errors caused by wrong parentheses and brackets
203" 20010723az: significantly more powerful than the values -- commented out
204" below the replaced values. This adds the C functionality to PL/SQL.
205syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom
206if exists("c_no_bracket_error")
207 syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup
208 syn match pl1ParenError ")"
209 syn match pl1ErrInParen contained "[{}]"
210else
211 syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket
212 syn match pl1ParenError "[\])]"
213 syn match pl1ErrInParen contained "[{}]"
214 syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen
215 syn match pl1ErrInBracket contained "[);{}]"
216endif
217" syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError
218" syn match pl1ParenError ")"
219
220" Syntax Synchronizing
221syn sync minlines=10 maxlines=100
222
223" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200224" Only when and item doesn't have highlighting yet.
Bram Moolenaare2db6952013-07-24 19:53:36 +0200225
Bram Moolenaarf37506f2016-08-31 22:22:10 +0200226hi def link pl1Attribute Macro
227hi def link pl1BlockError Error
228hi def link pl1BooleanLiteral Boolean
229hi def link pl1CharLiteral Character
230hi def link pl1Comment Comment
231hi def link pl1CommentL Comment
232hi def link pl1Conditional Conditional
233hi def link pl1Error Error
234hi def link pl1ErrInBracket Error
235hi def link pl1ErrInBlock Error
236hi def link pl1ErrInParen Error
237hi def link pl1Exception Function
238hi def link pl1FloatLiteral Float
239hi def link pl1Function Function
240hi def link pl1Garbage Error
241hi def link pl1HostIdentifier Label
242hi def link pl1Identifier Normal
243hi def link pl1IntLiteral Number
244hi def link pl1Operator Operator
245hi def link pl1Paren Normal
246hi def link pl1ParenError Error
247hi def link pl1SpaceError Error
248hi def link pl1Pseudo PreProc
249hi def link pl1PreProc PreProc
250hi def link pl1PreProcSym PreProc
251hi def link pl1Keyword Keyword
252hi def link pl1Other Keyword
253hi def link pl1Repeat Repeat
254hi def link pl1Statement Keyword
255hi def link pl1Storage StorageClass
256hi def link pl1StringError Error
257hi def link pl1StringLiteral String
258hi def link pl1CommentString String
259hi def link pl1Comment2String String
260hi def link pl1Symbol Normal
261hi def link pl1Trigger Function
262hi def link pl1TypeAttribute StorageClass
263hi def link pl1Todo Todo
Bram Moolenaare2db6952013-07-24 19:53:36 +0200264
Bram Moolenaare2db6952013-07-24 19:53:36 +0200265
266let b:current_syntax = "pl1"