public int parseAtom() throws IOException {
        Element localRoot = IRT.createElement(String.valueOf(Tags.ATOM));
        curRootElement.appendChild(localRoot);
        curRootElement = localRoot;

        int result;
        if (curToken.type == Lexer.Type.NUMBER) {
            result = Integer.parseInt(curToken.c);
            curToken = lexer.getToken();
            localRoot.setAttribute("value", String.valueOf(result));
            return result;
        } else if (curToken.type == Lexer.Type.LEFT_PARENTHESIS) {
            curToken = lexer.getToken();
            result = parseExpression();
            if (curToken.type == Lexer.Type.RIGHT_PARENTHESIS) {
                curToken = lexer.getToken();
                return result;
            } else {
                throw new IOException("нет закрывающей скобки " + curToken.row + ":" + curToken.column);
            }
        }
        throw new IOException("не число " + curToken.row + ":" + curToken.column);
    }