 		}
 
 		func toAbstract() throws -> AST? {
-			return addOprTerm3?.toAbstract(term3)
+			if addOprTerm3 != nil {
+				return try! addOprTerm3!.toAbstract()
+			} else {
+				return try! term3.toAbstract()
+			}
 		}
 	}
 

		}

		func toAbstract() throws -> AST? {
			return multOprTerm4?.toAbstract(term4)
		}
	}


		}

		func toAbstract() throws -> AST? {
			if dotOprFactor != nil {
				return try! dotOprFactor!.toAbstract()
			} else {
				return try! factor.toAbstract()
			}
		}
	}

