mirror of https://github.com/Wilfred/difftastic/
245 lines
6.0 KiB
Plaintext
245 lines
6.0 KiB
Plaintext
============================================
|
|
Identifiers
|
|
============================================
|
|
|
|
int main() {
|
|
_abc;
|
|
d_EG123;
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(declaration (identifier))
|
|
(declaration (identifier))))
|
|
|
|
============================================
|
|
Function calls
|
|
============================================
|
|
|
|
int main() {
|
|
printf("hi! %d\n", x);
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (call_expression (identifier) (string_literal) (identifier)))))
|
|
|
|
============================================
|
|
Character literals
|
|
============================================
|
|
|
|
int main() {
|
|
'a';
|
|
'\0';
|
|
'\t';
|
|
'\'';
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (char_literal))
|
|
(expression_statement (char_literal))
|
|
(expression_statement (char_literal))
|
|
(expression_statement (char_literal))))
|
|
|
|
============================================
|
|
Field access
|
|
============================================
|
|
|
|
int main() {
|
|
s.data1;
|
|
p->data2;
|
|
q[data3];
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (field_expression (identifier) (identifier)))
|
|
(expression_statement (field_expression (identifier) (identifier)))
|
|
(expression_statement (subscript_expression (identifier) (identifier)))))
|
|
|
|
============================================
|
|
Boolean operators
|
|
============================================
|
|
|
|
int main() {
|
|
!x || !y && !z;
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (logical_expression
|
|
(logical_expression (identifier))
|
|
(logical_expression
|
|
(logical_expression (identifier))
|
|
(logical_expression (identifier)))))))
|
|
|
|
============================================
|
|
Math operators
|
|
============================================
|
|
|
|
int main() {
|
|
-a / b + c * -d;
|
|
a++ - ++b + c-- + --d;
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (math_expression
|
|
(math_expression
|
|
(math_expression (identifier))
|
|
(identifier))
|
|
(math_expression
|
|
(identifier)
|
|
(math_expression (identifier)))))
|
|
(expression_statement
|
|
(math_expression
|
|
(math_expression (identifier))
|
|
(math_expression
|
|
(math_expression (identifier))
|
|
(math_expression
|
|
(math_expression (identifier))
|
|
(math_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;
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(declaration (storage_class_specifier) (identifier) (init_declarator (identifier) (number_literal)))
|
|
(expression_statement (assignment_expression (identifier) (assignment_expression (pointer_expression (identifier)) (number_literal))))
|
|
(expression_statement (assignment_expression (field_expression (identifier) (identifier)) (number_literal)))
|
|
(expression_statement (assignment_expression (field_expression (identifier) (identifier)) (number_literal)))
|
|
(expression_statement (assignment_expression (subscript_expression (identifier) (identifier)) (identifier)))
|
|
(expression_statement (assignment_expression (identifier) (identifier)))
|
|
(expression_statement (assignment_expression (identifier) (identifier)))
|
|
(expression_statement (assignment_expression (identifier) (identifier)))
|
|
(expression_statement (assignment_expression (identifier) (identifier)))))
|
|
|
|
============================================
|
|
Pointer operations
|
|
============================================
|
|
|
|
int main() {
|
|
doSomething(&x, *x);
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (call_expression (identifier)
|
|
(pointer_expression (identifier))
|
|
(pointer_expression (identifier))))))
|
|
|
|
============================================
|
|
Type-casts
|
|
============================================
|
|
|
|
int main() {
|
|
x = (const SomeType *)thing;
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (assignment_expression
|
|
(identifier)
|
|
(cast_expression
|
|
(type_name (type_qualifier) (identifier) (pointer))
|
|
(identifier))))))
|
|
|
|
============================================
|
|
Sizeof expressions
|
|
============================================
|
|
|
|
int main() {
|
|
sizeof x.a;
|
|
sizeof(x.a);
|
|
sizeof(const char *);
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (sizeof_expression (field_expression (identifier) (identifier))))
|
|
(expression_statement (sizeof_expression (expression (field_expression (identifier) (identifier)))))
|
|
(expression_statement (sizeof_expression (type_name (type_qualifier) (identifier) (pointer))))))
|
|
|
|
============================================
|
|
Compound literals
|
|
============================================
|
|
|
|
int main() {
|
|
x = (SomeType) { .field1 = 5, .field2 = 6 };
|
|
y = (struct SomeStruct) { 7, 8 };
|
|
}
|
|
|
|
---
|
|
|
|
(function_definition
|
|
(identifier)
|
|
(direct_declarator (identifier))
|
|
(compound_statement
|
|
(expression_statement (assignment_expression
|
|
(identifier)
|
|
(compound_literal_expression (identifier)
|
|
(initializer_list
|
|
(designator (identifier)) (number_literal)
|
|
(designator (identifier)) (number_literal)))))
|
|
(expression_statement (assignment_expression
|
|
(identifier)
|
|
(compound_literal_expression (struct_specifier (identifier))
|
|
(initializer_list
|
|
(number_literal)
|
|
(number_literal)))))))
|