Initial commit

pull/70/head
Max Brunsfeld 2014-07-30 00:43:20 +07:00
parent 236a8dc0e5
commit 49c31f527c
4 changed files with 104 additions and 0 deletions

9
.gitignore vendored

@ -0,0 +1,9 @@
node_modules
build
# files generated by node-tree-sitter-compiler
index.js
binding.gyp
grammar.json
src
include

@ -0,0 +1,35 @@
compiler = require("tree-sitter-compiler")
{ choice, repeat, seq, keyword, token, optional } = compiler.rules
module.exports = compiler.grammar
name: 'javascript',
rules:
program: -> repeat(@statement)
statement: -> choice(
@expression_statement,
@if_statement)
expression_statement: -> seq(
@expression, ";")
if_statement: -> seq(
keyword("if"),
"(", @expression, ")",
@statement)
expression: -> choice(
@variable,
@number,
@string)
variable: -> /\a+\d*/,
number: -> token(seq(
/\d+/,
optional(seq(".", /\d+/))))
string: -> token(choice(
seq('"', repeat(choice(/[^"]/, '\\"')), '"'),
seq("'", repeat(choice(/[^']/, "\\'")), "'")))

@ -0,0 +1,38 @@
============================================
Strings
============================================
"A string with \"double\" and 'single' quotes";
'A string with "double" and \'single\' quotes';
----
(program
(expression_statement (string))
(expression_statement (string)))
============================================
Numbers
============================================
101;
3.14;
---
(program
(expression_statement (number))
(expression_statement (number)))
============================================
Variables
============================================
theVar;
theVar2;
---
(program
(expression_statement (variable))
(expression_statement (variable)))

@ -0,0 +1,22 @@
{
"name": "tree-sitter-javascript",
"version": "0.0.0",
"description": "Javascript grammar for node-tree-sitter",
"main": "index.js",
"keywords": [
"parser",
"lexer"
],
"author": "Max Brunsfeld",
"license": "MIT",
"dependencies": {
"bindings": "1.2.x"
},
"devDependencies": {
"tree-sitter-compiler": "*"
},
"scripts": {
"prepublish": "tree-sitter compile",
"test": "tree-sitter test"
}
}