summary refs log tree commit diff
path: root/src/etc/vim/syntax
diff options
context:
space:
mode:
authorTycho Sci <tychosci@gmail.com>2012-05-05 11:43:07 +0900
committerTycho Sci <tychosci@gmail.com>2012-05-05 11:43:07 +0900
commit16848becaa8a1f812ba5e131cd6d4d4601f63979 (patch)
tree3119f6271fde173bdb66cd101c644792715daa73 /src/etc/vim/syntax
parentbbf73bdfc682dd778cd0827540026477dd073c3f (diff)
downloadrust-16848becaa8a1f812ba5e131cd6d4d4601f63979.tar.gz
rust-16848becaa8a1f812ba5e131cd6d4d4601f63979.zip
vim: Fix syntax of number literals
To follow [3.5.2.2 Number literals] in the reference manual.
Diffstat (limited to 'src/etc/vim/syntax')
-rw-r--r--src/etc/vim/syntax/rust.vim39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/etc/vim/syntax/rust.vim b/src/etc/vim/syntax/rust.vim
index ef70383ddac..320f04bb56d 100644
--- a/src/etc/vim/syntax/rust.vim
+++ b/src/etc/vim/syntax/rust.vim
@@ -39,25 +39,25 @@ syn match     rustItemPath    "\(\w\|::\)\+"
 
 syn region	  rustString      start=+L\="+ skip=+\\\\\|\\"+ end=+"+
 
-" Number/Float literals
-syn match     rustNumber      display "\<\d\>"
-syn match     rustNumber      display "\<[1-9]\d\+\>"
-syn match     rustNumber      display "\<\d\+\(u\|u8\|u16\|u32\|u64\)\>"
-syn match     rustNumber      display "\<\d\+\(i8\|i16\|i32\|i64\)\>"
-
-syn match     rustHexNumber   display "\<0[xX]\x\+\>"
-syn match     rustHexNumber   display "\<0[xX]\x\+_\(u\|u8\|u16\|u32\|u64\)\>"
-syn match     rustHexNumber   display "\<0[xX]\x\+_\(i8\|i16\|i32\|i64\)\>"
-syn match     rustOctNumber   display "\<0\o\+\>"
-syn match     rustOctNumber   display "\<0\o\+_\(u\|u8\|u16\|u32\|u64\)\>"
-syn match     rustOctNumber   display "\<0\o\+_\(i8\|i16\|i32\|i64\)\>"
-syn match     rustBinNumber   display "\<0[bB][01]\+\>"
-syn match     rustBinNumber   display "\<0[bB][01]\+_\(u\|u8\|u16\|u32\|u64\)\>"
-syn match     rustBinNumber   display "\<0[bB][01]\+_\(i8\|i16\|i32\|i64\)\>"
-
-syn match     rustFloat       display "\.\d\+\%([eE][+-]\=\d\+\)\=\>"
-syn match     rustFloat       display "\<\d\+[eE][+-]\=\d\+\>"
-syn match     rustFloat       display "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\="
+" Number literals
+syn match     rustNumber      display "\<[0-9][0-9_]*\>"
+syn match     rustNumber      display "\<[0-9][0-9_]*\(u\|u8\|u16\|u32\|u64\)\>"
+syn match     rustNumber      display "\<[0-9][0-9_]*\(i8\|i16\|i32\|i64\)\>"
+
+syn match     rustHexNumber   display "\<0x[a-fA-F0-9_]\+\>"
+syn match     rustHexNumber   display "\<0x[a-fA-F0-9_]\+\(u\|u8\|u16\|u32\|u64\)\>"
+syn match     rustHexNumber   display "\<0x[a-fA-F0-9_]\+\(i8\|i16\|i32\|i64\)\>"
+syn match     rustBinNumber   display "\<0b[01_]\+\>"
+syn match     rustBinNumber   display "\<0b[01_]\+\(u\|u8\|u16\|u32\|u64\)\>"
+syn match     rustBinNumber   display "\<0b[01_]\+\(i8\|i16\|i32\|i64\)\>"
+
+syn match     rustFloat       display "\<[0-9][0-9_]*\(f\|f32\|f64\)\>"
+syn match     rustFloat       display "\<[0-9][0-9_]*\([eE][+-]\=[0-9_]\+\)\>"
+syn match     rustFloat       display "\<[0-9][0-9_]*\([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>"
+syn match     rustFloat       display "\<[0-9][0-9_]*\.[0-9_]\+\>"
+syn match     rustFloat       display "\<[0-9][0-9_]*\.[0-9_]\+\(f\|f32\|f64\)\>"
+syn match     rustFloat       display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\>"
+syn match     rustFloat       display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>"
 
 syn match   rustCharacter   "'\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'"
 
@@ -67,7 +67,6 @@ syn region    rustComment     start="//" skip="\\$" end="$" contains=rustTodo ke
 syn keyword   rustTodo        TODO FIXME XXX NB
 
 hi def link rustHexNumber     rustNumber
-hi def link rustOctNumber     rustNumber
 hi def link rustBinNumber     rustNumber
 
 hi def link rustString        String