@@ -290,7 +290,7 @@ function s:JavascriptCompiler.compile_function(node)
290290 unlet rlist[-1 ]
291291 let va = 1
292292 endif
293- if left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
293+ if left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\ )\.'
294294 let [_0, klass, name; _] = matchlist (left , ' ^\(.*\)\.\(.*\)$' )
295295 if name == ' new'
296296 return
@@ -344,10 +344,10 @@ function s:JavascriptCompiler.compile_let(node)
344344 call self .out (' function LvalueParser() { ExprParser.apply(this, arguments); this.__init__.apply(this, arguments); }' )
345345 call self .out (' LvalueParser.prototype = Object.create(ExprParser.prototype);' )
346346 return
347- elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
347+ elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\ )$'
348348 call self .out (' function %s() { this.__init__.apply(this, arguments); }' , left )
349349 return
350- elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
350+ elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\ )\.'
351351 let [_0, klass, name; _] = matchlist (left , ' ^\(.*\)\.\(.*\)$' )
352352 call self .out (' %s.prototype.%s %s %s;' , klass, name, op , right )
353353 return
@@ -798,6 +798,10 @@ function s:JavascriptCompiler.compile_identifier(node)
798798 let name = ' a000'
799799 elseif name == ' v:val'
800800 let name = ' vval'
801+ elseif name == ' a:0'
802+ let name = ' a000.length'
803+ elseif name = ~ ' ^a:[1-9]$'
804+ let name = ' a000[' . (str2nr (name[2 :]) - 1 ) . ' ]'
801805 elseif name = ~ ' ^[sa]:'
802806 let name = name[2 :]
803807 elseif name == ' self'
@@ -859,7 +863,8 @@ function! s:convert(in, out) abort
859863 \ ' module.exports = {' ,
860864 \ ' VimLParser: VimLParser,' ,
861865 \ ' StringReader: StringReader,' ,
862- \ ' Compiler: Compiler' ,
866+ \ ' Compiler: Compiler,' ,
867+ \ ' Printer: Printer' ,
863868 \ ' };' ,
864869 \ ' }' ,
865870 \ ]
0 commit comments