view src/ploki/syntax/ploki.vim @ 12292:d51f2100210c draft

<kspalaiologos> `` cat <<<"asmbf && bfi output.b" > /hackenv/ibin/asmbf
author HackEso <hackeso@esolangs.org>
date Thu, 02 Jan 2020 15:38:21 +0000
parents ac0403686959
children
line wrap: on
line source

" Vim syntax file
" Language:	ploki
" Maintainer:	Lukas Mai
" Last Change:	2010-02-28
" Version:	0.15

if version < 600
	sy clear
elseif exists('b:current_syntax')
	finish
endif

syn match plokiStuff   /.\+/ contains=plokiList,plokiNumber,plokiSpcErr,plokiSpecial,plokiFunc,plokiString contained

syn match plokiList    /#<\|#>/
syn match plokiNumber  /\.\d\+\%([Ee][-+]\=\d\+\)\=/
syn match plokiNumber  /\d\+\%(\.\d*\)\=\%([Ee][-+]\=\d\+\)\=/
syn match plokiSpcErr  /\\/
syn match plokiSpecial
	\     /\\\%([!?@_]\|\d\+\|ARG\|AUSG\|EING\|E\|FEHL\|PI\)\=/
syn match plokiFunc /\\\%(ARG:\|ENV\|[LQRU]\)/
syn match plokiFunc
	\     /@\%([-+]\|ABS\|ACOS\|APERS\|ASIN\|ATAN2\=\|CHR\|COS\|DEF-P\|EDD-P\|ENV\|ERR-P\|EVAL\|GET\|INT\|IO-P\|LAPERS\|LEGS\|LENGTH\|L[GN]\|NEG\|NOT\|NUM\|OMFG\|ORD\|RE\%(MOVE\|NAEM\|VERSE\)\|SAG\|SAPERS\|SIN\|SQRT\|STR\|SUCH\|TAN\|TYPE OF\)/
syn match plokiEscErr  /\\/ contained
syn match plokiEscape  /\\\%([abfnrtv"\\V]\|c.\|x\x\x\=\|\o\{1,3}\)/ contained
syn match plokiString  '"\%(\%(??/\n\)\@![^"\\]\)*\%(\\c\=.\%(\%(??/\n\)\@![^"\\]\)*\)*"\='
	\     contains=plokiEscape,plokiEscErr nextgroup=plokiCont
syn match plokiGarbage '\%(\%(??/\n\)\@!.\)\+' contained nextgroup=plokiCont
syn match plokiCmd
	\     /#\|A[BN]RUF\|CLAUDS\|END\|FLUSH\|GO\%(FOR\|TO\)\|IACS\|IF\|KTHX\|LEE\=T\|RESET\|SET\|WUNT/
	\     contained
syn match plokiCmd     /#!\|ELSE\|END IF\|FI/ contained nextgroup=plokiGarbage
syn region plokiComment matchgroup=plokiCmd start=/REM/ end=/$/
	\     contained contains=plokiComment
syn match plokiWord    /\S\+/        contained nextgroup=plokiGarbage
syn match plokiCmd     /NEXT\s*/     contained nextgroup=plokiWord
syn match plokiLabel   /^\s*\%(FOR\s*\S\+\|\d*\)\s*/
	\     nextgroup=plokiCmd,plokiComment,plokiSpcErr,plokiSpecial,plokiFunc,plokiString
"	                         ^... around a bug(?)

syn match plokiCont    '??/\n' nextgroup=plokiStuff

syn match plokiInsert  /^\s*INSERT\%(\%( DA\)\=\)\@>\s*\S\+\%(\s\+\S\+\)*\s*HERE\s*$/ contains=plokiInsFile
syn match plokiInsFile /\%(^\s*INSERT\%(\%( DA\)\=\)\@>\s*\)\@<=\S\+\%(\s\+\S\+\)*\%(\s*HERE\s*$\)\@=/ contained

if version >= 508 || !exists('did_ploki_syn_inits')
	if version < 508
		let did_ploki_syn_inits = 1
		command -nargs=+ HiLink hi link <args>
	else
		command -nargs=+ HiLink hi def link <args>
	endif

	HiLink plokiinsFile String
	HiLink plokiInsert  Preproc
	HiLink plokiCont    Preproc
	HiLink plokiLabel   Label
	HiLink plokiGarbage Comment
	HiLink plokiComment Comment
	HiLink plokiCmd     Type
	HiLink plokiWord    Label
	HiLink plokiString  String
	HiLink plokiEscape  SpecialChar
	HiLink plokiEscErr  Error
	HiLink plokiFunc    Function
	HiLink plokiSpecial Special
	HiLink plokiSpcErr  Error
	HiLink plokiNumber  Number
	HiLink plokiList    Preproc

	delc HiLink
endif

let b:current_syntax = 'ploki'