File tree Expand file tree Collapse file tree 4 files changed +37
-2
lines changed
autoload/vital/__vimlparser__ Expand file tree Collapse file tree 4 files changed +37
-2
lines changed Original file line number Diff line number Diff line change 1
- # Vim Script Parsers
1
+ # VimL Parsers
2
2
3
3
[ ![ Build Status] ( https://travis-ci.org/vim-jp/vim-vimlparser.svg?branch=master )] ( https://travis-ci.org/vim-jp/vim-vimlparser ) [ ![ codecov] ( https://codecov.io/gh/vim-jp/vim-vimlparser/branch/master/graph/badge.svg )] ( https://codecov.io/gh/vim-jp/vim-vimlparser )
4
4
5
+ This is Vim script (a.k.a. VimL) parsers.
5
6
6
- TODO: write something.
7
+ ## Features
8
+
9
+ The parser to make AST (Abstract Syntax Tree)
10
+
11
+ ## Supported languages
12
+
13
+ This parser provide same feature for following languages.
14
+
15
+ * Vim script
16
+ * Python
17
+ * Javascript
18
+
19
+ ## Example
20
+
21
+ All of interfaces are provided from vimlparser module. VimLParser parse into AST using StringReader, and Compiler to compile nodes.
22
+
23
+ ``` vim
24
+ let s:vimlparser = vimlparser#import()
25
+ let code = [
26
+ \ 'let s:message = printf("hello %d", 1+(2*3))'
27
+ \]
28
+ let r = s:StringReader.new(code)
29
+ let p = s:VimLParser.new()
30
+ let c = s:Compiler.new()
31
+ echo join(c.compile(p.parse(r)), "\n")
32
+ ```
33
+
34
+ This above code output following.
35
+
36
+ ```
37
+ (let = s:message (printf "hello %d" (+ 1 (* 2 3))))
38
+ ```
Original file line number Diff line number Diff line change @@ -452,6 +452,7 @@ function! s:VimLParser.parse(reader)
452
452
let self .reader = a: reader
453
453
let self .context = []
454
454
let toplevel = s: Node (s: NODE_TOPLEVEL )
455
+ let toplevel.pos = self .reader.getpos ()
455
456
let toplevel.body = []
456
457
call self .push_context (toplevel)
457
458
while self .reader.peek () !=# ' <EOF>'
Original file line number Diff line number Diff line change @@ -669,6 +669,7 @@ VimLParser.prototype.parse = function(reader) {
669
669
this . reader = reader ;
670
670
this . context = [ ] ;
671
671
var toplevel = Node ( NODE_TOPLEVEL ) ;
672
+ toplevel . pos = this . reader . getpos ( ) ;
672
673
toplevel . body = [ ] ;
673
674
this . push_context ( toplevel ) ;
674
675
while ( this . reader . peek ( ) != "<EOF>" ) {
Original file line number Diff line number Diff line change @@ -583,6 +583,7 @@ def parse(self, reader):
583
583
self .reader = reader
584
584
self .context = []
585
585
toplevel = Node (NODE_TOPLEVEL )
586
+ toplevel .pos = self .reader .getpos ()
586
587
toplevel .body = []
587
588
self .push_context (toplevel )
588
589
while self .reader .peek () != "<EOF>" :
You can’t perform that action at this time.
0 commit comments