123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- " Vim syntax file
- " Modified from http://plnet.org/files/vim/
- " using keywords from http://www.kednos.com/pli/docs/reference_manual/6291pro_contents.html
- " 2012-11-13 Alan Thompson
- " quit when a syntax file was already loaded
- if exists("b:current_syntax")
- finish
- endif
- syn case ignore
- " Todo.
- syn keyword pl1Todo TODO FIXME XXX DEBUG NOTE
- " pl1CommentGroup allows adding matches for special things in comments
- " 20010723az: Added this so that these could be matched in comments...
- syn cluster pl1CommentGroup contains=pl1Todo
- syn match pl1Garbage "[^ \t()]"
- syn match pl1Identifier "[a-z][a-z0-9$_#]*"
- syn match pl1HostIdentifier ":[a-z][a-z0-9$_#]*"
- " 20010723az: When wanted, highlight the trailing whitespace -- this is
- " based on c_space_errors
- if exists("c_space_errors")
- if !exists("c_no_trail_space_error")
- syn match pl1SpaceError "\s\+$"
- endif
- if !exists("c_no_tab_space_error")
- syn match pl1SpaceError " \+\t"me=e-1
- endif
- endif
- " Symbols.
- syn match pl1Symbol "\(;\|,\|\.\)"
- syn match pl1PreProcSym "%"
- " Operators.
- syn match pl1Operator "\(&\|:\|!\|+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)"
- syn match pl1Operator "\(\^\|\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)"
- " Attributes
- syn keyword pl1Attribute BACKWARDS BUFFERED BUF CONNECTED CONN CONSTANT EVENT
- syn keyword pl1Attribute EXCLUSIVE EXCL FORMAT GENERIC IRREDUCIBLE IRRED LOCAL
- syn keyword pl1Attribute REDUCIBLE RED TASK TRANSIENT UNBUFFERED UNBUF ALIGNED ANY
- syn keyword pl1Attribute AREA AUTOMATIC AUTO BASED BUILTIN CONDITION COND CONTROLLED
- syn keyword pl1Attribute CTL DEFINED DEF DIRECT ENVIRONMENT ENV EXTERNAL EXT FILE
- syn keyword pl1Attribute GLOBALDEF GLOBALREF INITIAL INIT INPUT INTERNAL INT KEYED
- syn keyword pl1Attribute LABEL LIKE LIST MEMBER NONVARYING NONVAR OPTIONAL OPTIONS
- syn keyword pl1Attribute OUTPUT PARAMETER PARM PICTURE PIC POSITION POS PRECISION
- syn keyword pl1Attribute PREC PRINT READONLY RECORD REFER RETURNS SEQUENTIAL SEQL
- syn keyword pl1Attribute STATIC STREAM STRUCTURE TRUNCATE UNALIGNED UNAL UNION UPDATE
- syn keyword pl1Attribute VARIABLE VARYING VAR COMPLEX CPLX REAL BINARY BIN BIT
- syn keyword pl1Attribute CHARACTER CHAR DECIMAL DEC DESCRIPTOR DESC DIMENSION DIM
- syn keyword pl1Attribute FIXED FLOAT OFFSET POINTER PTR REFERENCE VALUE VAL
- " Functions
- syn keyword pl1Function AFTER ALL ANY BEFORE COMPLETION CPLN CONJG COUNT
- syn keyword pl1Function CURRENTSTORAGE CSTG DATAFIELD DECAT DOT ERF ERFC IMAG
- syn keyword pl1Function ONCOUNT ONFIELD ONLOC POLY PRIORITY REPEAT SAMEKEY STATUS
- syn keyword pl1Function STORAGE STG ABS ACOS ACTUALCOUNT ADD ADDR ADDREL ALLOCATION
- syn keyword pl1Function ALLOCN ASIN ATAN ATAND ATANH BOOL BYTE BYTESIZE CEIL COLLATE
- syn keyword pl1Function COPY COS COSD COSH DATE DATETIME DECODE DISPLAY DIVIDE EMPTY
- syn keyword pl1Function ENCODE ERROR EVERY EXP EXTEND FLOOR FLUSH FREE HBOUND HIGH
- syn keyword pl1Function INDEX INFORM INT LBOUND LENGTH LINE LINENO LOG LOG10 LOG2
- syn keyword pl1Function LOW LTRIM MAX MAXLENGTH MIN MOD MULTIPLY NEXT_VOLUME NULL
- syn keyword pl1Function ONARGSLIST ONCHAR ONCODE ONFILE ONKEY ONSOURCE PAGENO POSINT
- syn keyword pl1Function PRESENT PROD RANK RELEASE RESIGNAL REVERSE REWIND ROUND
- syn keyword pl1Function RTRIM SEARCH SIGN SIN SIND SINH SIZE SOME SPACEBLOCK SQRT
- syn keyword pl1Function STRING SUBSTR SUBTRACT SUM TAN TAND TANH TIME TRANSLATE TRIM
- syn keyword pl1Function TRUNC UNSPEC VALID VARIANT VERIFY WARN
- " Other keywords
- syn keyword pl1Other ATTENTION ATTN C CONVERSION CONV DATA NAME NOCONVERSION
- syn keyword pl1Other NOCONV NOFIXEDOVERFLOW NOFOFL NOOVERFLOW NOSIZE
- syn keyword pl1Other NOSTRINGRANGE NOSTRG NOSTRINGSIZE NOSTRZ NOSUBSCRIPTRANGE
- syn keyword pl1Other NOSUBRG NOZERODIVIDE NOZDIV OVERFLOW OFL PENDING RECORD
- syn keyword pl1Other REENTRANT SIZE STRINGRANGE STRG STRINGSIZE STRZ
- syn keyword pl1Other SUBSCRIPTRANGE SUBRG TRANSMIT A ANYCONDITION APPEND B B1 B2
- syn keyword pl1Other B3 B4 BACKUP_DATE BATCH BLOCK_BOUNDARY_FORMAT BLOCK_IO
- syn keyword pl1Other BLOCK_SIZE BUCKET_SIZE BY CANCEL_CONTROL_O
- syn keyword pl1Other CARRIAGE_RETURN_FORMAT COLUMN COL CONTIGUOUS
- syn keyword pl1Other CONTIGUOUS_BEST_TRY CONVERSION CONV CREATION_DATE
- syn keyword pl1Other CURRENT_POSITION DEFAULT_FILE_NAME DEFERRED_WRITE E EDIT
- syn keyword pl1Other ENDFILE ENDPAGE EXPIRATION_DATE EXTENSION_SIZE F FAST_DELETE
- syn keyword pl1Other FILE_ID FILE_ID_TO FILE_SIZE FINISH FIXEDOVERFLOW FOFL
- syn keyword pl1Other FIXED_CONTROL_FROM FIXED_CONTROL_SIZE FIXED_CONTROL_SIZE_TO
- syn keyword pl1Other FIXED_CONTROL_TO FIXED_LENGTH_RECORDS FROM GROUP_PROTECTION
- syn keyword pl1Other IDENT IGNORE_LINE_MARKS IN INDEXED INDEX_NUMBER INITIAL_FILL
- syn keyword pl1Other INTO KEY KEYFROM KEYTO LINESIZE LOCK_ON_READ LOCK_ON_WRITE
- syn keyword pl1Other MAIN MANUAL_UNLOCKING MATCH_GREATER MATCH_GREATER_EQUAL
- syn keyword pl1Other MATCH_NEXT MATCH_NEXT_EQUAL MAXIMUM_RECORD_NUMBER
- syn keyword pl1Other MAXIMUM_RECORD_SIZE MULTIBLOCK_COUNT MULTIBUFFER_COUNT
- syn keyword pl1Other NOLOCK NONEXISTENT_RECORD NONRECURSIVE NO_ECHO NO_FILTER
- syn keyword pl1Other NO_SHARE OVERFLOW OFL OWNER_GROUP OWNER_ID OWNER_MEMBER
- syn keyword pl1Other OWNER_PROTECTION P PAGE PAGESIZE PRINTER_FORMAT PROMPT
- syn keyword pl1Other PURGE_TYPE_AHEAD R READ_AHEAD READ_CHECK READ_REGARDLESS
- syn keyword pl1Other RECORD_ID RECORD_ID_ACCESS RECORD_ID_TO RECURSIVE REPEAT
- syn keyword pl1Other RETRIEVAL_POINTERS REVISION_DATE REWIND_ON_CLOSE
- syn keyword pl1Other REWIND_ON_OPEN SCALARVARYING SET SHARED_READ SHARED_WRITE
- syn keyword pl1Other SKIP SPOOL STORAGE STRINGRANGE STRG SUBSCRIPTRANGE SUBRG
- syn keyword pl1Other SUPERSEDE SYSIN SYSPRINT SYSTEM_PROTECTION TAB TEMPORARY
- syn keyword pl1Other TIMEOUT_PERIOD TITLE TO UNDEFINEDFILE UNDF UNDERFLOW UFL
- syn keyword pl1Other UNTIL USER_OPEN VAXCONDITION WAIT_FOR_RECORD WHILE
- syn keyword pl1Other WORLD_PROTECTION WRITE_BEHIND WRITE_CHECK X ZERODIVIDE ZDIV
- " PreProcessor keywords
- syn keyword pl1PreProc ACTIVATE DEACTIVATE DECLARE DCL DICTIONARY DO END ERROR
- syn keyword pl1PreProc FATAL GOTO IF INCLUDE INFORM LIST NOLIST PAGE PROCEDURE PROC
- syn keyword pl1PreProc REPLACE RETURN SBTTL TITLE WARN THEN ELSE
- " Statements
- syn keyword pl1Statement CALL SUB ENTRY BY NAME CASE CHECK COPY DEFAULT DFT DELAY
- syn keyword pl1Statement DESCRIPTORS DISPLAY EXIT FETCH HALT IGNORE LIST LOCATE
- syn keyword pl1Statement NOCHECK NOLOCK NONE ORDER RANGE RELEASE REORDER REPLY SNAP
- syn keyword pl1Statement SYSTEM TAB UNLOCK WAIT ALLOCATE ALLOC BEGIN CALL CLOSE
- syn keyword pl1Statement DECLARE DCL DELETE DO ELSE END FORMAT GET GOTO GO TO IF
- syn keyword pl1Statement LEAVE NORESCAN ON OPEN OTHERWISE OTHER PROCEDURE PROC PUT
- syn keyword pl1Statement READ RESCAN RETURN REVERT REWRITE SELECT SIGNAL SNAP
- syn keyword pl1Statement STATEMENT STOP SYSTEM THEN WHEN WRITE
- " PL1's own keywords
- " syn match pl1Keyword "\<END\>"
- " syn match pl1Keyword "\.COUNT\>"hs=s+1
- " syn match pl1Keyword "\.EXISTS\>"hs=s+1
- " syn match pl1Keyword "\.FIRST\>"hs=s+1
- " syn match pl1Keyword "\.LAST\>"hs=s+1
- " syn match pl1Keyword "\.DELETE\>"hs=s+1
- " syn match pl1Keyword "\.PREV\>"hs=s+1
- " syn match pl1Keyword "\.NEXT\>"hs=s+1
- if exists("pl1_highlight_triggers")
- syn keyword pl1Trigger INSERTING UPDATING DELETING
- endif
- " Conditionals.
- syn keyword pl1Conditional ELSIF ELSE IF
- syn match pl1Conditional "\<END\s\+IF\>"
- " Loops.
- syn keyword pl1Repeat FOR LOOP WHILE FORALL
- syn match pl1Repeat "\<END\s\+LOOP\>"
- " Various types of comments.
- " 20010723az: Added the ability to treat strings within comments just like
- " C does.
- if exists("c_comment_strings")
- syntax match pl1CommentSkip contained "^\s*\*\($\|\s\+\)"
- syntax region pl1CommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=pl1CommentSkip
- syntax region pl1Comment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$"
- syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
- syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1Comment2String,pl1CharLiteral,pl1BooleanLiteral,pl1NumbersCom,pl1SpaceError
- else
- syntax region pl1CommentL start="--" skip="\\$" end="$" keepend contains=@pl1CommentGroup,pl1SpaceError
- syntax region pl1Comment start="/\*" end="\*/" contains=@pl1CommentGroup,pl1SpaceError
- endif
- " 20010723az: These are the old comment commands ... commented out.
- " syn match pl1Comment "--.*$" contains=pl1Todo
- " syn region pl1Comment start="/\*" end="\*/" contains=pl1Todo
- syn sync ccomment pl1Comment
- syn sync ccomment pl1CommentL
- " To catch unterminated string literals.
- syn match pl1StringError "'.*$"
- " Various types of literals.
- " 20010723az: Added stuff for comment matching.
- syn match pl1Numbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
- syn match pl1NumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=pl1IntLiteral,pl1FloatLiteral
- syn match pl1IntLiteral contained "[+-]\=\d\+"
- syn match pl1FloatLiteral contained "[+-]\=\d\+\.\d*"
- syn match pl1FloatLiteral contained "[+-]\=\d*\.\d*"
- "syn match pl1FloatLiteral "[+-]\=\([0-9]*\.[0-9]\+\|[0-9]\+\.[0-9]\+\)\(e[+-]\=[0-9]\+\)\="
- syn match pl1CharLiteral "'[^']'"
- syn match pl1StringLiteral "'\([^']\|''\)*'"
- syn keyword pl1BooleanLiteral TRUE FALSE NULL
- " The built-in types.
- syn keyword pl1Storage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN
- syn keyword pl1Storage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL
- syn keyword pl1Storage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR
- syn keyword pl1Storage INT INTEGER INTERVAL LOB LONG MINUTE
- syn keyword pl1Storage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB
- syn keyword pl1Storage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER
- syn keyword pl1Storage POSITIVE POSITIVEN PRECISION RAW REAL RECORD
- syn keyword pl1Storage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME
- syn keyword pl1Storage TIMESTAMP TIMESTAMP_UNCONSTRAINED
- syn keyword pl1Storage TIMESTAMP_TZ_UNCONSTRAINED
- syn keyword pl1Storage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR
- syn keyword pl1Storage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE
- " A type-attribute is really a type.
- " 20020916bp: Removed leading part of pattern to avoid highlighting the
- " object
- syn match pl1TypeAttribute "%\(TYPE\|ROWTYPE\)\>"
- " All other attributes.
- syn match pl1Attribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTFOUND\|ROWCOUNT\)\>"
- " Catch errors caused by wrong parentheses and brackets
- " 20010723az: significantly more powerful than the values -- commented out
- " below the replaced values. This adds the C functionality to PL/SQL.
- syn cluster pl1ParenGroup contains=pl1ParenError,@pl1CommentGroup,pl1CommentSkip,pl1IntLiteral,pl1FloatLiteral,pl1NumbersCom
- if exists("c_no_bracket_error")
- syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup
- syn match pl1ParenError ")"
- syn match pl1ErrInParen contained "[{}]"
- else
- syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,@pl1ParenGroup,pl1ErrInBracket
- syn match pl1ParenError "[\])]"
- syn match pl1ErrInParen contained "[{}]"
- syn region pl1Bracket transparent start='\[' end=']' contains=ALLBUT,@pl1ParenGroup,pl1ErrInParen
- syn match pl1ErrInBracket contained "[);{}]"
- endif
- " syn region pl1Paren transparent start='(' end=')' contains=ALLBUT,pl1ParenError
- " syn match pl1ParenError ")"
- " Syntax Synchronizing
- syn sync minlines=10 maxlines=100
- " Define the default highlighting.
- " Only when and item doesn't have highlighting yet.
- hi def link pl1Attribute Macro
- hi def link pl1BlockError Error
- hi def link pl1BooleanLiteral Boolean
- hi def link pl1CharLiteral Character
- hi def link pl1Comment Comment
- hi def link pl1CommentL Comment
- hi def link pl1Conditional Conditional
- hi def link pl1Error Error
- hi def link pl1ErrInBracket Error
- hi def link pl1ErrInBlock Error
- hi def link pl1ErrInParen Error
- hi def link pl1Exception Function
- hi def link pl1FloatLiteral Float
- hi def link pl1Function Function
- hi def link pl1Garbage Error
- hi def link pl1HostIdentifier Label
- hi def link pl1Identifier Normal
- hi def link pl1IntLiteral Number
- hi def link pl1Operator Operator
- hi def link pl1Paren Normal
- hi def link pl1ParenError Error
- hi def link pl1SpaceError Error
- hi def link pl1Pseudo PreProc
- hi def link pl1PreProc PreProc
- hi def link pl1PreProcSym PreProc
- hi def link pl1Keyword Keyword
- hi def link pl1Other Keyword
- hi def link pl1Repeat Repeat
- hi def link pl1Statement Keyword
- hi def link pl1Storage StorageClass
- hi def link pl1StringError Error
- hi def link pl1StringLiteral String
- hi def link pl1CommentString String
- hi def link pl1Comment2String String
- hi def link pl1Symbol Normal
- hi def link pl1Trigger Function
- hi def link pl1TypeAttribute StorageClass
- hi def link pl1Todo Todo
- let b:current_syntax = "pl1"
|