mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04: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 |