void Comparison(out Expression exp)
{
Expression second;
BitOr(out exp);
if (StartOf(3)) {
switch (la.kind) {
case 29: {
Get();
break;
}
case 30: {
Get();
break;
}
case 31: {
Get();
break;
}
case 32: {
Get();
break;
}
case 33: {
Get();
break;
}
case 34: {
Get();
break;
}
}
Token tok = t;
Comparison(out second);
if (!ExpectInt(exp, tok, false)) { return; };
if (!ExpectInt(second, tok, true)) { return; };
if (tok.val == "<") {
exp = new LessThan((TypedExpression<int>)exp, (TypedExpression<int>)second);
} else if (tok.val == ">") {
exp = new GreaterThan((TypedExpression<int>)exp, (TypedExpression<int>)second);
} else if (tok.val == "<=") {
exp = new LessThanOrEqual((TypedExpression<int>)exp, (TypedExpression<int>)second);
} else if (tok.val == ">=") {
exp = new GreaterThanOrEqual((TypedExpression<int>)exp, (TypedExpression<int>)second);
} else if (tok.val == "==") {
exp = new Equal((TypedExpression<int>)exp, (TypedExpression<int>)second);
} else if (tok.val == "!=") {
exp = new NotEqual((TypedExpression<int>)exp, (TypedExpression<int>)second);
}
}
}