view runtime/syntax/tasm.vim @ 35039:fbdb6aeca2e2

runtime(java): Improve the recognition of the "style" method declarations Commit: https://github.com/vim/vim/commit/a4c085a3e607bd01d34e1db600b6460fc35fb0a3 Author: Aliaksei Budavei <0x000c70@gmail.com> Date: Wed Apr 24 21:04:25 2024 +0200 runtime(java): Improve the recognition of the "style" method declarations - Request the new regexp engine (v7.3.970) for [:upper:] and [:lower:]. - Recognise declarations of in-line annotated methods. - Recognise declarations of _strictfp_ methods. - Establish partial order for method modifiers as shown in the MethodModifier production; namely, _public_ and friends should be written the leftmost, possibly followed by _abstract_ or _default_, or possibly followed by other modifiers. - Stop looking for parameterisable primitive types (void<?>, int<Object>, etc., are malformed). - Stop looking for arrays of _void_. - Acknowledge the prevailing convention for method names to begin with a small letter and for class/interface names to begin with a capital letter; and, therefore, desist from claiming declarations of enum constants and constructors with javaFuncDef. Rationale: + Constructor is distinct from method: * its (overloaded) name is not arbitrary; * its return type is implicit; * its _throws_ clause depends on indirect vagaries of instance (variable) initialisers; * its invocation makes other constructors of its type hierarchy invoked one by one, concluding with the primordial constructor; * its explicit invocation, via _this_ or _super_, can only appear as the first statement in a constructor (not anymore, see JEP 447); else, its _super_ call cannot appear in constructors of _record_ or _enum_; and neither invocation is allowed for the primordial constructor; * it is not a member of its class, like initialisers, and is never inherited; * it is never _abstract_ or _native_. + Constructor declarations tend to be few in number and merit visual recognition from method declarations. + Enum constants define a fixed set of type instances and more resemble class variable initialisers. Note that the code duplicated for @javaFuncParams is written keeping in mind for g:java_highlight_functions a pending 3rd variant, which would require none of the :syn-cluster added groups. closes: #14620 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 24 Apr 2024 21:15:02 +0200
parents d46f974fd69e
children
line wrap: on
line source

" Vim syntax file
" Language: TASM: turbo assembler by Borland
" Maintainer: FooLman of United Force <foolman@bigfoot.com>
" Last Change: 2012 Feb 03 by Thilo Six, and 2018 Nov 27.

" quit when a syntax file was already loaded
if exists("b:current_syntax")
  finish
endif

let s:cpo_save = &cpo
set cpo&vim

syn case ignore
syn match tasmLabel "^[\ \t]*[@a-z_$][a-z0-9_$@]*\ *:"
syn keyword tasmDirective ALIAS ALIGN ARG ASSUME %BIN CATSRT CODESEG
syn match tasmDirective "\<\(byte\|word\|dword\|qword\)\ ptr\>"
" CALL extended syntax
syn keyword tasmDirective COMM %CONDS CONST %CREF %CREFALL %CREFREF
syn keyword tasmDirective %CREFUREF %CTLS DATASEG DB DD %DEPTH DF DISPLAY
syn keyword tasmDirective DOSSEG DP DQ DT DW ELSE EMUL END ENDIF
" IF XXXX
syn keyword tasmDirective ENDM ENDP ENDS ENUM EQU ERR EVEN EVENDATA EXITCODE
syn keyword tasmDirective EXITM EXTRN FARDATA FASTIMUL FLIPFLAG GETFIELD GLOBAL
syn keyword tasmDirective GOTO GROUP IDEAL %INCL INCLUDE INCLUDELIB INSTR IRP
"JMP
syn keyword tasmDirective IRPC JUMPS LABEL LARGESTACK %LINUM %LIST LOCAL
syn keyword tasmDirective LOCALS MACRO %MACS MASKFLAG MASM MASM51 MODEL
syn keyword tasmDirective MULTERRS NAME %NEWPAGE %NOCONDS %NOCREF %NOCTLS
syn keyword tasmDirective NOEMUL %NOINCL NOJUMPS %NOLIST NOLOCALS %NOMACS
syn keyword tasmDirective NOMASM51 NOMULTERRS NOSMART %NOSYMS %NOTRUNC NOWARN
syn keyword tasmDirective %PAGESIZE %PCNT PNO87 %POPLCTL POPSTATE PROC PROCDESC
syn keyword tasmDirective PROCTYPE PUBLIC PUBLICDLL PURGE %PUSHCTL PUSHSTATE
"rept, ret
syn keyword tasmDirective QUIRKS RADIX RECORD RETCODE SEGMENT SETFIELD
syn keyword tasmDirective SETFLAG SIZESTR SMALLSTACK SMART STACK STARTUPCODE
syn keyword tasmDirective STRUC SUBSTR %SUBTTL %SYMS TABLE %TABSIZE TBLINIT
syn keyword tasmDirective TBLINST TBLPTR TESTFLAG %TEXT %TITLE %TRUNC TYPEDEF
syn keyword tasmDirective UDATASEG UFARDATA UNION USES VERSION WAR WHILE ?DEBUG

syn keyword tasmInstruction AAA AAD AAM AAS ADC ADD AND ARPL BOUND BSF BSR
syn keyword tasmInstruction BSWAP BT BTC BTR BTS CALL CBW CLC CLD CLI CLTS
syn keyword tasmInstruction CMC CMP CMPXCHG CMPXCHG8B CPUID CWD CDQ CWDE
syn keyword tasmInstruction DAA DAS DEC DIV ENTER RETN RETF F2XM1
syn keyword tasmCoprocInstr FABS FADD FADDP FBLD FBSTP FCHG FCOM FCOM2 FCOMI
syn keyword tasmCoprocInstr FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP
syn keyword tasmCoprocInstr FDISI FDIV FDIVP FDIVR FENI FFREE FFREEP FIADD
syn keyword tasmCoprocInstr FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINIT FINCSTP
syn keyword tasmCoprocInstr FIST FISTP FISUB FISUBR FLD FLD1 FLDCW FLDENV
syn keyword tasmCoprocInstr FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP
syn keyword tasmCoprocInstr FNCLEX FNINIT FNOP FNSAVE FNSTCW FNSTENV FNSTSW
syn keyword tasmCoprocInstr FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSCALE
syn keyword tasmCoprocInstr FSETPM FSIN FSINCOM FSQRT FST FSTP FSTP1 FSTP8
syn keyword tasmCoprocInstr FSTP9 FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI
syn keyword tasmCoprocInstr FUCOMPP FWAIT FXAM FXCH FXCH4 FXCH7 FXTRACT FYL2X
syn keyword tasmCoprocInstr FYL2XP1 FSTCW FCHS FSINCOS
syn keyword tasmInstruction IDIV IMUL IN INC INT INTO INVD INVLPG IRET JMP
syn keyword tasmInstruction LAHF LAR LDS LEA LEAVE LES LFS LGDT LGS LIDT LLDT
syn keyword tasmInstruction LMSW LOCK LODSB LSL LSS LTR MOV MOVSX MOVZX MUL
syn keyword tasmInstruction NEG NOP NOT OR OUT POP POPA POPAD POPF POPFD PUSH
syn keyword tasmInstruction PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR RDPMC RDTSC
syn keyword tasmInstruction REP RET ROL ROR RSM SAHF SAR SBB SGDT SHL SAL SHLD
syn keyword tasmInstruction SHR SHRD SIDT SMSW STC STD STI STR SUB TEST VERR
syn keyword tasmInstruction VERW WBINVD WRMSR XADD XCHG XLAT XOR
syn keyword tasmMMXinst     EMMS MOVD MOVQ PACKSSDW PACKSSWB PACKUSWB PADDB
syn keyword tasmMMXinst     PADDD PADDSB PADDSB PADDSW PADDUSB PADDUSW PADDW
syn keyword tasmMMXinst     PAND PANDN PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD
syn keyword tasmMMXinst     PCMPGTW PMADDWD PMULHW PMULLW POR PSLLD PSLLQ
syn keyword tasmMMXinst     PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD
syn keyword tasmMMXinst     PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW
syn keyword tasmMMXinst     PUNPCKHBQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD
syn keyword tasmMMXinst     PXOR
"FCMOV
syn match tasmInstruction "\<\(CMPS\|MOVS\|OUTS\|SCAS\|STOS\|LODS\|INS\)[BWD]"
syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABCGLESXZ]\>"
syn match tasmInstruction "\<\(CMOV\|SET\|J\)N\=[ABGL]E\>"
syn match tasmInstruction "\<\(LOOP\|REP\)N\=[EZ]\=\>"
syn match tasmRegister "\<[A-D][LH]\>"
syn match tasmRegister "\<E\=\([A-D]X\|[SD]I\|[BS]P\)\>"
syn match tasmRegister "\<[C-GS]S\>"
syn region tasmComment start=";" end="$"
"HACK! comment ? ... selection
syn region tasmComment start="comment \+\$" end="\$"
syn region tasmComment start="comment \+\~" end="\~"
syn region tasmComment start="comment \+#" end="#"
syn region tasmString start="'" end="'"
syn region tasmString start='"' end='"'

syn match tasmDec "\<-\=[0-9]\+\.\=[0-9]*\>"
syn match tasmHex "\<[0-9][0-9A-F]*H\>"
syn match tasmOct "\<[0-7]\+O\>"
syn match tasmBin "\<[01]\+B\>"

" Define the default highlighting.
" Only when an item doesn't have highlighting yet

hi def link tasmString String
hi def link tasmDec Number
hi def link tasmHex Number
hi def link tasmOct Number
hi def link tasmBin Number
hi def link tasmInstruction Keyword
hi def link tasmCoprocInstr Keyword
hi def link tasmMMXInst	Keyword
hi def link tasmDirective PreProc
hi def link tasmRegister Identifier
hi def link tasmProctype PreProc
hi def link tasmComment Comment
hi def link tasmLabel Label


let b:current_syntax = "tasm"

let &cpo = s:cpo_save
unlet s:cpo_save