Skip to content

Commit 62dad18

Browse files
committed
Merge branch 'master' into vital-module
2 parents 190ad40 + ae76039 commit 62dad18

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

README.mkd

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,38 @@
1-
# Vim Script Parsers
1+
# VimL Parsers
22

33
[![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)
44

5+
This is Vim script (a.k.a. VimL) parsers.
56

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+
```

autoload/vital/__vimlparser__/VimLParser.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,7 @@ function! s:VimLParser.parse(reader)
452452
let self.reader = a:reader
453453
let self.context = []
454454
let toplevel = s:Node(s:NODE_TOPLEVEL)
455+
let toplevel.pos = self.reader.getpos()
455456
let toplevel.body = []
456457
call self.push_context(toplevel)
457458
while self.reader.peek() !=# '<EOF>'

js/vimlparser.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,7 @@ VimLParser.prototype.parse = function(reader) {
669669
this.reader = reader;
670670
this.context = [];
671671
var toplevel = Node(NODE_TOPLEVEL);
672+
toplevel.pos = this.reader.getpos();
672673
toplevel.body = [];
673674
this.push_context(toplevel);
674675
while (this.reader.peek() != "<EOF>") {

py/vimlparser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,7 @@ def parse(self, reader):
583583
self.reader = reader
584584
self.context = []
585585
toplevel = Node(NODE_TOPLEVEL)
586+
toplevel.pos = self.reader.getpos()
586587
toplevel.body = []
587588
self.push_context(toplevel)
588589
while self.reader.peek() != "<EOF>":

0 commit comments

Comments
 (0)