difftastic/vendor/tree-sitter-c/test/corpus/statements.txt

262 lines
7.1 KiB
Plaintext

============================================
If statements
============================================
int main() {
if (a)
1;
if (!a) {
2;
} else {
3;
}
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list))
(compound_statement
(if_statement (parenthesized_expression (identifier))
(expression_statement (number_literal)))
(if_statement (parenthesized_expression (unary_expression (identifier)))
(compound_statement
(expression_statement (number_literal)))
(compound_statement
(expression_statement (number_literal)))))))
============================================
For loops
============================================
int main() {
for (;;)
1;
for (int i = 0; i < 5; next(), i++) {
2;
}
for (start(); check(); step())
3;
for (i = 0, j = 0, k = 0, l = 0; i < 1; i++, j++, k++, l++)
1;
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list))
(compound_statement
(for_statement
(expression_statement (number_literal)))
(for_statement
(declaration (primitive_type) (init_declarator (identifier) (number_literal)))
(binary_expression (identifier) (number_literal))
(comma_expression
(call_expression (identifier) (argument_list))
(update_expression (identifier)))
(compound_statement (expression_statement (number_literal))))
(for_statement
(call_expression (identifier) (argument_list))
(call_expression (identifier) (argument_list))
(call_expression (identifier) (argument_list))
(expression_statement (number_literal)))
(for_statement
(comma_expression
(assignment_expression (identifier) (number_literal))
(comma_expression
(assignment_expression (identifier) (number_literal))
(comma_expression
(assignment_expression (identifier) (number_literal))
(assignment_expression (identifier) (number_literal)))))
(binary_expression
(identifier)
(number_literal))
(comma_expression
(update_expression (identifier))
(comma_expression
(update_expression (identifier))
(comma_expression
(update_expression (identifier))
(update_expression (identifier)))))
(expression_statement (number_literal))))))
============================================
While loops
============================================
int main() {
while (x)
printf("hi");
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list))
(compound_statement
(while_statement (parenthesized_expression (identifier))
(expression_statement (call_expression
(identifier)
(argument_list (string_literal))))))))
============================================
Labeled statements
============================================
void foo(T *t) {
recur:
t = t->next();
if (t) goto recur;
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list
(parameter_declaration (type_identifier) (pointer_declarator (identifier)))))
(compound_statement
(labeled_statement (statement_identifier)
(expression_statement (assignment_expression
(identifier)
(call_expression (field_expression (identifier) (field_identifier)) (argument_list)))))
(if_statement (parenthesized_expression (identifier)) (goto_statement (statement_identifier))))))
============================================
Switch statements
============================================
void foo(int a) {
switch (a) {
puts("entered switch!");
case 3:
case 5:
if (b) {
c();
}
break;
default:
c();
break;
}
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list
(parameter_declaration (primitive_type) (identifier))))
(compound_statement
(switch_statement
(parenthesized_expression (identifier))
(compound_statement
(expression_statement (call_expression (identifier) (argument_list (string_literal))))
(case_statement (number_literal))
(case_statement (number_literal)
(if_statement
(parenthesized_expression (identifier))
(compound_statement (expression_statement (call_expression (identifier) (argument_list)))))
(break_statement))
(case_statement
(expression_statement (call_expression (identifier) (argument_list)))
(break_statement)))))))
============================================
Case statements separate from switch statements
============================================
int main() {
switch (count % 8) {
case 0:
do {
*to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list))
(compound_statement
(switch_statement
(parenthesized_expression (binary_expression (identifier) (number_literal)))
(compound_statement
(case_statement (number_literal)
(do_statement
(compound_statement
(expression_statement (assignment_expression
(pointer_expression (identifier))
(pointer_expression (update_expression (identifier)))))
(case_statement (number_literal)
(expression_statement (assignment_expression
(pointer_expression (identifier))
(pointer_expression (update_expression (identifier))))))
(case_statement (number_literal)
(expression_statement (assignment_expression
(pointer_expression (identifier))
(pointer_expression (update_expression (identifier)))))))
(parenthesized_expression (binary_expression (update_expression (identifier)) (number_literal))))))))))
============================================
Return statements
============================================
void foo() {
return;
return a;
return a, b;
}
---
(translation_unit
(function_definition
(primitive_type)
(function_declarator (identifier) (parameter_list))
(compound_statement
(return_statement)
(return_statement (identifier))
(return_statement (comma_expression (identifier) (identifier))))))
============================================
Comments with asterisks
============================================
/*************************
* odd number of asterisks
*************************/
int a;
/**************************
* even number of asterisks
**************************/
int b;
---
(translation_unit
(comment)
(declaration (primitive_type) (identifier))
(comment)
(declaration (primitive_type) (identifier)))