fix: impatient loading order
This commit is contained in:
committed by
Sidhanth Rathod
parent
20f45c3962
commit
aee1c8b830
518
tree-sitter-c/test/corpus/expressions.txt
Normal file
518
tree-sitter-c/test/corpus/expressions.txt
Normal file
@@ -0,0 +1,518 @@
|
||||
============================================
|
||||
Number literals
|
||||
============================================
|
||||
|
||||
double a = {
|
||||
0xAC00,
|
||||
0.123,
|
||||
0b1010001,
|
||||
0xabc00ull,
|
||||
-0.1f,
|
||||
1'000'000.000'001,
|
||||
24e-5,
|
||||
0.1E,
|
||||
58.,
|
||||
4e2,
|
||||
123.456e-67,
|
||||
.1E4f,
|
||||
0x10.1p0,
|
||||
};
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(declaration
|
||||
(primitive_type)
|
||||
(init_declarator
|
||||
(identifier)
|
||||
(initializer_list
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
))))
|
||||
|
||||
============================================
|
||||
Identifiers
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
_abc;
|
||||
d_EG123;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (identifier))
|
||||
(expression_statement (identifier)))))
|
||||
|
||||
============================================
|
||||
Common constants
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
true;
|
||||
false;
|
||||
NULL;
|
||||
|
||||
// regression test - identifiers starting w/ these strings should tokenize correctly.
|
||||
true_value;
|
||||
false_value;
|
||||
NULL_value;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (true))
|
||||
(expression_statement (false))
|
||||
(expression_statement (null))
|
||||
(comment)
|
||||
(expression_statement (identifier))
|
||||
(expression_statement (identifier))
|
||||
(expression_statement (identifier)))))
|
||||
|
||||
============================================
|
||||
Function calls
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
printf("hi! %d\n", x);
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (call_expression
|
||||
(identifier)
|
||||
(argument_list (string_literal (escape_sequence)) (identifier)))))))
|
||||
|
||||
============================================
|
||||
String literals
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
"a";
|
||||
"b" "c" "d";
|
||||
"\"hi\"";
|
||||
L"bonjour";
|
||||
u"guten morgen";
|
||||
U"buenos dias";
|
||||
u8"buongiorno";
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (string_literal))
|
||||
(expression_statement (concatenated_string (string_literal) (string_literal) (string_literal)))
|
||||
(expression_statement (string_literal (escape_sequence) (escape_sequence)))
|
||||
(expression_statement (string_literal))
|
||||
(expression_statement (string_literal))
|
||||
(expression_statement (string_literal))
|
||||
(expression_statement (string_literal)))))
|
||||
|
||||
============================================
|
||||
Character literals
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
'a';
|
||||
'\0';
|
||||
'\t';
|
||||
'\'';
|
||||
L'b';
|
||||
u'c';
|
||||
U'\xa1';
|
||||
u8'\x1A';
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (char_literal))
|
||||
(expression_statement (char_literal (escape_sequence)))
|
||||
(expression_statement (char_literal (escape_sequence)))
|
||||
(expression_statement (char_literal (escape_sequence)))
|
||||
(expression_statement (char_literal))
|
||||
(expression_statement (char_literal))
|
||||
(expression_statement (char_literal (escape_sequence)))
|
||||
(expression_statement (char_literal (escape_sequence))))))
|
||||
|
||||
============================================
|
||||
Field access
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
s.data1;
|
||||
p->data2;
|
||||
q[data3];
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (field_expression (identifier) (field_identifier)))
|
||||
(expression_statement (field_expression (identifier) (field_identifier)))
|
||||
(expression_statement (subscript_expression (identifier) (identifier))))))
|
||||
|
||||
============================================
|
||||
Boolean operators
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
!x || !y && !z;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (binary_expression
|
||||
(unary_expression (identifier))
|
||||
(binary_expression
|
||||
(unary_expression (identifier))
|
||||
(unary_expression (identifier))))))))
|
||||
|
||||
============================================
|
||||
Math operators
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
-a / b + c * -d;
|
||||
a++ - ++b + c-- + --d;
|
||||
++L;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (binary_expression
|
||||
(binary_expression
|
||||
(unary_expression (identifier))
|
||||
(identifier))
|
||||
(binary_expression
|
||||
(identifier)
|
||||
(unary_expression (identifier)))))
|
||||
(expression_statement
|
||||
(binary_expression
|
||||
(binary_expression
|
||||
(binary_expression
|
||||
(update_expression (identifier))
|
||||
(update_expression (identifier)))
|
||||
(update_expression (identifier)))
|
||||
(update_expression (identifier))))
|
||||
(expression_statement (update_expression (identifier))))))
|
||||
|
||||
============================================
|
||||
The comma operator
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
i--, j--;
|
||||
(i--, j--);
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement
|
||||
(comma_expression
|
||||
(update_expression (identifier))
|
||||
(update_expression (identifier))))
|
||||
(expression_statement
|
||||
(parenthesized_expression
|
||||
(comma_expression
|
||||
(update_expression (identifier))
|
||||
(update_expression (identifier))))))))
|
||||
|
||||
============================================
|
||||
Assignments
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
static int a = 1;
|
||||
b = *c = 2;
|
||||
d.e = 3;
|
||||
f->g = 4;
|
||||
h[i] = j;
|
||||
k += l;
|
||||
m -= o;
|
||||
n *= p;
|
||||
q /= r;
|
||||
*s++ = 1;
|
||||
(*t) = 1;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
type: (primitive_type)
|
||||
declarator: (function_declarator
|
||||
declarator: (identifier)
|
||||
parameters: (parameter_list))
|
||||
body: (compound_statement
|
||||
(declaration
|
||||
(storage_class_specifier)
|
||||
type: (primitive_type)
|
||||
declarator: (init_declarator
|
||||
declarator: (identifier)
|
||||
value: (number_literal)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (identifier)
|
||||
right: (assignment_expression
|
||||
left: (pointer_expression
|
||||
argument: (identifier))
|
||||
right: (number_literal))))
|
||||
(expression_statement (assignment_expression
|
||||
left: (field_expression
|
||||
argument: (identifier)
|
||||
field: (field_identifier))
|
||||
right: (number_literal)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (field_expression
|
||||
argument: (identifier)
|
||||
field: (field_identifier))
|
||||
right: (number_literal)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (subscript_expression
|
||||
argument: (identifier)
|
||||
index: (identifier))
|
||||
right: (identifier)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (pointer_expression
|
||||
argument: (update_expression
|
||||
argument: (identifier)))
|
||||
right: (number_literal)))
|
||||
(expression_statement (assignment_expression
|
||||
left: (parenthesized_expression (pointer_expression
|
||||
argument: (identifier)))
|
||||
right: (number_literal))))))
|
||||
|
||||
============================================
|
||||
Pointer operations
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
doSomething(&x, *x);
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (call_expression
|
||||
(identifier)
|
||||
(argument_list
|
||||
(pointer_expression (identifier))
|
||||
(pointer_expression (identifier))))))))
|
||||
|
||||
============================================
|
||||
Type-casts
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
x = (const SomeType *)thing;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
type: (primitive_type)
|
||||
declarator: (function_declarator
|
||||
declarator: (identifier)
|
||||
parameters: (parameter_list))
|
||||
body: (compound_statement
|
||||
(expression_statement (assignment_expression
|
||||
left: (identifier)
|
||||
right: (cast_expression
|
||||
type: (type_descriptor
|
||||
(type_qualifier)
|
||||
type: (type_identifier)
|
||||
declarator: (abstract_pointer_declarator))
|
||||
value: (identifier)))))))
|
||||
|
||||
============================================
|
||||
Sizeof expressions
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
sizeof x.a;
|
||||
sizeof(x.a);
|
||||
sizeof(const char **);
|
||||
sizeof(char * ());
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (sizeof_expression (field_expression (identifier) (field_identifier))))
|
||||
(expression_statement (sizeof_expression (parenthesized_expression (field_expression (identifier) (field_identifier)))))
|
||||
(expression_statement (sizeof_expression
|
||||
(type_descriptor (type_qualifier) (primitive_type) (abstract_pointer_declarator (abstract_pointer_declarator)))))
|
||||
(expression_statement (sizeof_expression
|
||||
(type_descriptor (primitive_type) (abstract_pointer_declarator (abstract_function_declarator (parameter_list)))))))))
|
||||
|
||||
============================================
|
||||
Compound literals
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
x = (SomeType) {
|
||||
.f1.f2[f3] = 5,
|
||||
.f4 = {}
|
||||
};
|
||||
y = (struct SomeStruct) {
|
||||
7,
|
||||
8
|
||||
};
|
||||
z = (char const []) {'a', 'b'};
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (assignment_expression
|
||||
(identifier)
|
||||
(compound_literal_expression
|
||||
(type_descriptor (type_identifier))
|
||||
(initializer_list
|
||||
(initializer_pair
|
||||
(field_designator (field_identifier))
|
||||
(field_designator (field_identifier))
|
||||
(subscript_designator (identifier))
|
||||
(number_literal))
|
||||
(initializer_pair
|
||||
(field_designator (field_identifier))
|
||||
(initializer_list))))))
|
||||
(expression_statement (assignment_expression
|
||||
(identifier)
|
||||
(compound_literal_expression
|
||||
(type_descriptor (struct_specifier (type_identifier)))
|
||||
(initializer_list
|
||||
(number_literal)
|
||||
(number_literal)))))
|
||||
(expression_statement
|
||||
(assignment_expression
|
||||
(identifier)
|
||||
(compound_literal_expression
|
||||
(type_descriptor (primitive_type) (type_qualifier) (abstract_array_declarator))
|
||||
(initializer_list (char_literal) (char_literal))))))))
|
||||
|
||||
============================================
|
||||
Compound literals with trailing commas
|
||||
============================================
|
||||
|
||||
int main() {
|
||||
y = (struct SomeStruct) { 7, 8, };
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(expression_statement (assignment_expression
|
||||
(identifier)
|
||||
(compound_literal_expression
|
||||
(type_descriptor (struct_specifier (type_identifier)))
|
||||
(initializer_list
|
||||
(number_literal)
|
||||
(number_literal))))))))
|
||||
|
||||
====================================
|
||||
Comments with escaped newlines
|
||||
====================================
|
||||
|
||||
// one \
|
||||
two
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(comment))
|
||||
|
||||
==============================================
|
||||
Comments with escaped chars and newlines
|
||||
==============================================
|
||||
|
||||
// one \a \b \
|
||||
two
|
||||
// one \c \d
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(comment)
|
||||
(comment))
|
||||
Reference in New Issue
Block a user