blob: 36c3083c14fabc2b6be087803bfa42011e4a64fe [file] [log] [blame]
Require Import Common.
Inductive named_node_data : Set :=
| Named_Node :
reference (* reference *)
-> named_node_data
with named_node : Set :=
| NN_Library : library -> named_node
| NN_Class : class -> named_node
| NN_Member : member -> named_node
with reference : Set :=
| Reference :
nat
-> reference
with library : Set :=
| Library :
named_node_data
-> list class (* classes *)
-> list procedure (* procedures *)
-> library
with class : Set :=
| Class :
named_node_data
-> string (* name *)
-> list procedure (* procedures *)
-> class
with member_data : Set :=
| Member :
named_node_data
-> name (* name *)
-> member_data
with member : Set :=
| M_Procedure : procedure -> member
with procedure : Set :=
| Procedure :
member_data
-> named_node_data
-> function_node (* function *)
-> procedure
with function_node : Set :=
| Function_Node :
variable_declaration (* positionalParameters *)
-> dart_type (* returnType *)
-> statement (* body *)
-> function_node
with expression : Set :=
| E_Variable_Get : variable_get -> expression
| E_Property_Get : property_get -> expression
| E_Invocation_Expression : invocation_expression -> expression
with variable_get : Set :=
| Variable_Get :
nat (* variable *)
-> variable_get
with property_get : Set :=
| Property_Get :
expression (* receiver *)
-> name (* name *)
-> property_get
with arguments : Set :=
| Arguments :
expression (* positional *)
-> arguments
with invocation_expression : Set :=
| IE_Method_Invocation : method_invocation -> invocation_expression
| IE_Constructor_Invocation : constructor_invocation -> invocation_expression
with method_invocation : Set :=
| Method_Invocation :
expression (* receiver *)
-> name (* name *)
-> arguments (* arguments *)
-> nat (* interfaceTargetReference *)
-> method_invocation
with constructor_invocation : Set :=
| Constructor_Invocation :
nat (* targetReference *)
-> constructor_invocation
with statement : Set :=
| S_Expression_Statement : expression_statement -> statement
| S_Block : block -> statement
| S_Return_Statement : return_statement -> statement
| S_Variable_Declaration : variable_declaration -> statement
with expression_statement : Set :=
| Expression_Statement :
expression (* expression *)
-> expression_statement
with block : Set :=
| Block :
list statement (* statements *)
-> block
with return_statement : Set :=
| Return_Statement :
expression (* expression *)
-> return_statement
with variable_declaration : Set :=
| Variable_Declaration :
nat
-> dart_type (* type *)
-> option expression (* initializer *)
-> variable_declaration
with name : Set :=
| Name :
string (* name *)
-> name
with dart_type : Set :=
| DT_Interface_Type : interface_type -> dart_type
| DT_Function_Type : function_type -> dart_type
with interface_type : Set :=
| Interface_Type :
nat (* className *)
-> interface_type
with function_type : Set :=
| Function_Type :
dart_type (* positionalParameters *)
-> dart_type (* returnType *)
-> function_type
.