private AST comparisonExpression()
{
#if WRITE_DEBUG_INFO
Console.WriteLine("comparison expression");
#endif
AST lhs = plusOrMinusExpression();
if ( lookAhead(1).getTokenString() == "<" ||
lookAhead(1).getTokenString() == ">" ||
lookAhead(1).getTokenString() == "<=" ||
lookAhead(1).getTokenString() == ">=" ||
lookAhead(1).getTokenString() == "!=" ||
lookAhead(1).getTokenString() == "=="
)
{
Token operatorToken = match(Token.TokenType.OPERATOR);
AST rhs = plusOrMinusExpression();
checkLeftHandSide(lhs, operatorToken);
checkRightHandSide(rhs, operatorToken);
AST comparisonExpressionTree = new AST(operatorToken);
comparisonExpressionTree.addChild(lhs);
comparisonExpressionTree.addChild(rhs);
return comparisonExpressionTree;
} else {
return lhs;
}
}