Add var decl and if statements to golang grammar

This commit is contained in:
Max Brunsfeld 2014-06-10 13:27:55 -07:00
parent 1c93d5e1a6
commit 53bc633a22
7 changed files with 2380 additions and 730 deletions

View file

@ -46,8 +46,8 @@ namespace tree_sitter_examples {
keyword("func"),
sym("var_name"),
sym("_func_signature"),
sym("statement_block") })) },
{ "statement_block", in_braces(err(repeat(sym("statement")))) },
sym("block_statement") })) },
{ "block_statement", in_braces(err(repeat(sym("statement")))) },
{ "type_expression", choice({
sym("pointer_type"),
sym("slice_type"),
@ -81,10 +81,24 @@ namespace tree_sitter_examples {
// Statements
{ "statement", choice({
sym("expression_statement"),
sym("return_statement") }) },
sym("return_statement"),
sym("declaration_statement"),
sym("if_statement") }) },
{ "return_statement", seq({
keyword("return"),
comma_sep(sym("expression")) }) },
{ "declaration_statement", choice({
sym("var_declaration"),
seq({ comma_sep(sym("var_name")), str(":="), sym("expression") }) }) },
{ "if_statement", seq({
keyword("if"),
sym("expression"),
sym("block_statement"),
optional(seq({
keyword("else"),
choice({
sym("if_statement"),
sym("block_statement") }) })) }) },
{ "expression_statement", terminated(sym("expression")) },
// Value expressions

File diff suppressed because it is too large Load diff

View file

@ -11,7 +11,7 @@ func z() {}
(package_directive (package_name))
(type_declaration (type_name) (type_name))
(var_declaration (var_name) (string))
(func_declaration (var_name) (statement_block)))
(func_declaration (var_name) (block_statement)))
==========================================
parses var declarations
@ -40,4 +40,4 @@ func main() {
(program
(package_directive (package_name))
(var_declaration (var_name) (expression (number) (comment)))
(func_declaration (var_name) (statement_block (comment))))
(func_declaration (var_name) (block_statement (comment))))

View file

@ -8,5 +8,5 @@ package trivial
---
(program
(package_directive (package_name))
(func_declaration (var_name) (statement_block))
(func_declaration (var_name) (statement_block)))
(func_declaration (var_name) (block_statement))
(func_declaration (var_name) (block_statement)))

View file

@ -10,7 +10,7 @@ func main() {
---
(program
(package_directive (package_name))
(func_declaration (var_name) (statement_block
(func_declaration (var_name) (block_statement
(expression_statement (call_expression (var_name) (string) (number)))
(expression_statement (call_expression (var_name))))))
@ -25,7 +25,7 @@ func main() {
---
(program
(package_directive (package_name))
(func_declaration (var_name) (statement_block
(func_declaration (var_name) (block_statement
(expression_statement (call_expression
(selector_expression (var_name) (var_name))
(selector_expression (var_name) (var_name))

View file

@ -11,9 +11,54 @@ func helper() {
return 1, two, "three"
}
---
(program
(package_directive (package_name))
(func_declaration (var_name) (statement_block
(program (package_directive (package_name))
(func_declaration (var_name) (block_statement
(return_statement)))
(func_declaration (var_name) (statement_block
(func_declaration (var_name) (block_statement
(return_statement (number) (var_name) (string)))))
============================================
parses variable declaration statements
============================================
package main
func main() {
x, y := stuff()
var z = 10
println(x, y, z)
}
---
(program (package_directive (package_name))
(func_declaration (var_name) (block_statement
(declaration_statement (var_name) (var_name) (call_expression (var_name)))
(var_declaration (var_name) (number))
(expression_statement (call_expression (var_name) (var_name) (var_name) (var_name))))))
============================================
parses if statements
============================================
package main
func main() {
if condition1() {
}
if condition2() {
} else {
}
if condition3() {
} else if condition4() {
}
}
---
(program (package_directive (package_name))
(func_declaration (var_name) (block_statement
(if_statement (call_expression (var_name))
(block_statement))
(if_statement (call_expression (var_name))
(block_statement) (block_statement))
(if_statement (call_expression (var_name))
(block_statement)
(if_statement (call_expression (var_name))
(block_statement))))))

View file

@ -29,9 +29,9 @@ func argsOfDifferentTypes() (arg1 string, arg2 int64) {}
---
(program
(package_directive (package_name))
(func_declaration (var_name) (var_name) (interface_type) (statement_block))
(func_declaration (var_name) (var_name) (var_name) (type_name) (statement_block))
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (statement_block)))
(func_declaration (var_name) (var_name) (interface_type) (block_statement))
(func_declaration (var_name) (var_name) (var_name) (type_name) (block_statement))
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (block_statement)))
============================================
parses functions with unnamed return values
@ -44,9 +44,9 @@ func multipleReturnValues() (string, int64, error) {}
(program
(package_directive (package_name))
(func_declaration (var_name) (type_name)
(statement_block))
(block_statement))
(func_declaration (var_name) (type_name) (type_name) (type_name)
(statement_block)))
(block_statement)))
============================================
parses functions with named return values
@ -59,7 +59,7 @@ func multipleReturnValues() (result string, count int64, err error) {}
(program
(package_directive (package_name))
(func_declaration (var_name) (var_name) (type_name)
(statement_block))
(block_statement))
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (var_name) (type_name)
(statement_block)))
(block_statement)))