Add golang example grammar
Also, support '\a' character class shorthand in regexes, for alphabetical characters
This commit is contained in:
parent
13c4e6e648
commit
7adb0bf34f
10 changed files with 4044 additions and 1015 deletions
77
spec/runtime/languages/golang/main.txt
Normal file
77
spec/runtime/languages/golang/main.txt
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
==========================================
|
||||
parses trivial programs
|
||||
==========================================
|
||||
package trivial
|
||||
|
||||
type x int64
|
||||
var y = 0
|
||||
func z() {}
|
||||
---
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(type_declaration (type_name) (type_name))
|
||||
(var_declaration (var_name) (number))
|
||||
(func_declaration (var_name) (statement_block)))
|
||||
|
||||
==========================================
|
||||
parses complex types
|
||||
==========================================
|
||||
package trivial
|
||||
|
||||
type x *struct {
|
||||
field1 []int64
|
||||
field2 map[string]interface{
|
||||
DoStuff()
|
||||
}
|
||||
}
|
||||
---
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(type_declaration
|
||||
(type_name)
|
||||
(pointer_type (struct_type
|
||||
(var_name) (slice_type (type_name))
|
||||
(var_name) (map_type (type_name) (interface_type (var_name)))))))
|
||||
|
||||
============================================
|
||||
parses functions arguments
|
||||
============================================
|
||||
package main
|
||||
func oneArg(arg1 interface{}) {}
|
||||
func argsOfSameType(arg1, arg2 string) {}
|
||||
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)))
|
||||
|
||||
============================================
|
||||
parses functions with unnamed return values
|
||||
============================================
|
||||
package main
|
||||
func oneReturnValue() string {}
|
||||
func multipleReturnValues() (string, int64, error) {}
|
||||
---
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (type_name)
|
||||
(statement_block))
|
||||
(func_declaration (var_name) (type_name) (type_name) (type_name)
|
||||
(statement_block)))
|
||||
|
||||
============================================
|
||||
parses functions with named return values
|
||||
============================================
|
||||
package main
|
||||
func oneReturnValue() (result string) {}
|
||||
func multipleReturnValues() (result string, count int64, err error) {}
|
||||
---
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (var_name) (type_name)
|
||||
(statement_block))
|
||||
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (var_name) (type_name)
|
||||
(statement_block)))
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue