Skip to content

Commit

Permalink
Merge pull request Wilfred#4 from nvim-treesitter/master
Browse files Browse the repository at this point in the history
* Implement return statements
* Name field nodes
  • Loading branch information
Azganoth authored Jul 11, 2020
2 parents c919f55 + 6b6ce95 commit 4f78468
Show file tree
Hide file tree
Showing 9 changed files with 39,425 additions and 31,974 deletions.
19 changes: 8 additions & 11 deletions corpus/functions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,19 @@ a.b.f = function(self, test, ...) return 10 end
(function_definition (parameters)
(return_statement (false))))

(variable_declaration (variable_declarator (identifier) (property_identifier) (property_identifier))
(function_definition (parameters)
(return_statement (true))))
(variable_declaration (variable_declarator
(field_expression (field_expression (identifier) (property_identifier)) (property_identifier)))
(function_definition (parameters)
(return_statement (true))))

(local_variable_declaration (variable_declarator (identifier)))

(variable_declaration (variable_declarator (identifier))
(function_definition (parameters)
(return_statement (string))))

(variable_declaration (variable_declarator (identifier) (property_identifier) (property_identifier))
(variable_declaration (variable_declarator
(field_expression (field_expression (identifier) (property_identifier)) (property_identifier)))
(function_definition (parameters (self) (identifier) (spread))
(return_statement (number)))))

Expand All @@ -46,8 +48,6 @@ function t.a.b.c.f()
return true
end

t.a.b.c.f = function() return true end

---

(program
Expand All @@ -58,11 +58,8 @@ t.a.b.c.f = function() return true end
(function_definition (parameters)
(return_statement (false))))

(function (function_name (identifier) (property_identifier) (property_identifier) (property_identifier) (property_identifier)) (parameters)
(return_statement (true)))

(variable_declaration (variable_declarator (identifier) (property_identifier) (property_identifier) (property_identifier) (property_identifier)) (function_definition (parameters)
(return_statement (true)))))
(function (function_name (function_name_field (identifier) (property_identifier) (property_identifier) (property_identifier) (property_identifier))) (parameters)
(return_statement (true))))


============================================
Expand Down
4 changes: 2 additions & 2 deletions corpus/statements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,13 @@ end
(function_call (identifier)
(arguments (string)))
(elseif (condition_expression (binary_operation (identifier) (string)))
(function_call (identifier) (property_identifier)
(function_call (field_expression (identifier) (property_identifier))
(arguments (string))))
(else
(variable_declaration (variable_declarator (identifier)) (number))

(local_variable_declaration (variable_declarator (identifier))
(function_call (identifier) (property_identifier)
(function_call (field_expression (identifier) (property_identifier))
(arguments)))

(function_call (identifier)
Expand Down
19 changes: 14 additions & 5 deletions grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ module.exports = grammar({
conflicts: $ => [
[$._prefix],
[$._expression, $._variable_declarator],
[$._expression, $.function_call_statement]
[$._expression, $.function_call_statement],
[$.function_name, $.function_name_field]
],

externals: $ => [
Expand All @@ -40,7 +41,7 @@ module.exports = grammar({
],

rules: {
program: $ => repeat($._statement),
program: $ => seq(repeat($._statement), optional($.return_statement)),

// Return statement
return_statement: $ => seq(
Expand Down Expand Up @@ -90,9 +91,11 @@ module.exports = grammar({
_variable_declarator: $ => choice(
$.identifier,
seq($._prefix, '[', $._expression, ']'),
seq($._prefix, '.', alias($.identifier, $.property_identifier))
$.field_expression
),

field_expression: $ => seq($._prefix, '.', alias($.identifier, $.property_identifier)),

_local_variable_declarator: $ => sequence($.identifier),

// Statements: Control statements
Expand Down Expand Up @@ -222,11 +225,17 @@ module.exports = grammar({
),

function_name: $ => seq(
$.identifier,
repeat(seq('.', alias($.identifier, $.property_identifier))),
choice($.identifier,
$.function_name_field
),
optional(seq(':', alias($.identifier, $.method)))
),

function_name_field: $ => seq(
field("object", $.identifier),
repeat(seq('.', alias($.identifier, $.property_identifier))),
),

parameters: $ => seq(
'(',
optional(seq(
Expand Down
75 changes: 34 additions & 41 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
},
"devDependencies": {
"prebuild": "^9.0.1",
"tree-sitter-cli": "^0.15.7"
"tree-sitter-cli": "^0.15.14"
},
"files": [
"src",
Expand Down
Loading

0 comments on commit 4f78468

Please sign in to comment.