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