X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=nesc.git;a=blobdiff_plain;f=src%2FAST_types.h;fp=src%2FAST_types.h;h=030b51afb3cb5c9111ea8eace5cc089a46e859f3;hp=6e0c7c0d407f9f9c7eaa6527815bf1abf99e8f13;hb=afe799e7802f38d1f55e1bd2044451ba164743b1;hpb=38be457fa32d3ab0721ec1fc9e5086b745e17468 diff --git a/src/AST_types.h b/src/AST_types.h index 6e0c7c0..030b51a 100644 --- a/src/AST_types.h +++ b/src/AST_types.h @@ -158,9 +158,10 @@ typedef struct AST_connection *rp_connection; typedef struct AST_connection *eq_connection; typedef struct AST_struct_ref *nx_struct_ref; typedef struct AST_union_ref *nx_union_ref; +typedef struct AST_gcc_attribute *target_attribute; typedef enum { kind_node = 42, - postkind_node = 198, + postkind_node = 199, kind_declaration = 43, postkind_declaration = 64, kind_statement = 65, @@ -168,11 +169,11 @@ typedef enum { kind_expression = 84, postkind_expression = 156, kind_type_element = 157, - postkind_type_element = 173, - kind_declarator = 174, - postkind_declarator = 182, - kind_label = 183, - postkind_label = 186, + postkind_type_element = 174, + kind_declarator = 175, + postkind_declarator = 183, + kind_label = 184, + postkind_label = 187, kind_asm_decl = 44, postkind_asm_decl = 44, kind_data_decl = 45, @@ -193,8 +194,8 @@ typedef enum { postkind_variable_decl = 52, kind_field_decl = 53, postkind_field_decl = 53, - kind_asttype = 187, - postkind_asttype = 187, + kind_asttype = 188, + postkind_asttype = 188, kind_typename = 158, postkind_typename = 159, kind_typeof_expr = 160, @@ -202,31 +203,31 @@ typedef enum { kind_typeof_type = 161, postkind_typeof_type = 161, kind_attribute = 162, - postkind_attribute = 164, + postkind_attribute = 165, kind_gcc_attribute = 163, - postkind_gcc_attribute = 163, - kind_rid = 165, - postkind_rid = 165, - kind_qualifier = 166, - postkind_qualifier = 166, - kind_tag_ref = 167, - postkind_tag_ref = 173, - kind_struct_ref = 168, - postkind_struct_ref = 169, - kind_union_ref = 170, - postkind_union_ref = 171, - kind_nested_declarator = 175, - postkind_nested_declarator = 180, - kind_function_declarator = 176, - postkind_function_declarator = 176, - kind_pointer_declarator = 177, - postkind_pointer_declarator = 177, - kind_qualified_declarator = 178, - postkind_qualified_declarator = 178, - kind_array_declarator = 179, - postkind_array_declarator = 179, - kind_identifier_declarator = 181, - postkind_identifier_declarator = 181, + postkind_gcc_attribute = 164, + kind_rid = 166, + postkind_rid = 166, + kind_qualifier = 167, + postkind_qualifier = 167, + kind_tag_ref = 168, + postkind_tag_ref = 174, + kind_struct_ref = 169, + postkind_struct_ref = 170, + kind_union_ref = 171, + postkind_union_ref = 172, + kind_nested_declarator = 176, + postkind_nested_declarator = 181, + kind_function_declarator = 177, + postkind_function_declarator = 177, + kind_pointer_declarator = 178, + postkind_pointer_declarator = 178, + kind_qualified_declarator = 179, + postkind_qualified_declarator = 179, + kind_array_declarator = 180, + postkind_array_declarator = 180, + kind_identifier_declarator = 182, + postkind_identifier_declarator = 182, kind_asm_stmt = 66, postkind_asm_stmt = 66, kind_compound_stmt = 67, @@ -291,42 +292,42 @@ typedef enum { postkind_init_list = 149, kind_init_specific = 150, postkind_init_specific = 150, - kind_designator = 188, - postkind_designator = 190, - kind_designate_field = 189, - postkind_designate_field = 189, - kind_designate_index = 190, - postkind_designate_index = 190, + kind_designator = 189, + postkind_designator = 191, + kind_designate_field = 190, + postkind_designate_field = 190, + kind_designate_index = 191, + postkind_designate_index = 191, kind_lexical_cst = 151, postkind_lexical_cst = 152, kind_string_cst = 152, postkind_string_cst = 152, kind_string = 153, postkind_string = 153, - kind_id_label = 184, - postkind_id_label = 184, - kind_case_label = 185, - postkind_case_label = 185, - kind_default_label = 186, - postkind_default_label = 186, - kind_word = 191, - postkind_word = 191, - kind_asm_operand = 192, - postkind_asm_operand = 192, + kind_id_label = 185, + postkind_id_label = 185, + kind_case_label = 186, + postkind_case_label = 186, + kind_default_label = 187, + postkind_default_label = 187, + kind_word = 192, + postkind_word = 192, + kind_asm_operand = 193, + postkind_asm_operand = 193, kind_nesc_decl = 54, postkind_nesc_decl = 56, kind_interface = 55, postkind_interface = 55, kind_component = 56, postkind_component = 56, - kind_implementation = 193, - postkind_implementation = 196, - kind_configuration = 194, - postkind_configuration = 194, - kind_module = 195, - postkind_module = 195, - kind_binary_component = 196, - postkind_binary_component = 196, + kind_implementation = 194, + postkind_implementation = 197, + kind_configuration = 195, + postkind_configuration = 195, + kind_module = 196, + postkind_module = 196, + kind_binary_component = 197, + postkind_binary_component = 197, kind_rp_interface = 57, postkind_rp_interface = 57, kind_interface_ref = 58, @@ -335,16 +336,16 @@ typedef enum { postkind_component_ref = 59, kind_connection = 60, postkind_connection = 62, - kind_endpoint = 197, - postkind_endpoint = 197, - kind_parameterised_identifier = 198, - postkind_parameterised_identifier = 198, - kind_generic_declarator = 182, - postkind_generic_declarator = 182, + kind_endpoint = 198, + postkind_endpoint = 198, + kind_parameterised_identifier = 199, + postkind_parameterised_identifier = 199, + kind_generic_declarator = 183, + postkind_generic_declarator = 183, kind_generic_call = 154, postkind_generic_call = 154, - kind_interface_ref_declarator = 180, - postkind_interface_ref_declarator = 180, + kind_interface_ref_declarator = 181, + postkind_interface_ref_declarator = 181, kind_interface_deref = 93, postkind_interface_deref = 93, kind_component_deref = 94, @@ -353,18 +354,18 @@ typedef enum { postkind_component_typeref = 159, kind_atomic_stmt = 82, postkind_atomic_stmt = 82, - kind_nesc_attribute = 164, - postkind_nesc_attribute = 164, + kind_nesc_attribute = 165, + postkind_nesc_attribute = 165, kind_type_parm_decl = 63, postkind_type_parm_decl = 63, kind_type_argument = 155, postkind_type_argument = 155, kind_error_decl = 64, postkind_error_decl = 64, - kind_attribute_ref = 172, - postkind_attribute_ref = 172, - kind_enum_ref = 173, - postkind_enum_ref = 173, + kind_attribute_ref = 173, + postkind_attribute_ref = 173, + kind_enum_ref = 174, + postkind_enum_ref = 174, kind_error_stmt = 83, postkind_error_stmt = 83, kind_while_stmt = 73, @@ -469,10 +470,12 @@ typedef enum { postkind_rp_connection = 61, kind_eq_connection = 62, postkind_eq_connection = 62, - kind_nx_struct_ref = 169, - postkind_nx_struct_ref = 169, - kind_nx_union_ref = 171, - postkind_nx_union_ref = 171 + kind_nx_struct_ref = 170, + postkind_nx_struct_ref = 170, + kind_nx_union_ref = 172, + postkind_nx_union_ref = 172, + kind_target_attribute = 164, + postkind_target_attribute = 164 } AST_kind; extern AST_kind AST_parent_kind[]; /* indexed by kind - kind_node */ @@ -639,6 +642,7 @@ extern type_t AST_typeof[]; /* indexed by kind - kind_node */ #define is_eq_connection(x) ((x)->kind >= kind_eq_connection && (x)->kind <= postkind_eq_connection) #define is_nx_struct_ref(x) ((x)->kind >= kind_nx_struct_ref && (x)->kind <= postkind_nx_struct_ref) #define is_nx_union_ref(x) ((x)->kind >= kind_nx_union_ref && (x)->kind <= postkind_nx_union_ref) +#define is_target_attribute(x) ((x)->kind >= kind_target_attribute && (x)->kind <= postkind_target_attribute) typedef struct { AST_kind kind;