 	
 	fileprivate func parseDoStatement() throws -> ASTNode {
 		
-		let doToken = popCurrentToken()
-
-		guard case .do = doToken.type else {
-			throw error(.unexpectedToken)
-		}
-		
+		let doToken = try popCurrentToken(andExpect: .do)
+
 		let amount = try parseExpression()
 		
-		guard case .times = popCurrentToken().type else {
-			throw error(.unexpectedToken)
-		}
+		try popCurrentToken(andExpect: .times)
 		
 		let body = try parseBodyWithCurlies()
 		


		let body = try parseBodyWithCurlies()

		let whileToken = popCurrentToken()
		
		guard case .while = whileToken.type else {
			throw error(.unexpectedToken)
		}
		
		let condition = try parseExpression()
		

	
	fileprivate func parseContinue() throws -> ASTNode {

		try popCurrentToken(andExpect: .continue)

		return ContinueNode()
	}
	
	fileprivate func parseIfStatement() throws -> ASTNode {
		
		try popCurrentToken(andExpect: .if)
		
		let condition = try parseExpression()
		
