private CFGResult ifStatement(Block lastBlock) throws IOException, SyntaxFormatException {
		if (checkCurrentType(TokenType.IF)) {
			moveToNextToken();
			ArithmeticResult cond = relation(lastBlock);
			if (cond == null) {
				throwFormatException("if statement relation expression expected");
			}
			assertAndMoveNext(TokenType.THEN);
			Block thenBlock = new Block(lastBlock.getLocalVarTable(), lastBlock.getGlobalVarTable());
			CFGResult thenResult = statSequence(thenBlock);
			if (thenResult == null) {
				throwFormatException("if statement statSequence expected");
			}
			CFGResult elseResult = null;
			if (checkCurrentType(TokenType.ELSE)) {
				moveToNextToken();
				Block elseBlock = new Block(lastBlock.getLocalVarTable(),
						lastBlock.getGlobalVarTable());
				elseResult = statSequence(elseBlock);
				if (elseResult == null) {
					throwFormatException("if statement else statSequence expected");
				}
			}
			assertAndMoveNext(TokenType.FI);
			return inter.computeIf(lastBlock, cond, thenResult, elseResult);
		}

		return null;
	}