             return (expressionType, valueSide)
         }
         
+        override func code(loc: Int) throws -> Int {
+            var loc1 = try! expression.code(loc)
+            loc1 = try! term.code(loc1)
+            switch(opr){
+            case .DotOperator():
+                loc1++
+            case .AddOperator(.PLUS):
+                AST.codeArray[loc1++] = buildCommand(.AddInt)
+            case .AddOperator(.MINUS):
+                AST.codeArray[loc1++] = buildCommand(.SubInt)
+            case .MultOperator(.TIMES):
+                AST.codeArray[loc1++] = buildCommand(.MultInt)
+            case .MultOperator(.DIV_E):
+                AST.codeArray[loc1++] = buildCommand(.DivTruncInt)
+            case .MultOperator(.MOD_E):
+                AST.codeArray[loc1++] = buildCommand(.ModTruncInt)
+            case .RelOperator(.EQ):
+                AST.codeArray[loc1++] = buildCommand(.EqInt)
+            case .RelOperator(.NE):
+                AST.codeArray[loc1++] = buildCommand(.NeInt)
+            case .RelOperator(.GT):
+                AST.codeArray[loc1++] = buildCommand(.GtInt)
+            case .RelOperator(.LT):
+                AST.codeArray[loc1++] = buildCommand(.LtInt)
+            case .RelOperator(.GE):
+                AST.codeArray[loc1++] = buildCommand(.GeInt)
+            case .RelOperator(.LE):
+                AST.codeArray[loc1++] = buildCommand(.LeInt)
+            case _:
+                throw CodeGenerationError.RuntimeException
+            }
+            return loc1
+        }
+        
     }
 
 	class ExpressionList: AST {

            AST.scope = nil
            return -1
        }
	}

	class DeclarationProcedure: Declaration {

        }
        
        override func code(loc: Int) throws -> Int {
            throw ImplementationError.ToBeImplement
        }
	}

