Skip to content

Commit 99ca755

Browse files
committed
Merge branch 'master' into dotdot
2 parents 0ba484b + 2d01da0 commit 99ca755

File tree

6 files changed

+78
-66
lines changed

6 files changed

+78
-66
lines changed

LICENSE

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
To the extent possible under law, Yukihiro Nakadaira has waived all copyright and
2-
related or neighboring rights to VimL parser.
1+
All files in this repository are distributed in the Public Domain. To the extent
2+
possible under law, Yukihiro Nakadaira (original author) has waived all copyright
3+
and related or neighboring rights to VimL parser.
4+
Please utilize this software at your own risk.

autoload/vimlparser.vim

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -804,97 +804,97 @@ function! s:VimLParser.parse_command()
804804
endfunction
805805

806806
function! s:VimLParser._parse_command(parser) abort
807-
if a:parser == 'parse_cmd_append'
807+
if a:parser ==# 'parse_cmd_append'
808808
call self.parse_cmd_append()
809-
elseif a:parser == 'parse_cmd_break'
809+
elseif a:parser ==# 'parse_cmd_break'
810810
call self.parse_cmd_break()
811-
elseif a:parser == 'parse_cmd_call'
811+
elseif a:parser ==# 'parse_cmd_call'
812812
call self.parse_cmd_call()
813-
elseif a:parser == 'parse_cmd_catch'
813+
elseif a:parser ==# 'parse_cmd_catch'
814814
call self.parse_cmd_catch()
815-
elseif a:parser == 'parse_cmd_common'
815+
elseif a:parser ==# 'parse_cmd_common'
816816
call self.parse_cmd_common()
817-
elseif a:parser == 'parse_cmd_continue'
817+
elseif a:parser ==# 'parse_cmd_continue'
818818
call self.parse_cmd_continue()
819-
elseif a:parser == 'parse_cmd_delfunction'
819+
elseif a:parser ==# 'parse_cmd_delfunction'
820820
call self.parse_cmd_delfunction()
821-
elseif a:parser == 'parse_cmd_echo'
821+
elseif a:parser ==# 'parse_cmd_echo'
822822
call self.parse_cmd_echo()
823-
elseif a:parser == 'parse_cmd_echoerr'
823+
elseif a:parser ==# 'parse_cmd_echoerr'
824824
call self.parse_cmd_echoerr()
825-
elseif a:parser == 'parse_cmd_echohl'
825+
elseif a:parser ==# 'parse_cmd_echohl'
826826
call self.parse_cmd_echohl()
827-
elseif a:parser == 'parse_cmd_echomsg'
827+
elseif a:parser ==# 'parse_cmd_echomsg'
828828
call self.parse_cmd_echomsg()
829-
elseif a:parser == 'parse_cmd_echon'
829+
elseif a:parser ==# 'parse_cmd_echon'
830830
call self.parse_cmd_echon()
831-
elseif a:parser == 'parse_cmd_else'
831+
elseif a:parser ==# 'parse_cmd_else'
832832
call self.parse_cmd_else()
833-
elseif a:parser == 'parse_cmd_elseif'
833+
elseif a:parser ==# 'parse_cmd_elseif'
834834
call self.parse_cmd_elseif()
835-
elseif a:parser == 'parse_cmd_endfor'
835+
elseif a:parser ==# 'parse_cmd_endfor'
836836
call self.parse_cmd_endfor()
837-
elseif a:parser == 'parse_cmd_endfunction'
837+
elseif a:parser ==# 'parse_cmd_endfunction'
838838
call self.parse_cmd_endfunction()
839-
elseif a:parser == 'parse_cmd_endif'
839+
elseif a:parser ==# 'parse_cmd_endif'
840840
call self.parse_cmd_endif()
841-
elseif a:parser == 'parse_cmd_endtry'
841+
elseif a:parser ==# 'parse_cmd_endtry'
842842
call self.parse_cmd_endtry()
843-
elseif a:parser == 'parse_cmd_endwhile'
843+
elseif a:parser ==# 'parse_cmd_endwhile'
844844
call self.parse_cmd_endwhile()
845-
elseif a:parser == 'parse_cmd_execute'
845+
elseif a:parser ==# 'parse_cmd_execute'
846846
call self.parse_cmd_execute()
847-
elseif a:parser == 'parse_cmd_finally'
847+
elseif a:parser ==# 'parse_cmd_finally'
848848
call self.parse_cmd_finally()
849-
elseif a:parser == 'parse_cmd_finish'
849+
elseif a:parser ==# 'parse_cmd_finish'
850850
call self.parse_cmd_finish()
851-
elseif a:parser == 'parse_cmd_for'
851+
elseif a:parser ==# 'parse_cmd_for'
852852
call self.parse_cmd_for()
853-
elseif a:parser == 'parse_cmd_function'
853+
elseif a:parser ==# 'parse_cmd_function'
854854
call self.parse_cmd_function()
855-
elseif a:parser == 'parse_cmd_if'
855+
elseif a:parser ==# 'parse_cmd_if'
856856
call self.parse_cmd_if()
857-
elseif a:parser == 'parse_cmd_insert'
857+
elseif a:parser ==# 'parse_cmd_insert'
858858
call self.parse_cmd_insert()
859-
elseif a:parser == 'parse_cmd_let'
859+
elseif a:parser ==# 'parse_cmd_let'
860860
call self.parse_cmd_let()
861-
elseif a:parser == 'parse_cmd_loadkeymap'
861+
elseif a:parser ==# 'parse_cmd_loadkeymap'
862862
call self.parse_cmd_loadkeymap()
863-
elseif a:parser == 'parse_cmd_lockvar'
863+
elseif a:parser ==# 'parse_cmd_lockvar'
864864
call self.parse_cmd_lockvar()
865-
elseif a:parser == 'parse_cmd_lua'
865+
elseif a:parser ==# 'parse_cmd_lua'
866866
call self.parse_cmd_lua()
867-
elseif a:parser == 'parse_cmd_modifier_range'
867+
elseif a:parser ==# 'parse_cmd_modifier_range'
868868
call self.parse_cmd_modifier_range()
869-
elseif a:parser == 'parse_cmd_mzscheme'
869+
elseif a:parser ==# 'parse_cmd_mzscheme'
870870
call self.parse_cmd_mzscheme()
871-
elseif a:parser == 'parse_cmd_perl'
871+
elseif a:parser ==# 'parse_cmd_perl'
872872
call self.parse_cmd_perl()
873-
elseif a:parser == 'parse_cmd_python'
873+
elseif a:parser ==# 'parse_cmd_python'
874874
call self.parse_cmd_python()
875-
elseif a:parser == 'parse_cmd_python3'
875+
elseif a:parser ==# 'parse_cmd_python3'
876876
call self.parse_cmd_python3()
877-
elseif a:parser == 'parse_cmd_return'
877+
elseif a:parser ==# 'parse_cmd_return'
878878
call self.parse_cmd_return()
879-
elseif a:parser == 'parse_cmd_ruby'
879+
elseif a:parser ==# 'parse_cmd_ruby'
880880
call self.parse_cmd_ruby()
881-
elseif a:parser == 'parse_cmd_tcl'
881+
elseif a:parser ==# 'parse_cmd_tcl'
882882
call self.parse_cmd_tcl()
883-
elseif a:parser == 'parse_cmd_throw'
883+
elseif a:parser ==# 'parse_cmd_throw'
884884
call self.parse_cmd_throw()
885-
elseif a:parser == 'parse_cmd_try'
885+
elseif a:parser ==# 'parse_cmd_try'
886886
call self.parse_cmd_try()
887-
elseif a:parser == 'parse_cmd_unlet'
887+
elseif a:parser ==# 'parse_cmd_unlet'
888888
call self.parse_cmd_unlet()
889-
elseif a:parser == 'parse_cmd_unlockvar'
889+
elseif a:parser ==# 'parse_cmd_unlockvar'
890890
call self.parse_cmd_unlockvar()
891-
elseif a:parser == 'parse_cmd_usercmd'
891+
elseif a:parser ==# 'parse_cmd_usercmd'
892892
call self.parse_cmd_usercmd()
893-
elseif a:parser == 'parse_cmd_while'
893+
elseif a:parser ==# 'parse_cmd_while'
894894
call self.parse_cmd_while()
895-
elseif a:parser == 'parse_wincmd'
895+
elseif a:parser ==# 'parse_wincmd'
896896
call self.parse_wincmd()
897-
elseif a:parser == 'parse_cmd_syntax'
897+
elseif a:parser ==# 'parse_cmd_syntax'
898898
call self.parse_cmd_syntax()
899899
else
900900
throw printf('unknown parser: %s', string(a:parser))
@@ -925,7 +925,7 @@ function! s:VimLParser.find_command()
925925
endif
926926
endif
927927

928-
if name == ''
928+
if name ==# ''
929929
return s:NIL
930930
endif
931931

@@ -1499,7 +1499,7 @@ function! s:VimLParser.parse_cmd_let()
14991499
let s2 = self.reader.peekn(2)
15001500

15011501
" :let {var-name} ..
1502-
if self.ends_excmds(s1) || (s2 !=# '+=' && s2 !=# '-=' && s2 !=# '.=' && s1 !=# '=')
1502+
if self.ends_excmds(s1) || (s2 !=# '+=' && s2 !=# '-=' && s2 !=# '.=' && s2 !=# '*=' && s2 !=# '/=' && s2 !=# '%=' && s1 !=# '=')
15031503
call self.reader.seek_set(pos)
15041504
call self.parse_cmd_common()
15051505
return
@@ -1514,7 +1514,7 @@ function! s:VimLParser.parse_cmd_let()
15141514
let node.list = lhs.list
15151515
let node.rest = lhs.rest
15161516
let node.right = s:NIL
1517-
if s2 ==# '+=' || s2 ==# '-=' || s2 ==# '.='
1517+
if s2 ==# '+=' || s2 ==# '-=' || s2 ==# '.=' || s2 ==# '*=' || s2 ==# '/=' || s2 ==# '%='
15181518
call self.reader.getn(2)
15191519
let node.op = s2
15201520
elseif s1 ==# '='
@@ -1942,12 +1942,12 @@ function! s:VimLParser.parse_cmd_syntax()
19421942
while s:TRUE
19431943
let end = self.reader.getpos()
19441944
let c = self.reader.peek()
1945-
if c == "/" || c == "'" || c == "\""
1945+
if c ==# '/' || c ==# "'" || c ==# '"'
19461946
call self.reader.getn(1)
19471947
call self.parse_pattern(c)
1948-
elseif c == "="
1948+
elseif c ==# '='
19491949
call self.reader.getn(1)
1950-
call self.parse_pattern(" ")
1950+
call self.parse_pattern(' ')
19511951
elseif self.ends_excmds(c)
19521952
break
19531953
endif
@@ -2579,7 +2579,7 @@ function! s:ExprTokenizer.get2()
25792579
let s = r.getn(3)
25802580
let s .= r.read_xdigit()
25812581
return self.token(s:TOKEN_NUMBER, s, pos)
2582-
elseif c ==# '0' && (r.p(1) ==# 'B' || r.p(1) ==# 'b') && (r.p(2) == '0' || r.p(2) == '1')
2582+
elseif c ==# '0' && (r.p(1) ==# 'B' || r.p(1) ==# 'b') && (r.p(2) ==# '0' || r.p(2) ==# '1')
25832583
let s = r.getn(3)
25842584
let s .= r.read_bdigit()
25852585
return self.token(s:TOKEN_NUMBER, s, pos)
@@ -3834,7 +3834,7 @@ function! s:StringReader.__init__(lines)
38343834
let col = 0
38353835
for c in split(a:lines[lnum + 1], '\zs')
38363836
if skip
3837-
if c == '\'
3837+
if c ==# '\'
38383838
let skip = s:FALSE
38393839
endif
38403840
else
@@ -4014,7 +4014,7 @@ endfunction
40144014

40154015
function! s:StringReader.read_bdigit()
40164016
let r = ''
4017-
while self.peekn(1) == '0' || self.peekn(1) == '1'
4017+
while self.peekn(1) ==# '0' || self.peekn(1) ==# '1'
40184018
let r .= self.getn(1)
40194019
endwhile
40204020
return r
@@ -4023,7 +4023,7 @@ endfunction
40234023
function! s:StringReader.read_integer()
40244024
let r = ''
40254025
let c = self.peekn(1)
4026-
if c == '-' || c == '+'
4026+
if c ==# '-' || c ==# '+'
40274027
let r = self.getn(1)
40284028
endif
40294029
return r . self.read_digit()
@@ -5071,7 +5071,7 @@ function! s:RegexpParser.get_token_backslash_common()
50715071
return ['\\', '\\']
50725072
elseif stridx(cclass, c) != -1
50735073
return ['\' . c, '\' . c]
5074-
elseif c == '_'
5074+
elseif c ==# '_'
50755075
let epos = self.reader.getpos()
50765076
let c = self.reader.get()
50775077
if stridx(cclass, c) != -1
@@ -5090,7 +5090,7 @@ function! s:RegexpParser.get_token_backslash_common()
50905090
return ['\' . c, '\' . c]
50915091
elseif stridx('123456789', c) != -1
50925092
return ['\' . c, '\' . c]
5093-
elseif c == 'z'
5093+
elseif c ==# 'z'
50945094
let epos = self.reader.getpos()
50955095
let c = self.reader.get()
50965096
if stridx('123456789', c) != -1
@@ -5105,7 +5105,7 @@ function! s:RegexpParser.get_token_backslash_common()
51055105
throw s:Err('E68: Invalid character after \z', epos)
51065106
elseif stridx('cCmMvVZ', c) != -1
51075107
return ['\' . c, '\' . c]
5108-
elseif c == '%'
5108+
elseif c ==# '%'
51095109
let epos = self.reader.getpos()
51105110
let c = self.reader.get()
51115111
if c ==# 'd'
@@ -5319,7 +5319,7 @@ endfunction
53195319

53205320
" [[:alpha:]]
53215321
function! s:RegexpParser.get_token_sq_char_class()
5322-
let class_names = ["alnum", "alpha", "blank", "cntrl", "digit", "graph", "lower", "print", "punct", "space", "upper", "xdigit", "tab", "return", "backspace", "escape"]
5322+
let class_names = ['alnum', 'alpha', 'blank', 'cntrl', 'digit', 'graph', 'lower', 'print', 'punct', 'space', 'upper', 'xdigit', 'tab', 'return', 'backspace', 'escape']
53235323
let pos = self.reader.tell()
53245324
if self.reader.p(0) ==# '[' && self.reader.p(1) ==# ':'
53255325
call self.reader.seek_cur(2)

js/vimlparser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1799,7 +1799,7 @@ VimLParser.prototype.parse_cmd_let = function() {
17991799
var s1 = this.reader.peekn(1);
18001800
var s2 = this.reader.peekn(2);
18011801
// :let {var-name} ..
1802-
if (this.ends_excmds(s1) || s2 != "+=" && s2 != "-=" && s2 != ".=" && s1 != "=") {
1802+
if (this.ends_excmds(s1) || s2 != "+=" && s2 != "-=" && s2 != ".=" && s2 != "*=" && s2 != "/=" && s2 != "%=" && s1 != "=") {
18031803
this.reader.seek_set(pos);
18041804
this.parse_cmd_common();
18051805
return;
@@ -1813,7 +1813,7 @@ VimLParser.prototype.parse_cmd_let = function() {
18131813
node.list = lhs.list;
18141814
node.rest = lhs.rest;
18151815
node.right = NIL;
1816-
if (s2 == "+=" || s2 == "-=" || s2 == ".=") {
1816+
if (s2 == "+=" || s2 == "-=" || s2 == ".=" || s2 == "*=" || s2 == "/=" || s2 == "%=") {
18171817
this.reader.getn(2);
18181818
node.op = s2;
18191819
}

py/vimlparser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,7 +1427,7 @@ def parse_cmd_let(self):
14271427
s1 = self.reader.peekn(1)
14281428
s2 = self.reader.peekn(2)
14291429
# :let {var-name} ..
1430-
if self.ends_excmds(s1) or s2 != "+=" and s2 != "-=" and s2 != ".=" and s1 != "=":
1430+
if self.ends_excmds(s1) or s2 != "+=" and s2 != "-=" and s2 != ".=" and s2 != "*=" and s2 != "/=" and s2 != "%=" and s1 != "=":
14311431
self.reader.seek_set(pos)
14321432
self.parse_cmd_common()
14331433
return
@@ -1440,7 +1440,7 @@ def parse_cmd_let(self):
14401440
node.list = lhs.list
14411441
node.rest = lhs.rest
14421442
node.right = NIL
1443-
if s2 == "+=" or s2 == "-=" or s2 == ".=":
1443+
if s2 == "+=" or s2 == "-=" or s2 == ".=" or s2 == "*=" or s2 == "/=" or s2 == "%=":
14441444
self.reader.getn(2)
14451445
node.op = s2
14461446
elif s1 == "=":

test/test1.ok

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,8 @@
4646
(echo (subscript x 0) (subscript x y))
4747
(echo (slice x 1 2) (slice x 1 nil) (slice x nil 2) (slice x nil nil))
4848
(echo (dot x y) (dot (dot x y) z))
49+
(let = a 1)
50+
(let += a 2)
51+
(let *= a 3)
52+
(let /= a 4)
53+
(let %= a 5)

test/test1.vim

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,8 @@ echo {} {"x":"y"} {"x":"y","z":"w",}
5151
echo x[0] x[y]
5252
echo x[1:2] x[1:] x[:2] x[:]
5353
echo x.y x.y.z
54+
let a = 1
55+
let a += 2
56+
let a *= 3
57+
let a /= 4
58+
let a %= 5

0 commit comments

Comments
 (0)