Skip to content

Commit a48032a

Browse files
authored
Merge pull request #56 from haya14busa/avoid-subscript
Avoid subscript
2 parents c4a3509 + ba0e4fc commit a48032a

File tree

3 files changed

+341
-3
lines changed

3 files changed

+341
-3
lines changed

autoload/vimlparser.vim

+99-1
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,105 @@ function! s:VimLParser.parse_command()
797797
call self.parse_argcmd()
798798
endif
799799

800-
call self[self.ea.cmd.parser]()
800+
call self._parse_command(self.ea.cmd.parser)
801+
endfunction
802+
803+
function! s:VimLParser._parse_command(parser) abort
804+
if a:parser == 'parse_cmd_append'
805+
call self.parse_cmd_append()
806+
elseif a:parser == 'parse_cmd_break'
807+
call self.parse_cmd_break()
808+
elseif a:parser == 'parse_cmd_call'
809+
call self.parse_cmd_call()
810+
elseif a:parser == 'parse_cmd_catch'
811+
call self.parse_cmd_catch()
812+
elseif a:parser == 'parse_cmd_common'
813+
call self.parse_cmd_common()
814+
elseif a:parser == 'parse_cmd_continue'
815+
call self.parse_cmd_continue()
816+
elseif a:parser == 'parse_cmd_delfunction'
817+
call self.parse_cmd_delfunction()
818+
elseif a:parser == 'parse_cmd_echo'
819+
call self.parse_cmd_echo()
820+
elseif a:parser == 'parse_cmd_echoerr'
821+
call self.parse_cmd_echoerr()
822+
elseif a:parser == 'parse_cmd_echohl'
823+
call self.parse_cmd_echohl()
824+
elseif a:parser == 'parse_cmd_echomsg'
825+
call self.parse_cmd_echomsg()
826+
elseif a:parser == 'parse_cmd_echon'
827+
call self.parse_cmd_echon()
828+
elseif a:parser == 'parse_cmd_else'
829+
call self.parse_cmd_else()
830+
elseif a:parser == 'parse_cmd_elseif'
831+
call self.parse_cmd_elseif()
832+
elseif a:parser == 'parse_cmd_endfor'
833+
call self.parse_cmd_endfor()
834+
elseif a:parser == 'parse_cmd_endfunction'
835+
call self.parse_cmd_endfunction()
836+
elseif a:parser == 'parse_cmd_endif'
837+
call self.parse_cmd_endif()
838+
elseif a:parser == 'parse_cmd_endtry'
839+
call self.parse_cmd_endtry()
840+
elseif a:parser == 'parse_cmd_endwhile'
841+
call self.parse_cmd_endwhile()
842+
elseif a:parser == 'parse_cmd_execute'
843+
call self.parse_cmd_execute()
844+
elseif a:parser == 'parse_cmd_finally'
845+
call self.parse_cmd_finally()
846+
elseif a:parser == 'parse_cmd_finish'
847+
call self.parse_cmd_finish()
848+
elseif a:parser == 'parse_cmd_for'
849+
call self.parse_cmd_for()
850+
elseif a:parser == 'parse_cmd_function'
851+
call self.parse_cmd_function()
852+
elseif a:parser == 'parse_cmd_if'
853+
call self.parse_cmd_if()
854+
elseif a:parser == 'parse_cmd_insert'
855+
call self.parse_cmd_insert()
856+
elseif a:parser == 'parse_cmd_let'
857+
call self.parse_cmd_let()
858+
elseif a:parser == 'parse_cmd_loadkeymap'
859+
call self.parse_cmd_loadkeymap()
860+
elseif a:parser == 'parse_cmd_lockvar'
861+
call self.parse_cmd_lockvar()
862+
elseif a:parser == 'parse_cmd_lua'
863+
call self.parse_cmd_lua()
864+
elseif a:parser == 'parse_cmd_modifier_range'
865+
call self.parse_cmd_modifier_range()
866+
elseif a:parser == 'parse_cmd_mzscheme'
867+
call self.parse_cmd_mzscheme()
868+
elseif a:parser == 'parse_cmd_perl'
869+
call self.parse_cmd_perl()
870+
elseif a:parser == 'parse_cmd_python'
871+
call self.parse_cmd_python()
872+
elseif a:parser == 'parse_cmd_python3'
873+
call self.parse_cmd_python3()
874+
elseif a:parser == 'parse_cmd_return'
875+
call self.parse_cmd_return()
876+
elseif a:parser == 'parse_cmd_ruby'
877+
call self.parse_cmd_ruby()
878+
elseif a:parser == 'parse_cmd_tcl'
879+
call self.parse_cmd_tcl()
880+
elseif a:parser == 'parse_cmd_throw'
881+
call self.parse_cmd_throw()
882+
elseif a:parser == 'parse_cmd_try'
883+
call self.parse_cmd_try()
884+
elseif a:parser == 'parse_cmd_unlet'
885+
call self.parse_cmd_unlet()
886+
elseif a:parser == 'parse_cmd_unlockvar'
887+
call self.parse_cmd_unlockvar()
888+
elseif a:parser == 'parse_cmd_usercmd'
889+
call self.parse_cmd_usercmd()
890+
elseif a:parser == 'parse_cmd_while'
891+
call self.parse_cmd_while()
892+
elseif a:parser == 'parse_wincmd'
893+
call self.parse_wincmd()
894+
elseif a:parser == 'parse_cmd_syntax'
895+
call self.parse_cmd_syntax()
896+
else
897+
throw printf('unknown parser: %s', string(a:parser))
898+
endif
801899
endfunction
802900

803901
function! s:VimLParser.find_command()

js/vimlparser.js

+145-1
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,151 @@ VimLParser.prototype.parse_command = function() {
10191019
if (viml_eqregh(this.ea.cmd.flags, "\\<EDITCMD\\>") && !this.ea.usefilter) {
10201020
this.parse_argcmd();
10211021
}
1022-
this[this.ea.cmd.parser]();
1022+
this._parse_command(this.ea.cmd.parser);
1023+
}
1024+
1025+
VimLParser.prototype._parse_command = function(parser) {
1026+
if (parser == "parse_cmd_append") {
1027+
this.parse_cmd_append();
1028+
}
1029+
else if (parser == "parse_cmd_break") {
1030+
this.parse_cmd_break();
1031+
}
1032+
else if (parser == "parse_cmd_call") {
1033+
this.parse_cmd_call();
1034+
}
1035+
else if (parser == "parse_cmd_catch") {
1036+
this.parse_cmd_catch();
1037+
}
1038+
else if (parser == "parse_cmd_common") {
1039+
this.parse_cmd_common();
1040+
}
1041+
else if (parser == "parse_cmd_continue") {
1042+
this.parse_cmd_continue();
1043+
}
1044+
else if (parser == "parse_cmd_delfunction") {
1045+
this.parse_cmd_delfunction();
1046+
}
1047+
else if (parser == "parse_cmd_echo") {
1048+
this.parse_cmd_echo();
1049+
}
1050+
else if (parser == "parse_cmd_echoerr") {
1051+
this.parse_cmd_echoerr();
1052+
}
1053+
else if (parser == "parse_cmd_echohl") {
1054+
this.parse_cmd_echohl();
1055+
}
1056+
else if (parser == "parse_cmd_echomsg") {
1057+
this.parse_cmd_echomsg();
1058+
}
1059+
else if (parser == "parse_cmd_echon") {
1060+
this.parse_cmd_echon();
1061+
}
1062+
else if (parser == "parse_cmd_else") {
1063+
this.parse_cmd_else();
1064+
}
1065+
else if (parser == "parse_cmd_elseif") {
1066+
this.parse_cmd_elseif();
1067+
}
1068+
else if (parser == "parse_cmd_endfor") {
1069+
this.parse_cmd_endfor();
1070+
}
1071+
else if (parser == "parse_cmd_endfunction") {
1072+
this.parse_cmd_endfunction();
1073+
}
1074+
else if (parser == "parse_cmd_endif") {
1075+
this.parse_cmd_endif();
1076+
}
1077+
else if (parser == "parse_cmd_endtry") {
1078+
this.parse_cmd_endtry();
1079+
}
1080+
else if (parser == "parse_cmd_endwhile") {
1081+
this.parse_cmd_endwhile();
1082+
}
1083+
else if (parser == "parse_cmd_execute") {
1084+
this.parse_cmd_execute();
1085+
}
1086+
else if (parser == "parse_cmd_finally") {
1087+
this.parse_cmd_finally();
1088+
}
1089+
else if (parser == "parse_cmd_finish") {
1090+
this.parse_cmd_finish();
1091+
}
1092+
else if (parser == "parse_cmd_for") {
1093+
this.parse_cmd_for();
1094+
}
1095+
else if (parser == "parse_cmd_function") {
1096+
this.parse_cmd_function();
1097+
}
1098+
else if (parser == "parse_cmd_if") {
1099+
this.parse_cmd_if();
1100+
}
1101+
else if (parser == "parse_cmd_insert") {
1102+
this.parse_cmd_insert();
1103+
}
1104+
else if (parser == "parse_cmd_let") {
1105+
this.parse_cmd_let();
1106+
}
1107+
else if (parser == "parse_cmd_loadkeymap") {
1108+
this.parse_cmd_loadkeymap();
1109+
}
1110+
else if (parser == "parse_cmd_lockvar") {
1111+
this.parse_cmd_lockvar();
1112+
}
1113+
else if (parser == "parse_cmd_lua") {
1114+
this.parse_cmd_lua();
1115+
}
1116+
else if (parser == "parse_cmd_modifier_range") {
1117+
this.parse_cmd_modifier_range();
1118+
}
1119+
else if (parser == "parse_cmd_mzscheme") {
1120+
this.parse_cmd_mzscheme();
1121+
}
1122+
else if (parser == "parse_cmd_perl") {
1123+
this.parse_cmd_perl();
1124+
}
1125+
else if (parser == "parse_cmd_python") {
1126+
this.parse_cmd_python();
1127+
}
1128+
else if (parser == "parse_cmd_python3") {
1129+
this.parse_cmd_python3();
1130+
}
1131+
else if (parser == "parse_cmd_return") {
1132+
this.parse_cmd_return();
1133+
}
1134+
else if (parser == "parse_cmd_ruby") {
1135+
this.parse_cmd_ruby();
1136+
}
1137+
else if (parser == "parse_cmd_tcl") {
1138+
this.parse_cmd_tcl();
1139+
}
1140+
else if (parser == "parse_cmd_throw") {
1141+
this.parse_cmd_throw();
1142+
}
1143+
else if (parser == "parse_cmd_try") {
1144+
this.parse_cmd_try();
1145+
}
1146+
else if (parser == "parse_cmd_unlet") {
1147+
this.parse_cmd_unlet();
1148+
}
1149+
else if (parser == "parse_cmd_unlockvar") {
1150+
this.parse_cmd_unlockvar();
1151+
}
1152+
else if (parser == "parse_cmd_usercmd") {
1153+
this.parse_cmd_usercmd();
1154+
}
1155+
else if (parser == "parse_cmd_while") {
1156+
this.parse_cmd_while();
1157+
}
1158+
else if (parser == "parse_wincmd") {
1159+
this.parse_wincmd();
1160+
}
1161+
else if (parser == "parse_cmd_syntax") {
1162+
this.parse_cmd_syntax();
1163+
}
1164+
else {
1165+
throw viml_printf("unknown parser: %s", viml_string(parser));
1166+
}
10231167
}
10241168

10251169
VimLParser.prototype.find_command = function() {

py/vimlparser.py

+97-1
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,103 @@ def parse_command(self):
842842
self.reader.skip_white()
843843
if viml_eqregh(self.ea.cmd.flags, "\\<EDITCMD\\>") and not self.ea.usefilter:
844844
self.parse_argcmd()
845-
getattr(self, self.ea.cmd.parser)()
845+
self._parse_command(self.ea.cmd.parser)
846+
847+
def _parse_command(self, parser):
848+
if parser == "parse_cmd_append":
849+
self.parse_cmd_append()
850+
elif parser == "parse_cmd_break":
851+
self.parse_cmd_break()
852+
elif parser == "parse_cmd_call":
853+
self.parse_cmd_call()
854+
elif parser == "parse_cmd_catch":
855+
self.parse_cmd_catch()
856+
elif parser == "parse_cmd_common":
857+
self.parse_cmd_common()
858+
elif parser == "parse_cmd_continue":
859+
self.parse_cmd_continue()
860+
elif parser == "parse_cmd_delfunction":
861+
self.parse_cmd_delfunction()
862+
elif parser == "parse_cmd_echo":
863+
self.parse_cmd_echo()
864+
elif parser == "parse_cmd_echoerr":
865+
self.parse_cmd_echoerr()
866+
elif parser == "parse_cmd_echohl":
867+
self.parse_cmd_echohl()
868+
elif parser == "parse_cmd_echomsg":
869+
self.parse_cmd_echomsg()
870+
elif parser == "parse_cmd_echon":
871+
self.parse_cmd_echon()
872+
elif parser == "parse_cmd_else":
873+
self.parse_cmd_else()
874+
elif parser == "parse_cmd_elseif":
875+
self.parse_cmd_elseif()
876+
elif parser == "parse_cmd_endfor":
877+
self.parse_cmd_endfor()
878+
elif parser == "parse_cmd_endfunction":
879+
self.parse_cmd_endfunction()
880+
elif parser == "parse_cmd_endif":
881+
self.parse_cmd_endif()
882+
elif parser == "parse_cmd_endtry":
883+
self.parse_cmd_endtry()
884+
elif parser == "parse_cmd_endwhile":
885+
self.parse_cmd_endwhile()
886+
elif parser == "parse_cmd_execute":
887+
self.parse_cmd_execute()
888+
elif parser == "parse_cmd_finally":
889+
self.parse_cmd_finally()
890+
elif parser == "parse_cmd_finish":
891+
self.parse_cmd_finish()
892+
elif parser == "parse_cmd_for":
893+
self.parse_cmd_for()
894+
elif parser == "parse_cmd_function":
895+
self.parse_cmd_function()
896+
elif parser == "parse_cmd_if":
897+
self.parse_cmd_if()
898+
elif parser == "parse_cmd_insert":
899+
self.parse_cmd_insert()
900+
elif parser == "parse_cmd_let":
901+
self.parse_cmd_let()
902+
elif parser == "parse_cmd_loadkeymap":
903+
self.parse_cmd_loadkeymap()
904+
elif parser == "parse_cmd_lockvar":
905+
self.parse_cmd_lockvar()
906+
elif parser == "parse_cmd_lua":
907+
self.parse_cmd_lua()
908+
elif parser == "parse_cmd_modifier_range":
909+
self.parse_cmd_modifier_range()
910+
elif parser == "parse_cmd_mzscheme":
911+
self.parse_cmd_mzscheme()
912+
elif parser == "parse_cmd_perl":
913+
self.parse_cmd_perl()
914+
elif parser == "parse_cmd_python":
915+
self.parse_cmd_python()
916+
elif parser == "parse_cmd_python3":
917+
self.parse_cmd_python3()
918+
elif parser == "parse_cmd_return":
919+
self.parse_cmd_return()
920+
elif parser == "parse_cmd_ruby":
921+
self.parse_cmd_ruby()
922+
elif parser == "parse_cmd_tcl":
923+
self.parse_cmd_tcl()
924+
elif parser == "parse_cmd_throw":
925+
self.parse_cmd_throw()
926+
elif parser == "parse_cmd_try":
927+
self.parse_cmd_try()
928+
elif parser == "parse_cmd_unlet":
929+
self.parse_cmd_unlet()
930+
elif parser == "parse_cmd_unlockvar":
931+
self.parse_cmd_unlockvar()
932+
elif parser == "parse_cmd_usercmd":
933+
self.parse_cmd_usercmd()
934+
elif parser == "parse_cmd_while":
935+
self.parse_cmd_while()
936+
elif parser == "parse_wincmd":
937+
self.parse_wincmd()
938+
elif parser == "parse_cmd_syntax":
939+
self.parse_cmd_syntax()
940+
else:
941+
raise VimLParserException(viml_printf("unknown parser: %s", viml_string(parser)))
846942

847943
def find_command(self):
848944
c = self.reader.peekn(1)

0 commit comments

Comments
 (0)