private void declareVariable(VariableDeclNode node)
            throws IRException {

        try {
            NamedVariable variable = new NamedVariable(
                    node.name,
                    node.realType()
            );
            scopes.addVariable(variable);

            varTable.add(variable);

            if(node.value != null) {
                Operand value = generate(node.value);

                code.addStatement(
                    new AssignmentStatement(
                        new NamedVariableOperand(
                            varTable,
                            varTable.get(variable.name)
                        ),
                        value
                    )
                );
            }
        } catch(IRException ex) {
            throw ex;
        } catch(Exception ex) {
            throw (NonGenerationException)new NonGenerationException(ex)
                    .Log("ru.bmstu.iu9.compiler.ir");
        }
    }