F diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txtsrc/semantics/value/type.csrc/semantics/value/evaluation.csrc/semantics/value/constant.c+ src/semantics/value/constraints.csrc/semantics/value/value.csrc/semantics/identifiers/denoted.csrc/semantics/identifiers/scope.cF diff --git a/src/semantics/.ast.c.swp b/src/semantics/.ast.c.swp new file mode 100644B Binary files /dev/null and b/src/semantics/.ast.c.swp differF diff --git a/src/semantics/ast.h b/src/semantics/ast.h --- a/src/semantics/ast.h +++ b/src/semantics/ast.h#include <denoted.h>#include <linkage.h>#include <value.h>+ #include <constraints.h>struct AST_Binary_Expression* get_equality_expression_tree(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);struct AST_Binary_Expression* get_logical_expression_tree(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);- struct AST_Binary_Expression* get_simple_assignment_expression_tree(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ struct AST_Binary_Expression* get_simple_assignment_expression_tree(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data);struct AST_Binary_Expression* get_compound_assignment_expression_tree(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);- struct AST_Binary_Expression* get_comma_expression_tree(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ struct AST_Binary_Expression* get_comma_expression_tree(struct AST_Expression *left,struct AST_Expression *rightstruct Translation_Data *translation_data);struct AST_Binary_Expression* get_struct_union_member_tree(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data);struct AST_Binary_Expression* get_struct_union_member_trough_ptr_tree(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data);- struct AST_Conditional_Expression* get_conditional_expression_tree(struct AST_Expression *left,struct AST_Expression *center,struct AST_Expression *right);- struct AST_Function_Expression* get_function_expression_tree(struct AST_Expression *id,struct Scope *scope);+ struct AST_Conditional_Expression* get_conditional_expression_tree(struct AST_Expression *left,struct AST_Expression *center,struct AST_Expression *right,struct Translation_Data *translation_data);+ struct AST_Function_Expression* get_function_expression_tree(struct AST_Expression *id,struct Scope *scope,struct Translation_Data *translation_data);struct AST_Unary_Expression* get_unary_expression_tree(struct AST_Expression *operand,struct Expression_Value *value,enum AST_Type type);struct AST_Unary_Expression* get_indirection_expression_tree(struct AST_Expression *operand,struct Translation_Data *translation_data);- struct AST_Unary_Expression* get_address_expression_tree(struct AST_Expression *operand);+ struct AST_Unary_Expression* get_address_expression_tree(struct AST_Expression *operand,struct Translation_Data *translation_data);struct AST_Unary_Expression* get_sizeof_by_type_tree(struct Type *type);struct AST_Unary_Expression* get_unary_arithmetic_tree(struct AST_Expression *operand,enum AST_Type operation,struct Translation_Data *translation_data);struct AST_Unary_Expression* get_postfix_inc_dec_tree(struct AST_Expression *operand,enum AST_Type operation,struct Translation_Data *translation_data);void delete_ast_translation_unit(struct AST_Translation_Unit *translation_unit);--------#endifF diff --git a/src/semantics/value/.constraints.hh.swp b/src/semantics/value/.constraints.hh.swp new file mode 100644B Binary files /dev/null and b/src/semantics/value/.constraints.hh.swp differF diff --git a/src/semantics/value/constraints.c b/src/semantics/value/constraints.c new file mode 100644 --- /dev/null +++ b/src/semantics/value/constraints.c+ #ifndef WONKY_CONSTRAINTS_C+ #define WONKY_CONSTRAINTS_C WONKY_CONSTRAINTS_C++++ #endifF diff --git a/src/semantics/value/constraints.h b/src/semantics/value/constraints.h new file mode 100644 --- /dev/null +++ b/src/semantics/value/constraints.h+ #ifndef WONKY_CONSTRAINTS_H+ #define WONKY_CONSTRAINTS_H WONKY_CONSTRAINTS_H+ #include <constraints.hh>+ #include <ast.h>++ char constraint_check_modulo_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data);+ char constraint_check_multiplicative_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_additive_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_shift_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_bitwise_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_equality_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_logical_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_simple_assignment_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data);+ char constraint_check_compound_expression(struct AST_Expression *left,struct AST_Expression *right,struct AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_comma_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data);+ char constraint_check_array_subscript_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data);+ char constraint_check_struct_union_member_expression(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data);+ char constraint_check_struct_union_member_trough_ptr_expression(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data);+ char constraint_check_conditional_expression(struct AST_Expression *left,struct AST_Expression *center,struct AST_Expression *right,struct Translation_Data *translation_data);+ ;+ char constraint_check_function_expression(struct AST_Expression *id,struct Scope *scope,struct Translation_Data *translation_data);+ char constraint_check_indirection_expression(struct AST_Expression *operand,struct Translation_Data *translation_data);+ char constraint_check_address_expression(struct AST_Expression *operand,struct Translation_Data *translation_data);+ char constraint_check_sizeof_by_type(struct Type *type);+ char constraint_check_unary_arithmetic_expression(struct AST_Expression *operand,enum AST_Type operation,struct Translation_Data *translation_data);+ char constraint_check_postfix_inc_dec_tree(struct AST_Expression *operand,enum AST_Type operation,struct Translation_Data *translation_data);+++ #endifF diff --git a/src/semantics/value/constraints.hh b/src/semantics/value/constraints.hh new file mode 100644 --- /dev/null +++ b/src/semantics/value/constraints.hh+ #ifndef WONKY_CONSTRAINTS_HH+ #define WONKY_CONSTRAINTS_HH WONKY_CONSTRAINTS_HH+++ char constraint_check_modulo_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_multiplicative_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_additive_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_shift_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_bitwise_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_equality_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_logical_expression(struct AST_Expression *left,struct AST_Expression *right,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_simple_assignment_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_compound_expression(struct AST_Expression *left,struct AST_Expression *right,struct AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_comma_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_array_subscript_expression(struct AST_Expression *left,struct AST_Expression *right,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_struct_union_member_expression(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_struct_union_member_trough_ptr_expression(struct AST_Expression *left,struct token *id,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_conditional_expression(struct AST_Expression *left,struct AST_Expression *center,struct AST_Expression *right,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_function_expression(struct AST_Expression *id,struct Scope *scope,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_indirection_expression(struct AST_Expression *operand,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_address_expression(struct AST_Expression *operand,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_sizeof_by_type(struct Type *type)+ {++ }+ char constraint_check_unary_arithmetic_expression(struct AST_Expression *operand,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }+ char constraint_check_postfix_inc_dec_tree(struct AST_Expression *operand,enum AST_Type operation,struct Translation_Data *translation_data)+ {++ }++ #endif