From a9f6cfb6a8b6d38057faca067c015da1f72cf62d Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Mon, 5 Oct 2026 00:26:05 +0200 Subject: Add a treesitter grammar --- .../tree-sitter/test/corpus/generic_inference.txt | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 tools/tree-sitter/test/corpus/generic_inference.txt (limited to 'tools/tree-sitter/test/corpus/generic_inference.txt') diff --git a/tools/tree-sitter/test/corpus/generic_inference.txt b/tools/tree-sitter/test/corpus/generic_inference.txt new file mode 100644 index 0000000..ccac55c --- /dev/null +++ b/tools/tree-sitter/test/corpus/generic_inference.txt @@ -0,0 +1,157 @@ +================== +generic_inference +================== + +program() +type + File = record + fd: Int + end + + Cell#[T] = record + held: ^T + end + +var + files: Cell#[File] + bytes: Cell#[Word8] + f: File + b: Word8 + +proc store#[T](target: ^Cell#[T]; value: ^T) + target^.held := value +return + +proc relay#[T](target: ^Cell#[T]; value: ^T) + store(target, value) +return + +begin + store(@files, @f); + relay(@bytes, @b); + store(@files, nil) +end. + +--- + +(source_file + (program_declaration + (type_section + (type_declaration + (identifier_definition + (identifier)) + (record_type + (field_declaration + (identifier_definition + (identifier)) + (identifier)))) + (type_declaration + (identifier_definition + (identifier)) + (type_parameters + (identifier)) + (record_type + (field_declaration + (identifier_definition + (identifier)) + (pointer_type + (identifier)))))) + (var_section + (variable_declaration + (identifier_definition + (identifier)) + (generic_type + (identifier) + (type_arguments + (identifier)))) + (variable_declaration + (identifier_definition + (identifier)) + (generic_type + (identifier) + (type_arguments + (identifier)))) + (variable_declaration + (identifier_definition + (identifier)) + (identifier)) + (variable_declaration + (identifier_definition + (identifier)) + (identifier))) + (procedure_declaration + (identifier_definition + (identifier)) + (type_parameters + (identifier)) + (parameter_list + (field_declaration + (identifier_definition + (identifier)) + (pointer_type + (generic_type + (identifier) + (type_arguments + (identifier))))) + (field_declaration + (identifier_definition + (identifier)) + (pointer_type + (identifier)))) + (procedure_body + (block + (assignment_statement + (field_expression + (dereference_expression + (identifier)) + (identifier)) + (identifier))) + (return_clause))) + (procedure_declaration + (identifier_definition + (identifier)) + (type_parameters + (identifier)) + (parameter_list + (field_declaration + (identifier_definition + (identifier)) + (pointer_type + (generic_type + (identifier) + (type_arguments + (identifier))))) + (field_declaration + (identifier_definition + (identifier)) + (pointer_type + (identifier)))) + (procedure_body + (block + (call_expression + (identifier) + (argument_list + (identifier) + (identifier)))) + (return_clause))) + (call_expression + (identifier) + (argument_list + (unary_expression + (identifier)) + (unary_expression + (identifier)))) + (call_expression + (identifier) + (argument_list + (unary_expression + (identifier)) + (unary_expression + (identifier)))) + (call_expression + (identifier) + (argument_list + (unary_expression + (identifier)) + (literal + (nil)))))) -- cgit v1.2.3