mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file
 | 
						||
" Language:     WebAssembly
 | 
						||
" Maintainer:   rhysd <lin90162@yahoo.co.jp>
 | 
						||
" Last Change:  Jul 29, 2018
 | 
						||
" For bugs, patches and license go to https://github.com/rhysd/vim-wasm
 | 
						||
 | 
						||
if exists("b:current_syntax")
 | 
						||
    finish
 | 
						||
endif
 | 
						||
 | 
						||
let s:cpo_save = &cpo
 | 
						||
set cpo&vim
 | 
						||
 | 
						||
syn cluster wastCluster       contains=wastModule,wastInstWithType,wastInstGeneral,wastParamInst,wastControlInst,wastString,wastNamedVar,wastUnnamedVar,wastFloat,wastNumber,wastComment,wastList,wastType
 | 
						||
 | 
						||
" Instructions
 | 
						||
" https://webassembly.github.io/spec/core/text/instructions.html
 | 
						||
" Note: memarg (align=,offset=) can be added to memory instructions
 | 
						||
syn match   wastInstWithType  "\%((\s*\)\@<=\<\%(i32\|i64\|f32\|f64\|memory\)\.[[:alnum:]_]\+\%(/\%(i32\|i64\|f32\|f64\)\)\=\>\%(\s\+\%(align\|offset\)=\)\=" contained display
 | 
						||
syn match   wastInstGeneral   "\%((\s*\)\@<=\<[[:alnum:]_]\+\>" contained display
 | 
						||
" https://webassembly.github.io/spec/core/text/instructions.html#control-instructions
 | 
						||
syn match   wastControlInst   "\%((\s*\)\@<=\<\%(block\|end\|loop\|if\|else\|unreachable\|nop\|br\|br_if\|br_table\|return\|call\|call_indirect\)\>" contained display
 | 
						||
" https://webassembly.github.io/spec/core/text/instructions.html#parametric-instructions
 | 
						||
syn match   wastParamInst     "\%((\s*\)\@<=\<\%(drop\|select\)\>" contained display
 | 
						||
 | 
						||
" Identifiers
 | 
						||
" https://webassembly.github.io/spec/core/text/values.html#text-id
 | 
						||
syn match   wastNamedVar      "$\+[[:alnum:]!#$%&'∗./:=><?@\\^_`~+-]*" contained display
 | 
						||
syn match   wastUnnamedVar    "$\+\d\+[[:alnum:]!#$%&'∗./:=><?@\\^_`~+-]\@!" contained display
 | 
						||
 | 
						||
" String literals
 | 
						||
" https://webassembly.github.io/spec/core/text/values.html#strings
 | 
						||
syn region  wastString        start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=wastStringSpecial
 | 
						||
syn match   wastStringSpecial "\\\x\x\|\\[tnr'\\\"]\|\\u\x\+" contained containedin=wastString
 | 
						||
 | 
						||
" Float literals
 | 
						||
" https://webassembly.github.io/spec/core/text/values.html#floating-point
 | 
						||
syn match   wastFloat         "\<-\=\d\%(_\=\d\)*\%(\.\d\%(_\=\d\)*\)\=\%([eE][-+]\=\d\%(_\=\d\)*\)\=" display contained
 | 
						||
syn match   wastFloat         "\<-\=0x\x\%(_\=\d\)*\%(\.\x\%(_\=\x\)*\)\=\%([pP][-+]\=\d\%(_\=\d\)*\)\=" display contained
 | 
						||
syn keyword wastFloat         inf nan contained
 | 
						||
 | 
						||
" Integer literals
 | 
						||
" https://webassembly.github.io/spec/core/text/values.html#integers
 | 
						||
syn match   wastNumber        "\<-\=\d\%(_\=\d\)*\>" display contained
 | 
						||
syn match   wastNumber        "\<-\=0x\x\%(_\=\x\)*\>" display contained
 | 
						||
 | 
						||
" Comments
 | 
						||
" https://webassembly.github.io/spec/core/text/lexical.html#comments
 | 
						||
syn region  wastComment       start=";;" end="$" display
 | 
						||
syn region  wastComment       start="(;;\@!" end=";)"
 | 
						||
 | 
						||
syn region  wastList          matchgroup=wastListDelimiter start="(;\@!" matchgroup=wastListDelimiter end=";\@<!)" contains=@wastCluster
 | 
						||
 | 
						||
" Types
 | 
						||
" https://webassembly.github.io/spec/core/text/types.html
 | 
						||
syn keyword wastType          i64 i32 f64 f32 param result anyfunc mut contained
 | 
						||
syn match   wastType          "\%((\_s*\)\@<=func\%(\_s*[()]\)\@=" display contained
 | 
						||
 | 
						||
" Modules
 | 
						||
" https://webassembly.github.io/spec/core/text/modules.html
 | 
						||
syn keyword wastModule        module type export import table memory global data elem contained
 | 
						||
syn match   wastModule        "\%((\_s*\)\@<=func\%(\_s\+\$\)\@=" display contained
 | 
						||
 | 
						||
syn sync lines=100
 | 
						||
 | 
						||
hi def link wastModule        PreProc
 | 
						||
hi def link wastListDelimiter Delimiter
 | 
						||
hi def link wastInstWithType  Operator
 | 
						||
hi def link wastInstGeneral   Operator
 | 
						||
hi def link wastControlInst   Statement
 | 
						||
hi def link wastParamInst     Conditional
 | 
						||
hi def link wastString        String
 | 
						||
hi def link wastStringSpecial Special
 | 
						||
hi def link wastNamedVar      Identifier
 | 
						||
hi def link wastUnnamedVar    PreProc
 | 
						||
hi def link wastFloat         Float
 | 
						||
hi def link wastNumber        Number
 | 
						||
hi def link wastComment       Comment
 | 
						||
hi def link wastType          Type
 | 
						||
 | 
						||
let b:current_syntax = "wast"
 | 
						||
 | 
						||
let &cpo = s:cpo_save
 | 
						||
unlet s:cpo_save
 |