return(loe);
}
+void logical_or_expression_free(struct logical_or_expression *expr)
+{
+ if(expr->lorexpr) {
+ free(expr->lorexpr);
+ expr->lorexpr = NULL;
+ }
+
+ if(expr->landexpr) {
+ free(expr->landexpr);
+ expr->landexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct logical_and_expression *logical_and_expression_new(void)
{
struct logical_and_expression *lae;
return(lae);
}
+void logical_and_expression_free(struct logical_and_expression *expr)
+{
+ if(expr->landexpr) {
+ free(expr->landexpr);
+ expr->landexpr = NULL;
+ }
+
+ if(expr->iorexpr) {
+ free(expr->iorexpr);
+ expr->iorexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct inclusive_or_expression *inclusive_or_expression_new(void)
{
struct inclusive_or_expression *ioe;
return(ioe);
}
+void inclusive_or_expression_free(struct inclusive_or_expression *expr)
+{
+ if(expr->iorexpr) {
+ free(expr->iorexpr);
+ expr->iorexpr = NULL;
+ }
+
+ if(expr->xorexpr) {
+ free(expr->xorexpr);
+ expr->xorexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct exclusive_or_expression *exclusive_or_expression_new(void)
{
struct exclusive_or_expression *eoe;
return(eoe);
}
+void exclusive_or_expression_free(struct exclusive_or_expression *expr)
+{
+ if(expr->xorexpr) {
+ free(expr->xorexpr);
+ expr->xorexpr = NULL;
+ }
+
+ if(expr->andexpr) {
+ free(expr->andexpr);
+ expr->andexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct and_expression *and_expression_new(void)
{
struct and_expression *ae;
return(ae);
}
+void and_expression_free(struct and_expression *expr)
+{
+ if(expr->andexpr) {
+ free(expr->andexpr);
+ expr->andexpr = NULL;
+ }
+
+ if(expr->eqexpr){
+ free(expr->eqexpr);
+ expr->eqexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct equality_expression *equality_expression_new(void)
{
struct equality_expression *ee;
return(ee);
}
+void equality_expression_free(struct equality_expression *expr)
+{
+ if(expr->eqexpr) {
+ free(expr->eqexpr);
+ expr->eqexpr = NULL;
+ }
+
+ if(expr->relexpr) {
+ free(expr->relexpr);
+ expr->relexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct relational_expression *relational_expression_new(void)
{
struct relational_expression *re;
return(re);
}
+void relational_expression_free(struct relational_expression *expr)
+{
+ if(expr->relexpr) {
+ free(expr->relexpr);
+ expr->relexpr = NULL;
+ }
+
+ if(expr->sexpr) {
+ free(expr->sexpr);
+ expr->sexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct shift_expression *shift_expression_new(void)
{
struct shift_expression *se;
return(se);
}
+void shift_expression_free(struct shift_expression *expr)
+{
+ if(expr->sexpr) {
+ free(expr->sexpr);
+ expr->sexpr = NULL;
+ }
+
+ if(expr->addexpr) {
+ free(expr->addexpr);
+ expr->addexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct additive_expression *additive_expression_new(void)
{
struct additive_expression *ae;
return(ae);
}
+void additive_expression_free(struct additive_expression *expr)
+{
+ if(expr->addexpr) {
+ free(expr->addexpr);
+ expr->addexpr = NULL;
+ }
+
+ if(expr->mulexpr) {
+ free(expr->mulexpr);
+ expr->mulexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct multiplicative_expression *multiplicative_expression_new(void)
{
struct multiplicative_expression *me;
return(me);
}
+void multiplicative_expression_free(struct multiplicative_expression *expr)
+{
+ if(expr->mulexpr) {
+ free(expr->mulexpr);
+ expr->mulexpr = NULL;
+ }
+
+ if(expr->castexpr) {
+ free(expr->castexpr);
+ expr->castexpr = NULL;
+ }
+
+ free(expr);
+ return;
+}
+
struct cast_expression *cast_expression_new(void)
{
struct cast_expression *ce;
return(ce);
}
+void cast_expression_free(struct cast_expression *expr)
+{
+ switch(expr->type) {
+ case CAST_EXPR_UNARY:
+ if(expr->data.uexpr) {
+ free(expr->data.uexpr);
+ }
+ break;
+
+ case CAST_EXPR_CAST:
+ if(expr->data.cast.typename) {
+ free(expr->data.cast.typename);
+ }
+
+ if(expr->data.cast.castexpr) {
+ free(expr->data.cast.castexpr);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ free(expr);
+ return;
+}
+
struct unary_expression *unary_expression_new(void)
{
struct unary_expression *ue;
struct unary_expression *unary_expression_new(void);
struct type_name *type_name_new(void);
+void logical_or_expression_free(struct logical_or_expression*);
+void logical_and_expression_free(struct logical_and_expression*);
+void inclusive_or_expression_free(struct inclusive_or_expression*);
+void exclusive_or_expression_free(struct exclusive_or_expression*);
+void and_expression_free(struct and_expression*);
+void equality_expression_free(struct equality_expression*);
+void relational_expression_free(struct relational_expression*);
+void shift_expression_free(struct shift_expression*);
+void additive_expression_free(struct additive_expression*);
+void multiplicative_expression_free(struct multiplicative_expression*);
+void cast_expression_free(struct cast_expression*);
+
#endif /* GRAMMAR_H */