Files
brolang/tree-sitter-brolang/test/corpus/syntax.txt
T
2026-07-14 20:15:52 +02:00

238 lines
4.4 KiB
Plaintext

==================
Core syntax
==================
io :: import "@std/io"
Status :: enum {
ok
bad
}
Pair :: struct {
left i32
right i32
}
sum func(a, b i32) i32 ! Status {
result :: a + b
if result > 0 {
return result
} else {
return .bad
}
}
---
(source_file
(import_declaration
(identifier)
(string
(string_content)))
(type_declaration
(identifier)
(enum_type
(enum_body
(enum_member
(identifier))
(enum_member
(identifier)))))
(type_declaration
(identifier)
(struct_type
(record_body
(record_field
(identifier)
(type
(builtin_type)))
(record_field
(identifier)
(type
(builtin_type))))))
(function_declaration
(identifier)
(parameter_list
(parameter
(identifier)
(identifier)
(type
(builtin_type))))
(type
(builtin_type))
(type
(named_type
(qualified_identifier
(identifier))))
(block
(statement
(constant_declaration
(identifier)
(expression
(binary_expression
(expression
(identifier))
(expression
(identifier))))))
(statement
(if_statement
(expression
(binary_expression
(expression
(identifier))
(expression
(integer))))
(statement
(block
(statement
(return_statement
(expression
(identifier))))))
(statement
(block
(statement
(return_statement
(expression
(enum_literal
(identifier))))))))))))
==================
Intrinsic calls
==================
main func() void {
_ = sizeof ! (i32)
}
---
(source_file
(function_declaration
(identifier)
(parameter_list)
(type
(builtin_type))
(block
(statement
(assignment_statement
(expression
(sink))
(expression
(intrinsic_call_expression
(identifier)
(argument_list
(expression
(builtin_type))))))))))
==================
Errdefer
==================
Failure :: enum { bad }
work func() i32 ! Failure {
errdefer cleanup()
errdefer |err| {
_ = err
}
return 1
}
---
(source_file
(type_declaration
(identifier)
(enum_type
(enum_body
(enum_member
(identifier)))))
(function_declaration
(identifier)
(parameter_list)
(type
(builtin_type))
(type
(named_type
(qualified_identifier
(identifier))))
(block
(statement
(defer_statement
(statement
(expression_statement
(expression
(call_expression
(expression
(identifier))
(argument_list)))))))
(statement
(defer_statement
(error_capture
(identifier))
(statement
(block
(statement
(assignment_statement
(expression
(sink))
(expression
(identifier))))))))
(statement
(return_statement
(expression
(integer)))))))
==================
Bare return and value yield
==================
done func() void {
return
}
inline func() void { return }
choose func() i32 {
result :: { yield 1 }
return result
}
---
(source_file
(function_declaration
(identifier)
(parameter_list)
(type
(builtin_type))
(block
(statement
(return_statement))))
(function_declaration
(identifier)
(parameter_list)
(type
(builtin_type))
(block
(statement
(return_statement))))
(function_declaration
(identifier)
(parameter_list)
(type
(builtin_type))
(block
(statement
(constant_declaration
(identifier)
(block
(statement
(yield_statement
(expression
(integer)))))))
(statement
(return_statement
(expression
(identifier)))))))