new multiline string syntax
This patch also moves a bunch of the parser code into the tokenizer. Closes #162.
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
" Vim syntax file
|
||||
" Language: Zig
|
||||
" Maintainer: Andrew Kelley
|
||||
" Latest Revision: 28 July 2016
|
||||
" Latest Revision: 03 August 2016
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let b:current_syntax = "zig"
|
||||
|
||||
syn keyword zigStorage const var extern export pub noalias inline noinline
|
||||
syn keyword zigStructure struct enum union
|
||||
@@ -24,33 +25,30 @@ syn keyword zigBoolean true false
|
||||
syn match zigOperator display "\%(+%\?\|-%\?\|/\|*%\?\|=\|\^\|&\|?\||\|!\|>\|<\|%\|<<%\?\|>>\|&&\|||\)=\?"
|
||||
syn match zigArrowCharacter display "->"
|
||||
|
||||
syn match zigDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\)\)\="
|
||||
syn match zigHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\="
|
||||
syn match zigOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\="
|
||||
syn match zigBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\)\)\="
|
||||
syn match zigDecNumber display "\<[0-9]*\%(.[0-9]\+\)\=\%([eE][+-]\?[0-9]\+\)\="
|
||||
syn match zigHexNumber display "\<0x[a-fA-F0-9]\+\%(.[a-fA-F0-9]\+\%([pP][+-]\?[0-9]\+\)\?\)\="
|
||||
syn match zigOctNumber display "\<0o[0-7]\+"
|
||||
syn match zigBinNumber display "\<0b[01]\+\%(.[01]\+\%([eE][+-]\?[0-9]\+\)\?\)\="
|
||||
|
||||
|
||||
syn match zigCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
|
||||
syn match zigCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
|
||||
syn match zigCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=zigEscape,zigEscapeError,zigCharacterInvalid,zigCharacterInvalidUnicode
|
||||
syn match zigCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\|u{\x\{1,6}}\)\)'/ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigCharacterInvalid
|
||||
|
||||
syn match zigShebang /\%^#![^[].*/
|
||||
syn match zigCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{6}\)\)'/ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigCharacterInvalid
|
||||
|
||||
syn region zigCommentLine start="//" end="$" contains=zigTodo,@Spell
|
||||
syn region zigCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=zigTodo,@Spell
|
||||
|
||||
" TODO match only the first '\\' within the zigMultilineString as zigMultilineStringPrefix
|
||||
syn match zigMultilineStringPrefix display contained /c\?\\\\/
|
||||
syn region zigMultilineString start="c\?\\\\" end="$" contains=zigMultilineStringPrefix
|
||||
|
||||
syn keyword zigTodo contained TODO XXX
|
||||
|
||||
syn match zigEscapeError display contained /\\./
|
||||
syn match zigEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/
|
||||
syn match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{8}\)/
|
||||
syn match zigEscapeUnicode display contained /\\u{\x\{1,6}}/
|
||||
syn match zigStringContinuation display contained /\\\n\s*/
|
||||
syn region zigString start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigStringContinuation,@Spell
|
||||
syn region zigString start='r"\z([^)]*\)(' end=')\z1"' contains=@Spell
|
||||
|
||||
let b:current_syntax = "zig"
|
||||
syn match zigEscape display contained /\\\([nrt\\'"]\|x\x\{2}\)/
|
||||
syn match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{6}\)/
|
||||
syn region zigString start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zigEscape,zigEscapeUnicode,zigEscapeError,@Spell
|
||||
|
||||
hi def link zigDecNumber zigNumber
|
||||
hi def link zigHexNumber zigNumber
|
||||
@@ -59,12 +57,12 @@ hi def link zigBinNumber zigNumber
|
||||
|
||||
hi def link zigKeyword Keyword
|
||||
hi def link zigType Type
|
||||
hi def link zigShebang Comment
|
||||
hi def link zigCommentLine Comment
|
||||
hi def link zigCommentLineDoc SpecialComment
|
||||
hi def link zigTodo Todo
|
||||
hi def link zigStringContinuation Special
|
||||
hi def link zigString String
|
||||
hi def link zigMultilineString String
|
||||
hi def link zigMultilineStringPrefix Comment
|
||||
hi def link zigCharacterInvalid Error
|
||||
hi def link zigCharacterInvalidUnicode zigCharacterInvalid
|
||||
hi def link zigCharacter Character
|
||||
|
||||
Reference in New Issue
Block a user