 	
 	fileprivate func parseContinue() throws -> ASTNode {
 
-		guard case .continue = popCurrentToken().type else {
-			throw error(.unexpectedToken)
-		}
-		
+		try popCurrentToken(andExpect: .continue)
+
 		return ContinueNode()
 	}
 	
 	fileprivate func parseIfStatement() throws -> ASTNode {
 		
-		guard case .if = popCurrentToken().type else {
-			throw error(.unexpectedToken)
-		}
+		try popCurrentToken(andExpect: .if)
 		
 		let condition = try parseExpression()
 		


		let body = try parseBodyWithCurlies()

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

	
	fileprivate func parseDoStatement() throws -> ASTNode {
		
		let doToken = try popCurrentToken(andExpect: .do)

		let amount = try parseExpression()
		
		try popCurrentToken(andExpect: .times)
		
		let body = try parseBodyWithCurlies()
		
