Add var decl and if statements to golang grammar
This commit is contained in:
parent
1c93d5e1a6
commit
53bc633a22
7 changed files with 2380 additions and 730 deletions
|
|
@ -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
|
|
@ -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))))
|
||||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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))))))
|
||||
|
|
@ -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)))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue