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