int PP_Expression::logical_AND_expression() { int value = inclusive_OR_expression(); if (test(PP_ANDAND)) return logical_AND_expression() && value; return value; }
int PP_Expression::logical_OR_expression() { int value = logical_AND_expression(); if (test(PP_OROR)) return logical_OR_expression() || value; return value; }
Expression *ExpressionBuilder::logical_AND_expression() { Expression *value = inclusive_OR_expression(); if (test(Token_and)) return createBinaryExpression(Expression::AndOp, value, logical_AND_expression()); return value; }
Expression *ExpressionBuilder::logical_OR_expression() { Expression *value = logical_AND_expression(); if (test(Token_or)) return createBinaryExpression(Expression::OrOp, value, logical_OR_expression()); return value; }
/* FIRST(logical OR expression’)={.OR.,e} <logical OR expression’> -> .OR. <logical AND expression> <logical OR expression’> | e Author: Kwok Hong Kelvin Chan */ void logical_OR_expression_p(void){ switch(lookahead_token.code){ case LOG_OP_T: switch (lookahead_token.attribute.log_op){ case OR: match(LOG_OP_T, OR); logical_AND_expression(); logical_OR_expression_p(); gen_incode("Logical OR expression parsed"); break; } } }
/* FIRST(logical OR expression)={AVID_T, FPL_T,INL_T,SVID_T, STR_T} <logical OR expression> -> <logical AND expression> <logical OR expression’> Author: Kyle Hinskens */ void logical_OR_expression(void){ logical_AND_expression(); logical_OR_expression_p(); }