mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 00:22:51 -06:00
complete pgf_expr_eq in the C runtime
This commit is contained in:
@@ -799,10 +799,11 @@ pgf_expr_eq(PgfExpr e1, PgfExpr e2)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch (ei1.tag) {
|
switch (ei1.tag) {
|
||||||
case PGF_EXPR_FUN: {
|
case PGF_EXPR_ABS: {
|
||||||
PgfExprFun* fun1 = ei1.data;
|
PgfExprAbs* abs1 = ei1.data;
|
||||||
PgfExprFun* fun2 = ei2.data;
|
PgfExprAbs* abs2 = ei2.data;
|
||||||
return gu_string_eq(fun1->fun, fun2->fun);
|
return gu_string_eq(abs1->id, abs2->id) &&
|
||||||
|
pgf_expr_eq(abs1->body, abs2->body);
|
||||||
}
|
}
|
||||||
case PGF_EXPR_APP: {
|
case PGF_EXPR_APP: {
|
||||||
PgfExprApp* app1 = ei1.data;
|
PgfExprApp* app1 = ei1.data;
|
||||||
@@ -815,14 +816,32 @@ pgf_expr_eq(PgfExpr e1, PgfExpr e2)
|
|||||||
PgfExprLit* lit2 = ei2.data;
|
PgfExprLit* lit2 = ei2.data;
|
||||||
return (pgf_literal_eq(lit1->lit,lit2->lit));
|
return (pgf_literal_eq(lit1->lit,lit2->lit));
|
||||||
}
|
}
|
||||||
case PGF_EXPR_META:
|
case PGF_EXPR_META: {
|
||||||
return true;
|
PgfExprMeta* meta1 = ei1.data;
|
||||||
case PGF_EXPR_ABS:
|
PgfExprMeta* meta2 = ei2.data;
|
||||||
case PGF_EXPR_VAR:
|
return (meta1->id == meta2->id);
|
||||||
case PGF_EXPR_TYPED:
|
}
|
||||||
case PGF_EXPR_IMPL_ARG:
|
case PGF_EXPR_FUN: {
|
||||||
gu_impossible();
|
PgfExprFun* fun1 = ei1.data;
|
||||||
break;
|
PgfExprFun* fun2 = ei2.data;
|
||||||
|
return gu_string_eq(fun1->fun, fun2->fun);
|
||||||
|
}
|
||||||
|
case PGF_EXPR_VAR: {
|
||||||
|
PgfExprVar* var1 = ei1.data;
|
||||||
|
PgfExprVar* var2 = ei2.data;
|
||||||
|
return (var1->var == var2->var);
|
||||||
|
}
|
||||||
|
case PGF_EXPR_TYPED: {
|
||||||
|
PgfExprTyped* typed1 = ei1.data;
|
||||||
|
PgfExprTyped* typed2 = ei2.data;
|
||||||
|
return pgf_expr_eq(typed1->expr, typed2->expr) &&
|
||||||
|
pgf_type_eq(typed1->type, typed2->type);
|
||||||
|
}
|
||||||
|
case PGF_EXPR_IMPL_ARG: {
|
||||||
|
PgfExprImplArg* impl1 = ei1.data;
|
||||||
|
PgfExprImplArg* impl2 = ei2.data;
|
||||||
|
return pgf_expr_eq(impl1->expr, impl2->expr);
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
gu_impossible();
|
gu_impossible();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user