Update dependencies and regenerate CPP parser (#13)
Co-authored-by: mskelton <mskelton@users.noreply.github.com>
This commit is contained in:
co-authored by
mskelton
parent
a99bb0d545
commit
931c278a2d
+1003
-478
File diff suppressed because it is too large
Load Diff
+117
-50
@@ -1,30 +1,38 @@
|
||||
=====================================
|
||||
================================================================================
|
||||
Scoped function definitions
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
int T::foo() { return 1; }
|
||||
int T::foo() const { return 0; }
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator
|
||||
(qualified_identifier (namespace_identifier) (identifier))
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(identifier))
|
||||
(parameter_list))
|
||||
(compound_statement (return_statement (number_literal))))
|
||||
(compound_statement
|
||||
(return_statement
|
||||
(number_literal))))
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator
|
||||
(qualified_identifier (namespace_identifier) (identifier))
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(identifier))
|
||||
(parameter_list)
|
||||
(type_qualifier))
|
||||
(compound_statement (return_statement (number_literal)))))
|
||||
(compound_statement
|
||||
(return_statement
|
||||
(number_literal)))))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Constructor definitions
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
T::T() {}
|
||||
|
||||
@@ -36,32 +44,52 @@ T::T() : Base<T>() {}
|
||||
|
||||
T::T() try : f1(0) {} catch(...) {}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(function_declarator
|
||||
(qualified_identifier (namespace_identifier) (identifier))
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(identifier))
|
||||
(parameter_list))
|
||||
(compound_statement))
|
||||
(function_definition
|
||||
(function_declarator
|
||||
(qualified_identifier (namespace_identifier) (identifier))
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(identifier))
|
||||
(parameter_list))
|
||||
(field_initializer_list
|
||||
(field_initializer (field_identifier) (argument_list (number_literal)))
|
||||
(field_initializer (field_identifier) (argument_list (number_literal) (number_literal))))
|
||||
(field_initializer
|
||||
(field_identifier)
|
||||
(argument_list
|
||||
(number_literal)))
|
||||
(field_initializer
|
||||
(field_identifier)
|
||||
(argument_list
|
||||
(number_literal)
|
||||
(number_literal))))
|
||||
(compound_statement
|
||||
(expression_statement (call_expression (identifier) (argument_list (string_literal))))))
|
||||
(expression_statement
|
||||
(call_expression
|
||||
(identifier)
|
||||
(argument_list
|
||||
(string_literal
|
||||
(string_content)))))))
|
||||
(function_definition
|
||||
(function_declarator
|
||||
(qualified_identifier (namespace_identifier) (identifier))
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(identifier))
|
||||
(parameter_list))
|
||||
(field_initializer_list
|
||||
(field_initializer
|
||||
(template_method
|
||||
(field_identifier)
|
||||
(template_argument_list (type_descriptor (type_identifier))))
|
||||
(template_argument_list
|
||||
(type_descriptor
|
||||
(type_identifier))))
|
||||
(argument_list)))
|
||||
(compound_statement))
|
||||
(function_definition
|
||||
@@ -81,9 +109,9 @@ T::T() try : f1(0) {} catch(...) {}
|
||||
(parameter_list)
|
||||
(compound_statement)))))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Explicit constructor definitions
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
class C {
|
||||
explicit C(int f) : f_(f) {}
|
||||
@@ -92,7 +120,7 @@ class C {
|
||||
int f_;
|
||||
};
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(class_specifier
|
||||
@@ -102,23 +130,31 @@ class C {
|
||||
(explicit_function_specifier)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list (parameter_declaration (primitive_type) (identifier))))
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(primitive_type)
|
||||
(identifier))))
|
||||
(field_initializer_list
|
||||
(field_initializer (field_identifier) (argument_list (identifier))))
|
||||
(field_initializer
|
||||
(field_identifier)
|
||||
(argument_list
|
||||
(identifier))))
|
||||
(compound_statement))
|
||||
(access_specifier)
|
||||
(field_declaration (primitive_type) (field_identifier)))))
|
||||
(field_declaration
|
||||
(primitive_type)
|
||||
(field_identifier)))))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Explicit constructor declaration
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
class C {
|
||||
explicit C(int f);
|
||||
explicit(true) C(long f);
|
||||
};
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(class_specifier
|
||||
@@ -126,14 +162,25 @@ class C {
|
||||
(field_declaration_list
|
||||
(declaration
|
||||
(explicit_function_specifier)
|
||||
(function_declarator (identifier) (parameter_list (parameter_declaration (primitive_type) (identifier)))))
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(primitive_type)
|
||||
(identifier)))))
|
||||
(declaration
|
||||
(explicit_function_specifier (true))
|
||||
(function_declarator (identifier) (parameter_list (parameter_declaration (sized_type_specifier) (identifier))))))))
|
||||
(explicit_function_specifier
|
||||
(true))
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(sized_type_specifier)
|
||||
(identifier))))))))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Default and deleted methods
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
class A : public B {
|
||||
A() = default;
|
||||
@@ -143,7 +190,7 @@ class A : public B {
|
||||
A& operator=(A&&) = delete;
|
||||
};
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(class_specifier
|
||||
@@ -153,56 +200,78 @@ class A : public B {
|
||||
(type_identifier))
|
||||
(field_declaration_list
|
||||
(function_definition
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list))
|
||||
(default_method_clause))
|
||||
(function_definition
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list (parameter_declaration (type_identifier) (abstract_reference_declarator))))
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(type_identifier)
|
||||
(abstract_reference_declarator))))
|
||||
(delete_method_clause))
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (field_identifier) (parameter_list)) (delete_method_clause))
|
||||
(function_declarator
|
||||
(field_identifier)
|
||||
(parameter_list))
|
||||
(delete_method_clause))
|
||||
(function_definition
|
||||
(type_identifier)
|
||||
(reference_declarator
|
||||
(function_declarator
|
||||
(operator_name)
|
||||
(parameter_list (parameter_declaration (type_qualifier) (type_identifier) (abstract_reference_declarator)))))
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(type_qualifier)
|
||||
(type_identifier)
|
||||
(abstract_reference_declarator)))))
|
||||
(default_method_clause))
|
||||
(function_definition
|
||||
(type_identifier)
|
||||
(reference_declarator
|
||||
(function_declarator
|
||||
(operator_name)
|
||||
(parameter_list (parameter_declaration (type_identifier) (abstract_reference_declarator)))))
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(type_identifier)
|
||||
(abstract_reference_declarator)))))
|
||||
(delete_method_clause)))))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Destructor definitions
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
~T() {}
|
||||
T::~T() {}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(function_declarator (destructor_name (identifier)) (parameter_list))
|
||||
(function_declarator
|
||||
(destructor_name
|
||||
(identifier))
|
||||
(parameter_list))
|
||||
(compound_statement))
|
||||
(function_definition
|
||||
(function_declarator
|
||||
(qualified_identifier (namespace_identifier) (destructor_name (identifier))) (parameter_list))
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(destructor_name
|
||||
(identifier)))
|
||||
(parameter_list))
|
||||
(compound_statement)))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Function-try-block definitions
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
void foo() try {} catch(...) {}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
@@ -216,14 +285,13 @@ void foo() try {} catch(...) {}
|
||||
(parameter_list)
|
||||
(compound_statement)))))
|
||||
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
Conversion operator definitions
|
||||
=====================================
|
||||
================================================================================
|
||||
|
||||
T::operator int() try { throw 1; } catch (...) { return 2; }
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
@@ -242,4 +310,3 @@ T::operator int() try { throw 1; } catch (...) { return 2; }
|
||||
(compound_statement
|
||||
(return_statement
|
||||
(number_literal)))))))
|
||||
|
||||
|
||||
+576
-338
File diff suppressed because it is too large
Load Diff
+308
-133
@@ -1,23 +1,28 @@
|
||||
===========================================
|
||||
================================================================================
|
||||
Returning braced initializer lists
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
T main() {
|
||||
return {0, 5};
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(type_identifier)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list))
|
||||
(compound_statement
|
||||
(return_statement (initializer_list (number_literal) (number_literal))))))
|
||||
(return_statement
|
||||
(initializer_list
|
||||
(number_literal)
|
||||
(number_literal))))))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Range-based for loops
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
T main() {
|
||||
for (Value &value : values) {
|
||||
@@ -41,7 +46,7 @@ T main() {
|
||||
}
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
@@ -52,34 +57,46 @@ T main() {
|
||||
body: (compound_statement
|
||||
(for_range_loop
|
||||
type: (type_identifier)
|
||||
declarator: (reference_declarator (identifier))
|
||||
declarator: (reference_declarator
|
||||
(identifier))
|
||||
right: (identifier)
|
||||
body: (compound_statement
|
||||
(expression_statement (binary_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))))
|
||||
(expression_statement
|
||||
(binary_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))))
|
||||
(for_range_loop
|
||||
(type_qualifier)
|
||||
type: (placeholder_type_specifier (auto))
|
||||
declarator: (reference_declarator (identifier))
|
||||
type: (placeholder_type_specifier
|
||||
(auto))
|
||||
declarator: (reference_declarator
|
||||
(identifier))
|
||||
right: (identifier)
|
||||
body: (compound_statement
|
||||
(expression_statement (binary_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))))
|
||||
(expression_statement
|
||||
(binary_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))))
|
||||
(for_range_loop
|
||||
(type_qualifier)
|
||||
type: (placeholder_type_specifier (auto))
|
||||
declarator: (reference_declarator (identifier))
|
||||
right: (initializer_list (number_literal) (number_literal) (number_literal))
|
||||
type: (placeholder_type_specifier
|
||||
(auto))
|
||||
declarator: (reference_declarator
|
||||
(identifier))
|
||||
right: (initializer_list
|
||||
(number_literal)
|
||||
(number_literal)
|
||||
(number_literal))
|
||||
body: (compound_statement
|
||||
(expression_statement (binary_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))))
|
||||
(expression_statement
|
||||
(binary_expression
|
||||
left: (identifier)
|
||||
right: (identifier)))))
|
||||
(for_range_loop
|
||||
initializer: (init_statement
|
||||
(declaration
|
||||
type: (placeholder_type_specifier (auto))
|
||||
type: (placeholder_type_specifier
|
||||
(auto))
|
||||
declarator: (init_declarator
|
||||
declarator: (identifier)
|
||||
value: (call_expression
|
||||
@@ -87,7 +104,8 @@ T main() {
|
||||
argument: (identifier)
|
||||
field: (field_identifier))
|
||||
arguments: (argument_list)))))
|
||||
type: (placeholder_type_specifier (auto))
|
||||
type: (placeholder_type_specifier
|
||||
(auto))
|
||||
declarator: (identifier)
|
||||
right: (identifier)
|
||||
body: (compound_statement
|
||||
@@ -99,7 +117,8 @@ T main() {
|
||||
left: (update_expression
|
||||
argument: (identifier))
|
||||
right: (identifier)))
|
||||
right: (char_literal)))))
|
||||
right: (char_literal
|
||||
(character))))))
|
||||
(for_range_loop
|
||||
initializer: (init_statement
|
||||
(alias_declaration
|
||||
@@ -120,11 +139,12 @@ T main() {
|
||||
left: (update_expression
|
||||
argument: (identifier))
|
||||
right: (identifier)))
|
||||
right: (char_literal))))))))
|
||||
right: (char_literal
|
||||
(character)))))))))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Constexpr if statements
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
T f() {
|
||||
if constexpr (std::is_pointer_v<T>)
|
||||
@@ -133,7 +153,7 @@ T f() {
|
||||
return t;
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
@@ -149,14 +169,18 @@ T f() {
|
||||
name: (template_function
|
||||
name: (identifier)
|
||||
arguments: (template_argument_list
|
||||
(type_descriptor type: (type_identifier))))))
|
||||
(type_descriptor
|
||||
type: (type_identifier))))))
|
||||
consequence: (return_statement
|
||||
(pointer_expression argument: (identifier)))
|
||||
alternative: (return_statement (identifier))))))
|
||||
(pointer_expression
|
||||
argument: (identifier)))
|
||||
alternative: (else_clause
|
||||
(return_statement
|
||||
(identifier)))))))
|
||||
|
||||
=====================================
|
||||
================================================================================
|
||||
If statements with declarations
|
||||
====================================
|
||||
================================================================================
|
||||
|
||||
void f() {
|
||||
if (const int x = foo()) { }
|
||||
@@ -164,7 +188,7 @@ void f() {
|
||||
if (const int x = foo(); x != 0) { }
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
@@ -189,7 +213,10 @@ void f() {
|
||||
(type_qualifier)
|
||||
type: (primitive_type)
|
||||
declarator: (identifier)
|
||||
value: (initializer_list (call_expression function: (identifier) arguments: (argument_list)))))
|
||||
value: (initializer_list
|
||||
(call_expression
|
||||
function: (identifier)
|
||||
arguments: (argument_list)))))
|
||||
consequence: (compound_statement))
|
||||
(if_statement
|
||||
condition: (condition_clause
|
||||
@@ -199,13 +226,17 @@ void f() {
|
||||
type: (primitive_type)
|
||||
declarator: (init_declarator
|
||||
declarator: (identifier)
|
||||
value: (call_expression function: (identifier) arguments: (argument_list)))))
|
||||
value: (binary_expression left: (identifier) right: (number_literal)))
|
||||
value: (call_expression
|
||||
function: (identifier)
|
||||
arguments: (argument_list)))))
|
||||
value: (binary_expression
|
||||
left: (identifier)
|
||||
right: (number_literal)))
|
||||
consequence: (compound_statement)))))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Try/catch statements
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
void main() {
|
||||
try {
|
||||
@@ -219,37 +250,7 @@ void main() {
|
||||
}
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(compound_statement
|
||||
(try_statement
|
||||
(compound_statement
|
||||
(expression_statement (call_expression (identifier) (argument_list))))
|
||||
(catch_clause
|
||||
(parameter_list (parameter_declaration (type_qualifier) (qualified_identifier (namespace_identifier) (type_identifier))))
|
||||
(compound_statement (comment)))
|
||||
(catch_clause
|
||||
(parameter_list (parameter_declaration (type_qualifier) (type_identifier) (reference_declarator (identifier))))
|
||||
(compound_statement (comment)))
|
||||
(catch_clause
|
||||
(parameter_list)
|
||||
(compound_statement (comment)))))))
|
||||
|
||||
===========================================
|
||||
Throw statements
|
||||
===========================================
|
||||
|
||||
void main() {
|
||||
throw e;
|
||||
throw x + 1;
|
||||
throw "exception";
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
@@ -257,78 +258,161 @@ void main() {
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list))
|
||||
(compound_statement
|
||||
(throw_statement (identifier))
|
||||
(throw_statement (binary_expression (identifier) (number_literal)))
|
||||
(throw_statement (string_literal)))))
|
||||
(compound_statement
|
||||
(try_statement
|
||||
(compound_statement
|
||||
(expression_statement
|
||||
(call_expression
|
||||
(identifier)
|
||||
(argument_list))))
|
||||
(catch_clause
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(type_qualifier)
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(type_identifier))))
|
||||
(compound_statement
|
||||
(comment)))
|
||||
(catch_clause
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(type_qualifier)
|
||||
(type_identifier)
|
||||
(reference_declarator
|
||||
(identifier))))
|
||||
(compound_statement
|
||||
(comment)))
|
||||
(catch_clause
|
||||
(parameter_list)
|
||||
(compound_statement
|
||||
(comment)))))))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Throw statements
|
||||
================================================================================
|
||||
|
||||
void main() {
|
||||
throw e;
|
||||
throw x + 1;
|
||||
throw "exception";
|
||||
}
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list))
|
||||
(compound_statement
|
||||
(throw_statement
|
||||
(identifier))
|
||||
(throw_statement
|
||||
(binary_expression
|
||||
(identifier)
|
||||
(number_literal)))
|
||||
(throw_statement
|
||||
(string_literal
|
||||
(string_content))))))
|
||||
|
||||
================================================================================
|
||||
Noexcept specifier
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
void foo() noexcept;
|
||||
void foo() noexcept(true);
|
||||
template<class T> T foo() noexcept(sizeof(T) < 4);
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(declaration
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(noexcept)))
|
||||
(declaration
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(noexcept (true))))
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(noexcept
|
||||
(true))))
|
||||
(template_declaration
|
||||
(template_parameter_list
|
||||
(type_parameter_declaration (type_identifier)))
|
||||
(type_parameter_declaration
|
||||
(type_identifier)))
|
||||
(declaration
|
||||
(type_identifier)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(noexcept
|
||||
(binary_expression (sizeof_expression (parenthesized_expression (identifier))) (number_literal)))))))
|
||||
(binary_expression
|
||||
(sizeof_expression
|
||||
(parenthesized_expression
|
||||
(identifier)))
|
||||
(number_literal)))))))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Throw specifier
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
void foo() throw();
|
||||
void foo() throw(int);
|
||||
void foo() throw(std::string, char *);
|
||||
void foo() throw(float) { }
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(declaration
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(throw_specifier)))
|
||||
(declaration
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(throw_specifier (type_descriptor (primitive_type)))))
|
||||
(primitive_type)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(throw_specifier
|
||||
(type_descriptor
|
||||
(primitive_type)))))
|
||||
(declaration
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(throw_specifier
|
||||
(type_descriptor (qualified_identifier (namespace_identifier) (type_identifier)))
|
||||
(type_descriptor (primitive_type) (abstract_pointer_declarator)))))
|
||||
(type_descriptor
|
||||
(qualified_identifier
|
||||
(namespace_identifier)
|
||||
(type_identifier)))
|
||||
(type_descriptor
|
||||
(primitive_type)
|
||||
(abstract_pointer_declarator)))))
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator (identifier) (parameter_list)
|
||||
(throw_specifier (type_descriptor (primitive_type))))
|
||||
(compound_statement)))
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list)
|
||||
(throw_specifier
|
||||
(type_descriptor
|
||||
(primitive_type))))
|
||||
(compound_statement)))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Assignment
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
a::b::c = 1;
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(expression_statement
|
||||
@@ -340,9 +424,9 @@ a::b::c = 1;
|
||||
(identifier)))
|
||||
(number_literal))))
|
||||
|
||||
=========================================
|
||||
================================================================================
|
||||
Attributes
|
||||
=========================================
|
||||
================================================================================
|
||||
|
||||
void f() {
|
||||
[[a]] switch (b) {
|
||||
@@ -359,37 +443,101 @@ void f() {
|
||||
[[a]] goto label;
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition (primitive_type)
|
||||
(function_declarator (identifier) (parameter_list))
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list))
|
||||
(compound_statement
|
||||
(attributed_statement (attribute_declaration (attribute (identifier)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(switch_statement
|
||||
(condition_clause (identifier))
|
||||
(condition_clause
|
||||
(identifier))
|
||||
(compound_statement
|
||||
(attributed_statement (attribute_declaration (attribute (identifier)))
|
||||
(case_statement (number_literal) (compound_statement))))))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (while_statement (condition_clause (true)) (compound_statement)))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (if_statement (condition_clause (true)) (compound_statement)))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (for_range_loop (placeholder_type_specifier (auto)) (identifier) (identifier) (compound_statement)))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (for_statement (compound_statement)))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (return_statement))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (expression_statement (identifier)))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (expression_statement))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (labeled_statement (statement_identifier) (compound_statement)))
|
||||
(attributed_statement (attribute_declaration (attribute (identifier))) (goto_statement (statement_identifier))))))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(case_statement
|
||||
(number_literal)
|
||||
(compound_statement))))))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(while_statement
|
||||
(condition_clause
|
||||
(true))
|
||||
(compound_statement)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(if_statement
|
||||
(condition_clause
|
||||
(true))
|
||||
(compound_statement)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(for_range_loop
|
||||
(placeholder_type_specifier
|
||||
(auto))
|
||||
(identifier)
|
||||
(identifier)
|
||||
(compound_statement)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(for_statement
|
||||
(compound_statement)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(return_statement))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(expression_statement
|
||||
(identifier)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(expression_statement))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(labeled_statement
|
||||
(statement_identifier)
|
||||
(compound_statement)))
|
||||
(attributed_statement
|
||||
(attribute_declaration
|
||||
(attribute
|
||||
(identifier)))
|
||||
(goto_statement
|
||||
(statement_identifier))))))
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Coroutines
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
co_return 1;
|
||||
co_return;
|
||||
co_yield 1;
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(co_return_statement
|
||||
@@ -398,10 +546,9 @@ co_yield 1;
|
||||
(co_yield_statement
|
||||
(number_literal)))
|
||||
|
||||
|
||||
===========================================
|
||||
================================================================================
|
||||
Switch statements
|
||||
===========================================
|
||||
================================================================================
|
||||
|
||||
void foo(int a) {
|
||||
switch (a) {
|
||||
@@ -419,15 +566,43 @@ void foo(int a) {
|
||||
}
|
||||
}
|
||||
|
||||
---
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
(translation_unit
|
||||
(function_definition (primitive_type)
|
||||
(function_declarator (identifier) (parameter_list (parameter_declaration (primitive_type) (identifier))))
|
||||
(function_definition
|
||||
(primitive_type)
|
||||
(function_declarator
|
||||
(identifier)
|
||||
(parameter_list
|
||||
(parameter_declaration
|
||||
(primitive_type)
|
||||
(identifier))))
|
||||
(compound_statement
|
||||
(switch_statement (condition_clause (identifier))
|
||||
(switch_statement
|
||||
(condition_clause
|
||||
(identifier))
|
||||
(compound_statement
|
||||
(case_statement (number_literal) (for_range_loop (placeholder_type_specifier (auto)) (identifier) (identifier) (compound_statement)))
|
||||
(case_statement (number_literal) (try_statement (compound_statement (comment)) (catch_clause (parameter_list) (compound_statement))) (throw_statement (number_literal)))
|
||||
(case_statement (number_literal) (co_return_statement))
|
||||
(case_statement (co_yield_statement (identifier))))))))
|
||||
(case_statement
|
||||
(number_literal)
|
||||
(for_range_loop
|
||||
(placeholder_type_specifier
|
||||
(auto))
|
||||
(identifier)
|
||||
(identifier)
|
||||
(compound_statement)))
|
||||
(case_statement
|
||||
(number_literal)
|
||||
(try_statement
|
||||
(compound_statement
|
||||
(comment))
|
||||
(catch_clause
|
||||
(parameter_list)
|
||||
(compound_statement)))
|
||||
(throw_statement
|
||||
(number_literal)))
|
||||
(case_statement
|
||||
(number_literal)
|
||||
(co_return_statement))
|
||||
(case_statement
|
||||
(co_yield_statement
|
||||
(identifier))))))))
|
||||
|
||||
Reference in New Issue
Block a user